转载

在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

VoltDB 满足了对高速数据库和实时分析的需要

数据虚拟化、数据库、数据仓库、数据集市和多维数据集、商业智能 (BI),以及可视化解决方案都是采集和整合大型和快速的数据的关键。

对于从这些大型数据堆中推断出可操作的洞察,首创的平台和基础架构是必不可少。图 1 显示了对不同种类数据库的需求,包括对高速数据库管理系统不断加强的主张。

图 1. 大数据管理基础架构

在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

高速数据库管理系统必须能够:

  • 以非常高的速度摄入数据
  • 熟练地扩展来满足增长峰值和需求峰值
  • 支持集成的容错能力
  • 支持广泛的实时分析
  • 与高容量分析数据来源轻松集成

VoltDB 是一种高性能、可扩展的关系数据库管理系统 (RDBMS),适用于大数据、高速 OLTP 和实时分析。VoltDB 被宣称为惟一的开源内存型 NewSQL 数据库,它非常快速,而且能够在现代的横向扩展计算基础架构上运行。不同于以前的 RDBMS 产品和 NoSQL 数据存储,VoltDB 支持高速应用程序,无需复杂的、高成本的分片 (shard) 层。此外,VoltDB 不会牺牲事务数据完整性 (ACID) 来换取性能和规模。VoltDB 提供了:

  • 高达每秒数百万次操作的数据库吞吐量
  • 按需扩展
  • 高可用性、容错和数据库耐久性
  • 实时数据分析

各种领域,比如电信和在线媒体公司、金融服务、公用事业和国防部门,都想要实时分析能力。传统的 IT 系统无法全面地执行实时分析和提取可操作的信息。如今的系统在摄入、预处理和挖掘数据时缺乏速度。因此,在企业和云 IT 环境中涌现出了大量像 VoltDB 这样的解决方案。VoltDB 使用内存型关系数据库克服了关键的速度阻碍,该数据库组合了高速数据摄入、大规模可伸缩性和可帮助企业制定决策的实时分析。VoltDB 将 “摄入到决策” 的时间间隔从几分钟缩短到几毫秒。

使用实时数据库解决方案的组织还通过与一个后端深入分析数据库相集成,收获了更高的回报。以一种协调方式将这两种专业数据库引擎结合起来,用户能够在历史数据中挖掘更深入的分析洞察,并将结果与数据摄入引擎相结合,实现实时使用。它是一个闭环流程,从以前未利用和利用不足的数据类型中获取新的价值。VoltDB 和 IBM Netezza 解决方案结束了这个实时的、在过去耗时很长的循环,将大数据的前端和后端连接起来。这个闭环系统将 Netezza 对丰富的历史数据的深入分析与 VoltDB 技术的即时决策和分析合结合在了一起。

您可以使用 VoltDB 中内置的 IBM Netezza 集成。应用程序和仪表板可以使用 SQL 无缝地与两种系统交互,结合使用历史数据和当前数据,最终向用户呈现一个完整的画面。VoltDB 的 IBM Netezza Export 客户端从 VoltDB 抓取事务性数据,并将它们批量写入到 Netezza 数据库中。导出客户端在 VoltDB 集群内运行且高度可用。VoltDB 还可以将数据导出到其他任何目标,比如 Hadoop 系统。

用户可以自动化导出流程,识别模式中的特定 VoltDB 表作为导出数据的来源。在运行时,任何写入到指定表的数据都会自动发送到 VoltDB 导出连接器,后者会将更新的信息交换到 Netezza 目标。VoltDB 导出流程自动对导出到连接器的数据进行事务性排队。导出客户端使用一系列轮询请求和回执请求,事务性地在 VoltDB 与 Netezza 之间交换数据。

将 VoltDB 迁移到 SoftLayer

您可以选择 SoftLayer 云环境中任何类型的 Linux 镜像来安装和配置 VoltDB,比如 CentOS、Ubuntu 或 RedHat。本文使用一个 CentOS Linux 镜像。

先决条件

