VoltDB内存数据库的十大FAQ

Posted ljbguanli

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了VoltDB内存数据库的十大FAQ相关的知识,希望对你有一定的参考价值。

1. VoltDB是什么?

->VoltDB是一家新型关系型分布式内存数据库管理系统,以解决OLTP为初衷,正在不断添加处理OLAP,提供BI的功能。

VoltDB与传统数据库(如DB2,Oracle,mysql等)最大的不同点就是,VoltDB把所有数据放在内存里,而且能够scale out,执行在一个集群上。集群上的每一个节点都能够执行部分数据处理任务。

VoltDB官网:http://voltdb.com/

技术分享


2. VoltDB支持SQL吗?支持Transaction吗?

-> VoltDB支持大多数SQL语句。眼下还在不断添加对SQL的支持。VoltDB的单个SQL语句和Stored procedure都支持Transaction的全部ACID属性。是一个完全然全的支持事务处理的系统。这点与key-value等系统等是有非常大差别的。

VoltDB还支持JDBC,ODBC(soon)等接口。client也支持语言C#。C++,Erlang,Go,Java。JSON。Node.js。php,Python。Ruby等。


3. VoltDB适用于什么类型的应用?

->大数据领域能够分两类:a)数据总量大,b)单个数据元小。但数据产生快,有大量高并发

VoltDB主要是来解决Big Data以下Fast Data的问题。同一时候也在添加处理大数据量的能力。因此,VoltDB更加适合OLTP类型的应用,能够有效提高数据库高并发下的系统吞吐量。常见的应用有几类:a)须要实时交互的大型多人在线游戏。b)在线广告业务,c)移动电信通讯业务,d)银行或股票交易系统,e)在线商城(如淘宝,京东等),f)网络实时监控或传感器应用等

换句话讲。不论什么须要strong consistency的高并发业务。都是VoltDB最擅长的。

同一时候实时交互的BI和OLAP也是VoltDB非常不错的领域。当然假设你的数据规模是PB以上级别的OLAP话。就眼下而言,那还是选择基于Hadoop的分析系统比較合适。


4. VoltDB数据库性是用什么语言写的?

VoltDB使用的语言大致分两种,底层引擎是C/C++,上层的SQL语义处理,并发管理。分布式集群等任务都是Java。另外,还有些工具使用Python,JS等做的。

底层Engine的任务包含:数据存储,内存管理及SQL详细运行的数据处理


5. VoltDB数据库性能究竟怎么样?

VoltDB的吞吐量非常高,尤其是单位节点的吞吐量,应该是市面上数据库系统最高的了。

单台家用笔记本上,也能跑出7,8万TPS(transactions per second)。

依据不同的笔记本性能,吞吐量也略有区别。

这里推荐两篇关于VoltDB性能的文章:

a)http://www.csdn.net/article/2013-04-11/2814850-877000-tps-with-erlang-and-voltdb :这是一家游戏公司Eonblast Corporation的CEO自己用Erlangclient測VoltDB性能的博文,文中測试吞吐量的结果为:87.7万的TPS,完毕了350万的QPS。

b)http://voltdb.com/blog/voltdb-in-memory-database-achieves-best-in-class-results-running-in-the-cloud-on-the-ycsb-benchmark-3/:文中对照了YCSB benchmark在云端的測量数据。结论是:VoltDB系统吞吐量能够依据集群的节点数线性增长,Workload B用12个节点跑出72.4万的TPS。

要知道12年的MySQL和Cassandra在相似的机器上才跑出不到18万的TPS,如今的VoltDB跑Key-Value的应用,性能是当时他们的4倍之多。

C)https://www.sgi.com/pdfs/4238.pdf:SGI公司对VoltDB性能做了測试:10个节点能跑出120万的TPS,30个节点跑出了337万的TPS。


6. VoltDB是内存数据库,数据会不会easy丢失?怎样实现高可用性?

数据库中数据的安全。一定是最为关键的问题。

作为内存数据库,VoltDB有非常多种科技手段来保证数据的可靠性。VoltDB已有不上金融领域的商业应用,这已经证明了内存数据库VoltDB在数据可靠性上是没问题的。

