数据虚拟化、数据库、数据仓库、数据集市和多维数据集、商业智能 (BI),以及可视化解决方案都是采集和整合大型和快速的数据的关键。
对于从这些大型数据堆中推断出可操作的洞察,首创的平台和基础架构是必不可少。图 1 显示了对不同种类数据库的需求,包括对高速数据库管理系统不断加强的主张。
图 1. 大数据管理基础架构
高速数据库管理系统必须能够:
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 之间交换数据。
您可以选择 SoftLayer 云环境中任何类型的 Linux 镜像来安装和配置 VoltDB,比如 CentOS、Ubuntu 或 RedHat。本文使用一个 CentOS Linux 镜像。
详细介绍如何获取SoftLayer 帐户和如何在 SoftLayer 云环境中配备 VM 和裸机服务器,不属于本文的讨论范围。
http://learn.voltdb.com/DLSoftwareDownload.html
LINUX-voltdb-ent-4.7.tar.gz
文件复制到 SoftLayer VM 中。目标目录是 /home
目录。 cd /home
来转到 /home
目录。 tar -zxvf LINUX-voltdb-ent-4.7.tar.gz -C $HOME/
这会解压出以下文件: license.xml
、 libjzmq.so
、 log4j.properties
和 libvoldb-4.7.so
。
/opt/voltdb
文件夹中: sudo tar -zxvf LINUX-voltdb-ent-4.7.tar.gz -C/opt
voltdb-ent-4.7
文件转移到 /voltdb
文件夹中: sudo mv voltdb-ent-4.7 voltdb
java -version
命令来检查 Java 是否已安装:如果您在控制台中找到任何 Java 版本,则无需安装它。如果未找到任何 Java 版本,那么请输入下面这条命令来安装 Java:
[root@skypetervoltdb opt]# sudo yum install java-1.7.0-openjdk-devel
一条消息将显示安装了哪个 Java 版本和已安装的依赖项,如 图 2 所示。
图 2. 成功安装 Java 的消息
回页首
ln -s $HOME/voltdb-ent-4.7 $HOME/voltdb-ent
voltdb-ent
文件导出到 /bin
目录,可以输入下面这条命令: export PATH=$PATH:$HOME/voltdb-ent/bin
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
./run.sh
命令。显示了 VoltDB 徽标、许可信息和消息 Server completed initialization
,如图 3 所示。 图 3. 输入 run 命令后的 VoltDB 初始屏幕
回页首
National Best Bid and Offer (NBBO) 应用程序是一个示例应用程序,用于演示 VoltDB 的工作原理。NBBO 显示了一个特定证券在所有参与市场中的最低卖价和最高买价。证券经纪人尝试将交易订单路由到具有最佳价格的市场,并依照法律向客户保证这个最佳价格。该示例包括一个 Web 仪表板,用于显示证券的实时 NBBO 和来自每个交易所的最新价格。
NBBO 包含一个 VoltDB 数据库模式,用于存储每个市场数据涨跌,只要最佳买价或卖价发生更改,就会插入一条新的 NBBO 记录。此记录用于向用户(比如仪表板或其他应用程序)提供当前的 NBBO,或根据需要提供 NBBO 变化的历史数据。
要理解 VoltDB 的工作原理,可以下载并使用这个 NBBO 示例应用程序。
/opt/voltdb/examples
目录中。 .zip
文件提供根用户权限。 unzip VoltDB-app-nbbo-0bd619d.zip
命令,以便解压 .zip
文件中的文件。 cd VoltDB-app-nbbo-0bd619d
并查找 VoltDB-app-nbbo-0bd619d 文件。 ./run.sh start_web
来启动 SoftLayer VM 内的 Web 服务器。您的控制台中会显示消息 http server is already running (PID:7701)
。 图 4. NBBO 演示
点击查看大图
关闭 [x]
因为我们没有启动应用服务器,所以您会看到消息 Starting database, this may take 30 seconds... 。
cd /opt/voltdb/examples/voter
命令来启动该服务器,然后输入 /run.sh server
命令来运行该服务器。 ./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.
图 5. 启动服务器后的 NBBO 演示
点击查看大图
关闭 [x]
图 6. Catalog Report
点击查看大图
关闭 [x]
图 7. Schema
点击查看大图
关闭 [x]
图 8. 打开 VoltDB 控制台
点击查看大图
关闭 [x]
图 9. 连接到 VoltDB Studio
root
,在 User name 字段中输入 xxxxx
,然后单击 OK 。 图 10. 所需的连接信息
您与 VoltDB 数据库的连接已建立,如 图 11 所示。
图 11. 与 VoltDB 数据库建立连接
要检查速度,可以输入一个命令,在 1 秒内就能看到结果。如果没有 VoltDB,响应需要花几秒钟的时间。有了 VoltDB,响应时间不到 1 秒,如图 12 所示。
图 12. 查询持续时间
现在,让我们看看输出复杂查询的结果要花多长时间,如 图 13 所示。
图 13. 发起查询
点击查看大图
关闭 [x]
清单 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. 复杂查询的结果
点击查看大图