http://www.binotes.net/read.php/106.htm
分布式内存数据库--Voltdb
1.引言
1.1 What is VoltDB?
VoltDB 是为满足极端多的事务处理以及以下需求而设计的关系数据库系统:
可以提供比传统数据库系统好很多的性能。
可以线性扩展。
兼容SQL 作为数据库管理接口。
兼容ACID ,满足数据一致与完整性。
7*24*365 高可用。
VoltDB 并不是为了解决所有数据库问题。它是针对特定的商业计算领域。
VoltDB特别侧重于应用,需要的可扩展性,可靠性,高可用性和出色的吞吐量。换句话说, VoltDB的目标受众是历来被视为联机事务处理( OLTP)应用已知的。这些应用有严格的规定,以避免流量瓶颈。 他们也有明确的工作流程,预定义的体系结构允许数据访问路径和关键的相互作用。
VoltDB未优化对所有类型的查询,如获取和整理大量数据跨多个表。 这类活动通常是在商务智能和数据仓库解决方案,找到了其他数据库产品更适合。
1.2 VoltDB架构
VoltDB 不像传统的数据库产品。没有一个通用的VoltDB" 数据库" 这样的东西。 每个数据库是一个通过编译优化架构,由存储过程的具体应用和分区信息,在VoltDB 称为运行时目录。 该目录,然后装上一个或多个主机的创建分布式数据库。
1.2.1 数据分片
通过分析和预编译存储过程中的数据访问逻辑, VoltDB可以分发了数据和与之相关对集群中的单个节点的处理。这样,群集的每个节点包含一个独特的 "数据片 "和数据处理。
表分区:
1.2.2串行单线程序处理
串行处理:
1.2.3分区表VS 表复制
分区表是在 VoltDB基于一个主键,你的开发人员或设计人员,指定。当您选择分区键的方式相匹配的数据是由存储过程访问,它在运行时执行优化。
为了进一步优化性能, VoltDB允许某些数据库表复制到群集的所有分区。对于那些主要是只读的小表,这可以用存储过程来和另外一些大表来创建联接。例如,零售商品数据库,可以通过一个product code作为主键的一个表和产品类目表进行关联,这个结果集是相对较小,也不会经常变动,它不像库存和订单经常发生改,它可以复制到所有的分区。这样一来检索product表以及存储过程可以很方便地返回用户产品信息,搜索产品代码时也不影响秩序和数据库更新和搜索的性能,总之一句概括:就是把那些不经常变动的一些小的码表通过表复制放到各个节点上从而不用在每个节点检索数据和通信,这样就可以大大提搞查询性能。
1.2.4 满足应用需求的方法
该VoltDB 架构旨在简化缩放的数据库,以满足您不断变化的应用需求的过程。增加VoltDB 集群中节点的数目也相应增加了吞吐量,同时也增加数据容量及每个表的分区数。
扩大VoltDB 数据库不要求任何对数据库架构或应用程序代码的进行重构, 它也不需要更换现有的硬件。VoltDB规模扩容其它 是一个简单的过程:
1. 使用@ SnapshotSave 系统的程序把正在 运行的数据库的数据 保存到磁盘上 。
2. 关闭数据库。
3. 分发 一份新的VoltDB 运行的catalog复制到所有节点。
4. 重新启动数据库(包括新的节点)。
5. 使用@ SnapshotRestore 系统的程序 还原和重新分配的分区 。
未来版本的VoltDB 预计支持快速的缩放(加入到群集节点) ,而无需保存和恢复。
2.安装VoltDB
2.1 操作系统和软件要求
以下是开发和运行VoltDB应用的要求:
VoltDB is built and qualified on CentOS version 5.4. Development builds are also available for Ubuntu (9.04 or later) and Macintosh OSX (10.5 and 10.6)1: |
|
CPU |
|
Memory |
4 Gbytes |
Java |
Sun JDK 6 update 18 |
Required Software |
Ant 1.7 |
Recommended Software |
Python 2.4 or later Eclipse 3.x (or other Java IDE |
2.2 Installing VoltDB
VoltDB的安装包是一个压缩的tar包,安装VoltDB时直接解压到OS下就可以了。
$ tar -zxvf voltdb-1.1.01.tar.gz -C $HOME/
$ sudo tar -zxvf voltdb-1.1.01.tar.gz -C /opt
$ cd /opt
$ sudo mv voltdb-1.1.01 voltdb
2.3 VoltDB分发包都包含什么
下面列出了作为VoltDB提供的组件
组件 |
描述 |
VoltDB 运行环境 |
VoltDB 做为 一个JAR 包和一个被调用的LIB库出现在voltdb子文件夹下面 |
示例 |
VoltDB有一些例子在examples子文件夹下面 |
生成脚本 |
生成脚本工具可以帮助你开始使用VoltDB时创造一个模板应用,源文件及文件夹的完整结构,和Ant构建文件。生成脚本工具在tools子文件夹里 |
即席浏览 |
即席浏览是一个Python应用程序,让你发出即席查询到正在运行的VoltDB数据库。即席浏览应用程序放在tools子文件夹 |
联机文档Java文档 |
Java编程接口类和方法的联机文档是在doc子文件夹。 |