K-safety:VoltDB的数据是分区的。设定K-safety(即同步的分区拷贝数量)參数,能够确保整个集群的稳定性。

假设K设置为1。每一个分区都在集群内有一个拷贝,假设有一台机器当机了,整个VoltDB集群能够正常执行。

Snapshot(快照):用户能够依据应用设置snapshot的周期,VoltDB能够对数据做snapshot,然后将其写入Disk,数据就永久性的存在了。假设意外当机。VoltDB能够依据磁盘上已有的snapshot文件,进行数据恢复操作。恢复数据速度非常快。我自己測试的60多G的数据,完毕恢复须要2分钟左右。

Command Logging(命令日志):这个功能是VoltDB特有的。和Snapshot一起使用,记录了保存两次snapshot之间全部写(write)操作的日志,是为了确保不会有不论什么transaction丢失。读操作(read)不改变数据,所以不被记录。

Database Replication:这个是传统数据库已经有的功能了,就是在还有一个地方。做一个全然一摸一样的数据拷贝,假设主集群不工作了(如集体断电),立马讲服务切换到附属集群上去,通常附属集群要设立在一个物理范围上不同的地区。

以上内容有免费的网上学习视频,会英语的同学强烈推荐:http://voltdb.com/resources/volt-university/tutorials/section-1-6/

 

7. VoltDB是分布式数据库,有哪些特点?

VoltDB分布式内存数据库的性能,没两台机器之间不共享不论什么内存和数据,能够全然看做独立的两台机器,而仅仅是用网络连接在一起。VoltDB的性能能够线性增长,支持动态加入节点,节点自己主动恢复等功能。

动态加入节点:不同业务可能会有自己的高峰期,打个例如,假设不满足如今3台机器的性能(吞吐量),能够动态添加节点,提高数据库server处理的性能。

节点自己主动恢复:假设集群中一台机器当机,K-safety參数设置大于或等于1。VoltDB依旧能够正常执行。

之后,等该机器维修好之后(当然也可换一台新机器),能够动态再加入到集群其中来。

 

8. 谁在使用VoltDB?VoltDB的客户有哪些?

VoltDB的客户数量在400多个。合作伙伴也有30个左右。当中包含惠普HP。雅虎这种大型IT公司。业务范围也大多是之前提到的VoltDB比較擅长的领域,涉及fast data和高并发的应用。详细情况能够參考链接:

http://voltdb.com/about/customers/

http://voltdb.com/partners/voltdb-partners/

 

9. VoltDB是否开源?有哪些资料參考和学习?

VoltDB有开源版本号,免费试用。同一时候也有商业版。包括有很多其它功能。下载须要到官网亲自下载,比如数据恢复。command logging等功能是须要须要商业版的。商业版本号有30天免费试用的。假设你是开发者,希望研读源码或者为VoltDB做贡献,GitHub的Wiki页面上也有怎样设置Java eclipse,进行开发。

开源版本号下载地址:https://github.com/VoltDB/voltdb/releases

开源码在GitHub上:https://github.com/VoltDB/voltdb

VoltDB免费在线视频学习课程(会英文的同学,强烈推荐学习):http://voltdb.com/resources/volt-university/tutorials/

VoltDB的JIRA系统:https://issues.voltdb.com/

VoltDB的社区论坛:https://forum.voltdb.com/

VoltDB的支持邮箱:有不论什么疑问都能够发到此邮箱 support at voltdb.com


10. VoltDB商业版本号费用怎样?

详细的收费规则,我不是非常清楚。但我能够确定,一定比传统大型数据库Oracle。SQL Server,DB2啥的廉价好多。比起SAP HANA也要廉价好多好多。

详细情况能够发邮件到support at voltdb.com询问,一定有人会回复相关问题。



假设你又其它相关问题,这里没有涵盖到,也能够留言讨论。












以上是关于VoltDB内存数据库的十大FAQ的主要内容,如果未能解决你的问题,请参考以下文章

300万运算/秒 :VoltDB在电信行业基准测试上可线性扩展性能

FAQ系列 | 内存溢出案例

JS十大排序算法

十大排序算法总结

十大排序算法总结

js十大排序算法详解