1.概要信息

1.1VoltDB为何物?
VoltDB是为满足极端多的事务处理以及以下需求而设计的关系数据库系统:
可以提供比传统数据库系统好很多的性能。
可以线性扩展。
兼容SQL作为数据库管理接口。
兼容ACID,满足数据一致与完整性。
7*24*365高可用。
1.2VoltDB架构
VoltDB数据库是一个分布式,可扩展,shared-nothing的内存数据库。使用JAVA 写的存储过程来定义事务。使用标准SQL访问数据,使用并行的单线程处理方式确保数据一致性,同时避免了传统数据库的锁,插销,资源管理开销。
1.3VoltDB如何获得ACID兼容
为确保数据可靠性,必须满足原子性,一致性,隔绝性,持久性四个特征。
原子性:
VoltDB通过使用存储过程来确保原子性,一个存储过程执行必须等待前一个存储过程成功或回滚结束。
一致性:
VoltDB在所有的数据库查询中强制schema与数据类型约束.
隔绝性:
VoltDB事务全局(所有被影响的分区)顺序执行(没有交叉)(任何一个分区同一时间只有一个执行,即串行的)。
持久性:
VoltDB提供分区复制以及周期性的数据库snapshot,确保数据持久化。
1.4可扩展性是如何得来的?
VoltDB自动在集群中的可用节点分发行记录。通过增加集群节点,可以提高数据库集群的性能和容量,当数据重新载入时,VoltDB自动重分布数据。
1.5VoltDB如何处理数据库分区
VoltDB通过分区计划将行分发到各个数据库分区。用户通过指定被分区的表的列,作为内部HASH函数的输入参数。注意,不是所有的表都需要被分区,读比较多的表考虑复制较合适
1.6VoltDB分区与传统数据库分片的不同
传统的数据库分片,数据表被存放在完全不相干的数据库当中。更加可怕的是,数据一致性必须通过应用逻辑来保证。但是使用VoltDB的话,ACID兼容性是基于整个数据库集群的,不需要应用来考虑。
另一个传统数据库分片的弱点是数据备份,恢复以及管理,都必须基于单个节点。而使用VoltDB就没有这么麻烦了,这些操作都被集中化了。
1.7适合VoltDB的应用场景
VoltDB适合OLTP系统,单个事务较小,但是事务总量非常之多的应用。比如金融,零售,WEB2.0等传统OLTP应用。
2.比较信息
2.1VoltDB与MySQL数据库分片的区别
VoltDB设计的初衷是提供高并发能力,对应用来说透明的分区解决方案。MySQL的数据库分片方案,需要应用编写代码来管理和访问数据库分片,或者理解为MySQL的数据库分片对应用来说不是透明的。
VoltDB的水平分区不牺牲ACID特性,可管理性。同时不会增加程序设计的复杂度。
对于OLTP系统,在同等硬件的情况下,VoltDB提供比MySQL分片更好的性能。
2.2VoltDB与MySQL with Memcached的区别
Memcached,分布式内存缓存.一般放在应用和数据库之间,提供频繁访问的数据库对象的缓存,但是需要应用来管理这个缓存。memcached本身并没有可靠性和一致性保障,需要应用来管理缓存和数据库的HASH算法。更重要的是CACHE的使用一般只对读性能有提高,而写的话可能反而更差劲。
VoltDB提供比memcached同等或更高的读性能,同时不失ACID特性,更加重要的是,VOLTDB提供与读同等性能的写性能。
2.3VoltDB与Key-Value数据库的区别
Key-Value数据库用于存储任意数据,基于各自KEYS。因为只有一个KEY,所以Key-Value数据库做分布式架构非常的简单。但是Key-Value不提供结构化数据存储,不提供系统数据可靠性。
使用VoltDB可以存储结构型或非结构型数据,同时提供数据存储的可靠性,一致性,持久化,标准SQL接口。VOLTDB甚至可以在一个事务中通过多个KEY对数据进行读写.VoltDB提供与键值数据库相当或者更好的事务吞吐能力
3.技术信息
3.1VoltDB支持的平台
目标平台CENTOSv5.4,兼容64-bit POSIX-compliant 平台。支持Ubuntu9.04 OSX10.5,10.6。使用源代码及编译脚本支持更多操作系统。
3.2VoltDB支持的SQL
VoltDB v1版支持ANSI-标准SQL子集,支持CREATE INDEX, CREATE TABLE,  CREATE VIEW ,SELECT, INSERT, UPDATE,  DELETE 。
其他SQL将陆续在后续的版本添加。参考VOLTDB手册。
3.3VoltDB是否支持blob
当前版本不支持blob,但是可以使用varchar存储BASE64来代替,限制最大1M大小。
3.4VoltDB为什么不支持ODBC/JDBC?
VoltDB的主要交互通过JAVA存储过程实现,使用ODBC,JDBC连接意义不大。应为所有的添加修改操作必须新建或修改JAVA存储过程。
3.5如何增加VoltDB集群的容量?
VoltDB的大小由初始话过程决定,编译应用CATALOG,启动数据库。要增加集群容量,需要做如下操作:
1。使用SnapshotSave存储过程将当前数据库内容镜像到磁盘。
2.重新编译应用CATALOG,指定VOLTDB集群新的SIZE。
3.重启VOLTDB数据库集群,使用新的CATALOG。
4.使用SnapshotRestore系统过程还原第一步备份的镜像至新的VOLTDB集群。
3.6VoltDB数据库集群最大支持多少节点?
VoltDB单个节点的性能约为传统DBMS的30-50倍,同时VOLTDB官方已经在3-12个节点的集群上都做过测试,在小于12个节点的集群中,性能指标可以达到10万TPS。并且已经成功部署20个节点的集群,尽管在VOLTDB的架构上没有限制节点数量,但是如果客户需要部署超过20个节点的集群,可以联系VOLTDB以便做得更好。
3.7VoltDB有哪些数据库管理工具?
在当前的版本中,VoltDB提供了一些命令行工具初始化,创建数据库,其他的如改变日志特征,创建镜像,修改CATALOG,关闭集群可以通过调用系统过程来实现。后续的版本将陆续添加更多的自动化脚本或命令。
3.8数据库监控工具
当前的版本提供的工具不多,可以通过调用Statistics, SystemInformation system procedures来监控数据库。后续的版本会添加更多的友好的工具。
4.最佳实践
4.1自增长的索引列的实现?
目前的版本没有AUTO_INCREMENT功能,如果要实现自增长的列值需求,可以新建一个表,这个表的每一行存储表名,列名,当前值。如
CREATE TABLE AUTOINCREMENT (     
TABLE_NAME VARCHAR[50] NOT NULL,     
CURRENT_VALUE BIGINT NOT NULL DEFAULT 1  
);
然后创建一个存储过程来维护这个表和返回当前值。
4.2使用VoltDB存储Key-Value
使用VoltDB不仅仅可以存储Key-Value,VOLTDB提供了很好的平台来满足类似目的,如通过创建一个两字段的表int|char[],varchar,然后根据int|char[]作为键值分区。这样的话就可以建立一个非结构化的存储结构了。使用VOLTDB存储KV的好处是,提供了同等或超越KV数据库的性能,并且保留了ACID特性。
使用VOLTDB存储KV的限制,单行长度最大1M(VARCHAR),以后可能增加。
4.3如何调整应用,使之在VOLTDB环境获得最大吞吐量
首先遵守如下三条规则:
1.通过设计,尽量减少跨节点的事务。
2.使用异步存储过程调用。如果每一次客户端调用存储过程都需要等待响应的话,VOLTDB的队列不能被充分利用,不能获得最好的性能体现。使用异步调用,同时可以避免客户端性能瓶颈。
3.客户端与VOLTDB的所有节点建立连接,在跨分区事务中性能较好。