详细介绍如何获取SoftLayer 帐户和如何在 SoftLayer 云环境中配备 VM 和裸机服务器,不属于本文的讨论范围。

  1. 从此网站中下载 VoltDB Enterprise Edition:

    http://learn.voltdb.com/DLSoftwareDownload.html

  2. 使用针对 Windows 的 WinSCP 或针对其他任何系统的 FileZilla,将 LINUX-voltdb-ent-4.7.tar.gz 文件复制到 SoftLayer VM 中。目标目录是 /home 目录。
  3. 为该文件提供根用户权限。
  4. 在 SoftLayer VM 的控制台中,从命令行输入 cd /home 来转到 /home 目录。
  5. 输入下面这条命令,将发行版压缩包解压为您的个人账户的主目录中的一个文件夹:
    tar -zxvf LINUX-voltdb-ent-4.7.tar.gz -C $HOME/

    这会解压出以下文件: license.xmllibjzmq.solog4j.propertieslibvoldb-4.7.so

  6. 输入下面这条 shell 命令,将 VoltDB 软件安装到 /opt/voltdb 文件夹中:
    sudo tar -zxvf LINUX-voltdb-ent-4.7.tar.gz -C/opt
  7. 输入下面这条命令,将 voltdb-ent-4.7 文件转移到 /voltdb 文件夹中:
    sudo mv voltdb-ent-4.7 voltdb
  8. 输入 java -version

    命令来检查 Java 是否已安装:如果您在控制台中找到任何 Java 版本,则无需安装它。如果未找到任何 Java 版本,那么请输入下面这条命令来安装 Java:

    [root@skypetervoltdb opt]# sudo yum install                 java-1.7.0-openjdk-devel

    一条消息将显示安装了哪个 Java 版本和已安装的依赖项,如 图 2 所示。

    图 2. 成功安装 Java 的消息

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

回页首

将 VoltDB 安装在 SoftLayer VM 环境中

  1. 从 VM 命令行运行下面这条命令:
    ln -s $HOME/voltdb-ent-4.7 $HOME/voltdb-ent
  2. 要将 voltdb-ent 文件导出到 /bin 目录,可以输入下面这条命令:
    export PATH=$PATH:$HOME/voltdb-ent/bin
  3. 输入 ls -l 命令来列出这些文件:
    [root@skypetervoltdb voter]# ls –l  total 564 -rw-r--r-- 1 root root  57631 Oct 20 00:55 catalog-report.html -rw-rw-r-- 1  507 1001   1720 Sep  9 09:09 ddl.sql -rw-rw-r-- 1  507 1001    166 Sep  9 09:09 deployment.xml drwxr-xr-x 2 root root   4096 Oct 20 00:55 log drwxr-xr-x 3 root root   4096 Oct 20 00:54 obj -rw-rw-r-- 1  507 1001   3911 Sep  9 09:09 README -rwxrwxr-x 1  507 1001   5918 Sep  9 09:09 run.sh drwxrwxr-x 3  507 1001   4096 Sep  9 09:09 src drwxr-xr-x 2 root root   4096 Oct 20 00:55 statement-plans -rwxrwxrwx 1 root root 421971 Oct 14 03:43 VoltDB-app-nbbo-0bd619d.zip drwxr-xr-x 8 root root   4096 Oct 20 00:55 voltdbroot -rw-r--r-- 1 root root  33389 Oct 20 00:55 voter.jar drwxrwxr-x 4  507 1001   4096 Sep  9 09:09 web
  4. 要运行 VoltDB,请输入 ./run.sh 命令。显示了 VoltDB 徽标、许可信息和消息 Server completed initialization ,如图 3 所示。

    图 3. 输入 run 命令后的 VoltDB 初始屏幕

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析 在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

回页首

在 SoftLayer 中开发和运行一个 VoltDB 应用程序

National Best Bid and Offer (NBBO) 应用程序是一个示例应用程序,用于演示 VoltDB 的工作原理。NBBO 显示了一个特定证券在所有参与市场中的最低卖价和最高买价。证券经纪人尝试将交易订单路由到具有最佳价格的市场,并依照法律向客户保证这个最佳价格。该示例包括一个 Web 仪表板,用于显示证券的实时 NBBO 和来自每个交易所的最新价格。

NBBO 包含一个 VoltDB 数据库模式,用于存储每个市场数据涨跌,只要最佳买价或卖价发生更改,就会插入一条新的 NBBO 记录。此记录用于向用户(比如仪表板或其他应用程序)提供当前的 NBBO,或根据需要提供 NBBO 变化的历史数据。

