VoltDB内存数据库的十大FAQ

2024-04-24 22:18

本文主要是介绍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)等接口,客户端也支持语言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自己用Erlang客户端测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是内存数据库,数据会不会容易丢失?如何实现高可用性?

数据库中数据的安全,一定是最为关键的问题。作为内存数据库,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台机器的性能(吞吐量),可以动态增加节点,提高数据库服务器处理的性能。

节点自动恢复:如果集群中一台机器当机,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@voltdb.com



10. VoltDB商业版本费用如何?

具体的收费规则,我不是很清楚,但我可以确定,一定比传统大型数据库Oracle,SQL Server,DB2啥的便宜好多,比起SAP HANA也要便宜好多好多。

具体情况可以发邮件到support@voltdb.com询问,一定有人会回复相关问题。

这篇关于VoltDB内存数据库的十大FAQ的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/932986

相关文章

虚拟机Centos7安装MySQL数据库实践

《虚拟机Centos7安装MySQL数据库实践》用户分享在虚拟机安装MySQL的全过程及常见问题解决方案,包括处理GPG密钥、修改密码策略、配置远程访问权限及防火墙设置,最终通过关闭防火墙和停止Net... 目录安装mysql数据库下载wget命令下载MySQL安装包安装MySQL安装MySQL服务安装完成

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

C#连接SQL server数据库命令的基本步骤

《C#连接SQLserver数据库命令的基本步骤》文章讲解了连接SQLServer数据库的步骤,包括引入命名空间、构建连接字符串、使用SqlConnection和SqlCommand执行SQL操作,... 目录建议配合使用:如何下载和安装SQL server数据库-CSDN博客1. 引入必要的命名空间2.

Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式

《Java通过驱动包(jar包)连接MySQL数据库的步骤总结及验证方式》本文详细介绍如何使用Java通过JDBC连接MySQL数据库,包括下载驱动、配置Eclipse环境、检测数据库连接等关键步骤,... 目录一、下载驱动包二、放jar包三、检测数据库连接JavaJava 如何使用 JDBC 连接 mys

怎样通过分析GC日志来定位Java进程的内存问题

《怎样通过分析GC日志来定位Java进程的内存问题》:本文主要介绍怎样通过分析GC日志来定位Java进程的内存问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、GC 日志基础配置1. 启用详细 GC 日志2. 不同收集器的日志格式二、关键指标与分析维度1.

Java内存分配与JVM参数详解(推荐)

《Java内存分配与JVM参数详解(推荐)》本文详解JVM内存结构与参数调整,涵盖堆分代、元空间、GC选择及优化策略,帮助开发者提升性能、避免内存泄漏,本文给大家介绍Java内存分配与JVM参数详解,... 目录引言JVM内存结构JVM参数概述堆内存分配年轻代与老年代调整堆内存大小调整年轻代与老年代比例元空

MySQL数据库中ENUM的用法是什么详解

《MySQL数据库中ENUM的用法是什么详解》ENUM是一个字符串对象,用于指定一组预定义的值,并可在创建表时使用,下面:本文主要介绍MySQL数据库中ENUM的用法是什么的相关资料,文中通过代码... 目录mysql 中 ENUM 的用法一、ENUM 的定义与语法二、ENUM 的特点三、ENUM 的用法1

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Go语言数据库编程GORM 的基本使用详解

《Go语言数据库编程GORM的基本使用详解》GORM是Go语言流行的ORM框架,封装database/sql,支持自动迁移、关联、事务等,提供CRUD、条件查询、钩子函数、日志等功能,简化数据库操作... 目录一、安装与初始化1. 安装 GORM 及数据库驱动2. 建立数据库连接二、定义模型结构体三、自动迁