其他:调用ExecuteSQL之前队列多个SQL(类似多步提交),

确保最后一个ExecuteSQL调用包含TRUE标签作为一个参数,告知过程可以关闭数据库事务作为最后调用的一部分,而不是某一个步骤.

VoltDB FAQ相关推荐

  1. 数据库中的windows1.0(最新内存数据库VOLTDB的一些介绍)

    数据库中的windows1.0(最新内存数据库VOLTDB的一些介绍) 最近看了一下voltdb内存数据库的介绍,也做了一些测试,感觉还不错. VoltDB是Postgres和Ingres联合创始人M ...

  2. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

  3. llvm常见问题 (FAQ)

    llvm常见问题 (FAQ) License 可以修改 LLVM 源代码并重新分发修改后的源代码吗? 可以修改 LLVM 源代码并重新分发基于二进制文件或其它工具,而无需重新分发源代码吗? 源代码 L ...

  4. 跨站脚本攻击(XSS)FAQ

    原作者charlee.原始链接http://tech.idv2.com/2006/08/30/xss-faq/以及本声明. 该文章简单地介绍了XSS的基础知识及其危害和预防方法.Web开发人员的必读. ...

  5. Mininet FAQ

    2019独角兽企业重金招聘Python工程师标准>>> FAQ lantz edited this page on 20 Oct · 324 revisions Pages 65 M ...

  6. 使用Harry过程中FAQ(问题解答)

    使用Harry过程中FAQ(问题解答) Harry-Vue 启动报错信息 Cannot find module错误信息 Harry-Vue 的路由在nginx中刷新出现404 一.Harry-Vue ...

  7. python 学习之FAQ:find 与 find_all 使用

    FAQ记录 1. 错误源码 错误源码如下 def fillUnivList(_html,_ulist):soup =BeautifulSoup(_html,'html.parser')for tr i ...

  8. 微信攻城三国怎么找服务器,攻城三国怎么玩 新手FAQ常见问题答案汇总[图]

    类型:策略卡牌 大小:269MB 评分:5.0 平台: 攻城三国怎么玩?很多小伙伴是第一次玩这种类型的游戏,下面友情小编为大家带来新手FAQ的常见问题答案汇总,看看能不能帮到大家哦~ 新手FAQ常见问 ...

  9. 【转载】大连商品交易所-新套利撮合算法FAQ

    原文网址:http://www.dce.com.cn/dalianshangpin/yw/fw/ywzy/jyywzy/498201/1500371/index.html   大连商品交易所 新套利撮 ...

