简单介绍一下HBase、Cassandra、Voldemort、Redis、VoltDB、MySQL
hbase
1.简介:
HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起大规模结构化存储集群
2.HBase和RDBMS的关系
RDBMS(Relation DabaBase Management System-关系数据库):由关系模型构成的数据库就是关系数据库。关系数 据库由包含数据记录的多个数据表组成,用户可在有相关数据的多个表之间建立相互联系。在关系数据库中,数据被分散到不同的数据表中,以便使每一个表中的数据只记录一次,从而避免数据的重复输入,减少冗余。
1)关系数据库的主要特点:
a.关系系中的每个属性必须是不可分割的数据单元(即表中不能再包含表)。
b.关系中的每一列元素必须是类型相同的数据。
c.同一个关系中不能有相同的字段(属性),也不能有相同的记录。
d.关系的行、列次序可以任意交换,不影响其信息内容。
2)Hbase里面有以下2个主要概念:
Rowkey: Hbase 中的记录是按照rowkey来排序的;因此想用hbase存储数据设计好row-key很重要
Column family:(列族)是在系统启动之前预先定义好的;可有多个列簇,可动态增加,一个列簇可包含多个列
Hbase优缺点:
1.不支持条件查询以及orderby等查询;
2.列可以动态增加,列为空则不存储数据,节省存储空间;
3.会自动切分数据;
4.可以提供高并发读写操作的支持;
3.表解析
row-key:hbase是基于列的存储模式,所谓的基于列(HBase)就是基于row-key的存储模式,row-key 相当于关系数据库表的主键
查询的时候根据row-key去查询
列簇:hbase表中的每一列都归属为一个列簇,列簇是表的schema的一部分(列不是),必须在使用表之前定义,列名都是以列簇为前缀
如:Column family:test1(test1为列)
Column family:test2
如上:test1,test2 都是列簇 Column family 的列
*访问控制、磁盘和内存的使用统计都是在列族层面进行的。
时间戳:HBase中通过row和columns确定的为一个存贮单元称为cell。
每个 cell都保存着同一份数据的多个版本。版本通过时间戳来索引。
时间戳的类型是 64位整型。时间戳可以由hbase(在数据写入时自动 )赋值,
此时时间戳是精确到毫秒的当前系统时间。时间戳也可以由客户显式赋值。
如果应用程序要避免数据版本冲突,就必须自己生成具有唯一性的时间戳。
每个 cell中,不同版本的数据按照时间倒序排序,即最新的数据排在最前面。
当你插入一个数值的时候,如果不手工写时间戳,系统会自动生成一个。当你在hbase shell下scan某个具体表的时候,可以看到一大堆的时间戳
4.优缺点
a.列的可以动态增加,并且列为空就不存储数据,节省存储空间.
b.Hbase自动切分数据,使得数据存储自动具有水平scalability.
c.Hbase可以提供高并发读写操作的支持
d.不能支持条件查询,只支持按照Row key来查询
e.暂时不能支持Master server的故障切换,当Master宕机后,整个存储系统就会挂掉.
cassandra
Apache Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身。Cassandra使用了Google BigTable的数据模型,与面向行的传统的关系型数据库不同,这是一种面向列的数据库,列被组织成为列族(Column Family),在数据库中增加一列非常方便。对于搜索和一般的结构化数据存储,这个结构足够丰富和有效。
Cassandra的系统架构与Dynamo一脉相承,是基于O(1)DHT的完全P2P架构,与传统的基于分片的数据库集群相比,Cassandra可以几乎无缝地加入或删除节点,非常适于对于节点规模变化比较快的应用场景。
和其他数据库比较,Cassandra有三个突出特点:
模式灵活 :使用Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部署上。
真正的可扩展性 :Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。
多数据中心识别 :你可以调整你的节点布局来避免某一个数据