要理解 VoltDB 的工作原理,可以下载并使用这个 NBBO 示例应用程序。

  1. 从 GitHub 下载 NBBO 应用程序。
  2. 将该应用程序复制到 /opt/voltdb/examples 目录中。
  3. 为您下载的 .zip 文件提供根用户权限。
  4. 从命令行输入 unzip VoltDB-app-nbbo-0bd619d.zip 命令,以便解压 .zip 文件中的文件。
  5. 在应用程序文件夹中,输入 cd VoltDB-app-nbbo-0bd619d 并查找 VoltDB-app-nbbo-0bd619d 文件。
  6. 输入 ./run.sh start_web 来启动 SoftLayer VM 内的 Web 服务器。您的控制台中会显示消息 http server is already running (PID:7701)在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析
  7. 打开 Firefox 并访问 http:// ip :8081 来查看应用程序用户界面,其中 ip 是您安装 VoltDB 的服务器的 IP 地址,如 图 4 所示。

    图 4. NBBO 演示

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

    点击查看大图

    关闭 [x]

    图 4. NBBO 演示

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

    因为我们没有启动应用服务器,所以您会看到消息 Starting database, this may take 30 seconds...

  8. 输入 cd /opt/voltdb/examples/voter 命令来启动该服务器,然后输入 /run.sh server 命令来运行该服务器。
  9. 服务器运行后,输入 ./run.sh client 命令来查看客户端应用程序中的结果,如 清单 1 所示。

    清单 1. 连接到客户端

    The VoltDB scripts are not in your PATH. For ease of use, add the VoltDB bin directory:  /opt/voltdb/bin  to your PATH.  ----------------------------------------------------------- Command Line Configuration -----------------------------------------------------------  contestants = 6 displayinterval = 5 duration = 120 latencyreport = false maxvotes = 2 password =  ratelimit = 2147483647 servers = localhost:21212 statsfile = user = warmup = 5  ----------------------------------------------------------- Setup & Initialization -----------------------------------------------------------  Connecting to VoltDB... Connected to VoltDB node at: localhost:21212.
  10. 刷新 Web 浏览器以查看最新结果,如 图 5 所示。

    图 5. 启动服务器后的 NBBO 演示

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

    点击查看大图

    关闭 [x]

    图 5. 启动服务器后的 NBBO 演示

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

  11. 单击屏幕右上角的 Catalog Report 来查看目录报告,如 图 6 所示。

    图 6. Catalog Report

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

    点击查看大图

    关闭 [x]

    图 6. Catalog Report

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

  12. 选择 Schema 来查看模式信息,如 图 7 所示。

    图 7. Schema

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

    点击查看大图

    关闭 [x]

    图 7. Schema

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

  13. 要打开 VoltDB 控制台,在菜单中单击 Overview ,如 图 8 所示。

    图 8. 打开 VoltDB 控制台

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

    点击查看大图

    关闭 [x]

    图 8. 打开 VoltDB 控制台

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

  14. 选择 VoltDB Studio 来连接到 VoltDB Web Studio,如 图 9 所示。

    图 9. 连接到 VoltDB Studio

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析
  15. 单击 Connect ,您会获得指定连接细节的提示,比如 VoltDB 服务器的用户名和密码,如 图 10 所示。在 User name 字段中输入 root ,在 User name 字段中输入 xxxxx ,然后单击 OK

    图 10. 所需的连接信息

    在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

您与 VoltDB 数据库的连接已建立,如 图 11 所示。

图 11. 与 VoltDB 数据库建立连接

在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

要检查速度,可以输入一个命令,在 1 秒内就能看到结果。如果没有 VoltDB,响应需要花几秒钟的时间。有了 VoltDB,响应时间不到 1 秒,如图 12 所示。

图 12. 查询持续时间

在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

现在,让我们看看输出复杂查询的结果要花多长时间,如 图 13 所示。

图 13. 发起查询

在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

点击查看大图

关闭 [x]

图 13. 发起查询

在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

清单 2 中的复杂查询和 图 14中所示的结果不到 1 秒就会闪回一次。

清单 2. 复杂查询

SELECT a.contestant_name AS contestant_name , a.contestant_number AS contestant_number , SUM(b.num_votes) AS total_votes FROM v_votes_by_contestant_number_state AS b , contestants AS a WHERE  a.contestant_number = b.contestant_number GROUP BY a.contestant_name , a.contestant_number ORDER BY total_votes DESC , contestant_number ASC , contestant_name ASC;

图 14. 复杂查询的结果

在 IBM SoftLayer 中使用 VoltDB 数据库执行实时分析

点击查看大图

正文到此结束
Loading...