最新文章

  1. Git统计个人提交代码行数
  2. Dremel - Interactive Analysis of WebScale Datasets
  3. iOS定义静态变量、静态常量、全局变量
  4. 供应链新格局重塑全球农业贸易 对话国际农民丰收节贸易会
  5. 自定义日历控android,Android自定义日历Calender代码实现
  6. 利用python批量修改文件名称
  7. JavaScript的检测及其数据类型
  8. java web 常用工具类_Javaweb常用工具类及配置文件备份
  9. SAP License:做顾问要有一颗平常心
  10. 解决Django Rest Framework中的跨域问题
  11. response.contenttype
  12. 153. Find Minimum in Rotated Sorted Array找其中的最小值
  13. fiddler4苹果手机证书无法使用的问题解决方案
  14. 使用计算机程序的设计语言是,计算机程序设计语言有哪些?
  15. JavaScript 在线编辑器
  16. lvuaagentinstbaseroot_桌面小助手UniAgent删除指南
  17. 三国杀诺基亚java_拍照手机「三国杀」:诺基亚 808 PureView、iPhone 4S、HTC One S 大比拼...
  18. 各种音视频编解码学习详解之 编解码学习笔记(九):QuickTime系列
  19. php5 ereg,ereg / eregi替代PHP 5.3
  20. 鸿蒙系统sp3什么意思,XP系统的那个SP3是什么意思?

热门文章

  1. gradle proxy配置
  2. 在职老程序员考非全211硕士(计算机专业)经验
  3. 实习闲余——对Pinia的整理和学习
  4. CRUISE 2015.0 安装和和谐
  5. 公路工程评职称要计算机模块吗,公路工程杂志可以用来评定职称吗?
  6. m基于matlab的光通信的信道估计,均衡,抑制papr误码率仿真,对比ZF,RLS,MMSE三种算法
  7. java 火龙劫,火龙畅想圆满完成 最终结果即将揭晓
  8. c语言输出数字漏斗图形_为什么你觉得C语言什么都不能做,学了没用?不可能的...
  9. python 财务报表审计_【干货】Python自动化审计及实现
  10. 枪械切换(1)——Unity随手记(2021.2.16)