:::: MENU ::::

TalkingData's Blog

现在开始,用数据说话。

VoltDB分享

  • Jun 15 / 2015
  • 0
News, Tech

VoltDB分享

voltdb

简介

VoltDB是一个内存中的开源OLTP SQL数据库,能够保证事务的完整性(ACID)。VoltDB是Postgres和Ingres联合创始人Mike Stonebraker领导开发的下一代开源数据库管理系统。

VoltDB的功能

▪  SQL支持

▪  存储过程支持

▪  编译Java存储过程支持

public class CountLaunch extends org.voltdb.VoltProcedure{

public final SQLStmt countByProductid = new SQLStmt(“selectcount(*) from launch where PRODUCTID = ?”);

public VoltTable[]run(int productid) throws VoltAbortException {

voltQueueSQL(countByProductid,productid);

return voltExecuteSQL();

}

}

▪  ACID,无锁并行处理

▪  操作在每个分区被单线程顺序的执行

▪  高吞吐量(近线性扩展)

  • 分区表,分区间并行处理
  • 异步调用

1节点本机插入测试数据,221000条/秒

1节点非本机插入测试数据,141000条/秒

2节点非本机插入测试数据, 254000条/秒

3节点非本机插入测试数据,364000条/秒

3节点带本机插入测试数据,398000条/秒

▪  低延迟查询

▪  采用小表复制,大表分区的方式,增加查询速度。

▪  物化视图,提前将要查询的数据准备好。

▪  存储过程分区,是数据查询在同一个分区中执行,避免了分区间数据合并。测试使用JDBC和存储过程两种,使用以下sql语句去测试,表中的数据27G,86259186条,执行次数为10次

1、某产品启动次数

  • SQL: select count(deviceid) from launch where productid=?
  • JDBC耗时:Metric [sum=5874563992, count=10, max=1457626336, min=477680456, avg=587456399.20]
  • 存储过程耗时:Metric [sum=5187006918, count=10, max=905402629, min=465103666, avg=518700691.80]
  • 物化视图耗时:Metric [sum=333357540, count=10, max=320948437, min=1127532, avg=33335754.00]

2、某产品某平台某渠道启动次数

  • SQL: select count(deviceid) from launch where productid=?and partnerid=? and platformid=?
  • JDBC耗时:Metric [sum=6187240233, count=10, max=795528918, min=589158806, avg=618724023.30]
  • 存储过程耗时:Metric [sum=6006206182, count=10, max=666313021, min=582875884, avg=600620618.20]
  • 物化视图耗时:Metric [sum=15442859, count=10, max=2530485, min=1187813, avg=1544285.90]

3、某产品某平台某渠道的各操作系统启动次数

  • SQL: select osid, count(deviceid) from launch whereproductid=?  and partnerid=? and platformid=? group by osid;
  • JDBC耗时:Metric    [sum=6481552789, count=10, max=737669723, min=631086276, avg=648155278.90]
  • 存储过程耗时:Metric [sum=6322020300, count=10, max=648747721, min=615618680, avg=632202030.00]
  • 物化视图耗时:Metric [sum=27447446, count=10, max=9755614, min=1533927, avg=2744744.60]

▪  分布式

  • 数据自动分区,跨分区查询自动聚合,增加节点自动均衡数据,不过在测试的时候发现,有可能会导致当前正在执行的事务失败。

▪  高可用

  • commandLog,记录每条命令的操作,即使是错误的命令,重放时依然执行。很耗资源,每秒写入100MB。
  • 快照,主动或定时的将数据持久化。
  • k-safe,数据在其他节点有备份。

Leave a comment

随时欢迎您 联系我们