VoltDB开篇 简介
这是我在博客园开始的第一篇博客,也是抱着试一试的态度,试着写一些心得。
由于公司要做一个分布式数据库,有一定的noSQL特点,但也需要一定的关系能力,总之是一个难度比较大的项目,通过对各种产品的调研,决定在思路上借鉴voltDB的思想,我调试voltDB也有快一个月了,准备写一些系列的文章,下面照例是摘抄一些简介。
VoltDB是StoneBraker最新研究成果,是一个优化吞吐率的高性能集群开源SQL RDBMS,支持ACID。从硬件上看,VoltDB基于PC+以太网+本地存储;从体系结构上看,其内部是一个ShareNothing的内存数据库,通过并行单线程来保证事务一致性和高性能,所有事务被实现为Java存储过程,所有存储过程(事务)均全局有序,由于避免了锁的使用,因此可以保证每个事务在所有分区上并行执行完成后才继续执行下一个事务,事务不会乱序执行。存储过程内部支持分组、多路Join、聚合、函数等等,如果希望提高吞吐率,使用单事务多SQL可以有效提高吞吐率。VoltDB的可靠性通过冗余和自动恢复来保证。
VoltDB值得关注的一个特性是自动数据分区,数据表会被自动分配到集群节点。可以看成是传统Sharding的升级、整合版本。另外一个特性是自动快照,这样在一个事务内部无需进行IO操作,可以在微秒级别完成事务,据说性能提高50倍。第三个特性是异步事务提交。从某种意义上看,VoltDB是一个共享内存的集群,有些像此前有人提到的“Ram Cloud“。VoltDB的系统性能据说在几个节点就可以达到百万TPS VoltDB支持多节点并行事务处理,理论上不存在节点上限,不过VoltDB开发人员最大测试集群是20个节点。
目前VoltDB还存在不少限制,主要包括:(1)不支持动态修改Schema(2)增加节点需要停服(3)不支持xDBC(4)Adhoc查询性能不优化。
适用于如下应用:
Orders of magnitude better performance than conventional DBMS
Linear scalability
SQL as the DBMS interface
ACID transactions to ensure data consistency and integrity
High availability 24x7x365
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提供与键值数据库相当或者更好的事务吞吐能力
下一篇准备介绍下如何搭建调试环境
转载于:https://www.cnblogs.com/yuemenglong/archive/2011/05/26/2058266.html
VoltDB开篇 简介相关推荐
- IPv6技术系列①——开篇简介
写在开头 17年10月开启51cto博客之路,原想将自己所学所想,或者在各种不同情况下走过的坑,踩过的雷,能够利用51cto的平台和大家分享,作为马上步入工作岗位的大学生,我深深能够理解我们学生在 ...
- 数据库开篇简介整体常识
文章目录 简介 数据库 数据库管理系统 数据库应用程序 数据库管理员 数据库类型 关系型数据库 非关系数据库NOSQL 关系型数据库: 1.Oracle 2.DB2 3.SQL Server 4.MY ...
- NewSQL数据库VoltDB特性简介
VoltDB是一个革命性的新型数据库产品,被称作NewSQL数据库.它基于H-Store,号称比当前数据库产品的吞吐量高45倍,同时又具有很高的扩展性.它的特性主要有以下几点: Ø 高吞吐.低延迟: ...
- 魔术中的数学艺术系列讲座(一)——开篇简介
魔术中的数学艺术 白色 (1)魔术中的数学艺术 REC 白色 作者简介: 田汸,腾讯算法工程师,MatheMagician原创公众号作者.主攻NLP,擅长统计算法,数学建模.业余研究魔术16年,是资深 ...
- 魔术表演的核心秘密(一)——开篇简介
早点关注我,精彩不迷路! 在之前的一个魔术系列文章<魔术的逻辑(三)--明明是假的,但为何奇迹依旧美妙?>中,我们聊到了因为人脑的认知漏洞因此才有可能在眼前创造奇迹,以及其中利用常识作为基 ...
- 『TensorFlow2.0正式版』TF2.0+Keras速成教程·零:开篇简介与环境准备
此篇教程参考自TensorFlow 2.0 + Keras Crash Course,在原文的基础上进行了适当的总结与改编,以适应于国内开发者的理解与使用,水平有限,如果写的不对的地方欢迎大家评论指出 ...
- JQuery Smart UI 简介(六) — 框架设计【后篇】(数据接口、后台框架)[简介系列完结]...
上篇介绍了Smart UI的前台架构,本篇继续后面的内容 - Data Interface.Business Layout.DataAccess. Data Interface 数据接口,Smart ...
- eMMC5.1入门教程【1】eMMC简介与协议概览,有引脚详细定义很多是NC,参照STM32的FLASH写保护机制,emmc也有因为他是FLASH 的升级版本
目录 1 eMMC简介 1.1eMMC的外观图与引脚说明图 1.2eMMC的定义 1.3eMMC的基础操作 2 eMMC5.1协议 2.1 eMMC5.1协议文档的获取 2.2 eMMC的初始化 2. ...
- Android Launcher3分析——开篇
Android Launcher3分析--开篇 简介 Launcher就是一个Activity,Launcher的源码中也是继承的Activity.直观体现就是手机的桌面,当我们打开手机的时候,手机的 ...
最新文章
- 某口腔app发现了不友善词汇(f*ckMobile)
- 网站数据分析:基于用户细分的比较分析
- POJ 1486 Sorting Slides(二分图完全匹配必须边)题解
- vtk鼠标不交互_vtk 各种不同的鼠标交互方式
- 前端学习(3314):提取action
- 【EasyNetQ】- 发送接收
- C#关闭子窗口而不释放子窗口对象的问题解决
- ubuntu添加PPA(个人软件包)源
- Etherpad配置及管理功能
- linux卸载nvidia驱动
- html5做开心消消乐源代码,html开心消消乐源码
- CLRC66301国产替代,国产首颗全协议NFC芯片,可兼容A卡,B卡,F卡,15693卡,KK量级出货。
- Java Swing实现局域网QQ
- 《东周列国志》第四十九回 公子鲍厚施买国 齐懿公竹池遇变
- 回归分析beta值的标准_Beta值的基本原理及使用说明
- IBM推出企业信息安全框架
- Appwidget控件的使用
- 老郑学长 | 天津师范大学体育硕士怎么样
- LightGCN: Simplifying and Powering Graph Convolution Network for Recommendation【论文阅读笔记】
- 固态硬盘和机械硬盘区别-表格对比