想到大数据,你第一个会想到Google's Bigtable,其次就是根据其思想设计的开源数据库HBase。除此之外,你还知道其它的类似的开源数据库呢?我简要描述了其它的开源数据库,仅供了解。
HBase
简述· 编程语言: Java
· 主要关注点: 上亿级的行百万级的列数据 Billions of rows X millions of columns
· 许可证(License): Apache
· 协议(Protocol): HTTP/REST (也有 Thrift)
· 概要:模型化谷歌大表
使用Hadoop HDFS作为数据存储
Hadoop Map/reduce 框架
通过服务器端的扫描和过滤来实现查询术语推送
实时查询优化
高性能的Thrift网管
HTTP 支持XML, Protobuf, 和二进制(binary)
基于Jruby shell
配置文件的改动和较小的升级都会滚动重启
能够像MySQL一样随机访问系统的性能
一个集群可以由几个不同类型的节点组成
最佳使用情形: 在大数据集上,Hadoop可能依旧是最佳的方式来运行Map/Reduce 任务,使用HDFS作为数据存储。
使用场景: 搜索引擎,分析日志数据,也可以用在任何需要扫描大且少量关联的二位表。
Cassandra
简述· 编程语言 : Java
· 主要关注点 : 最佳的大数据和Dynamo
· 许可证(License) : Apache
· 协议(Protocol) : Thrift 和 一般二进制 CQL3
· 概要:为分布式和重复(replication)而调优折中(N, R, W)
通过列和区间关键字查询 (需要在你需要搜索的字段中建立标记体(indices))
大表的特性:列 , 列家族(column families)
能够被用来作为一个分布式哈希表,使用“像SQL”一样的语言,CQL(但是不能够JOIN)
数据可以设置过期(在INSERT中设置)
写能够比读更快(当读是磁盘绑定)
能够使用Hadoop的Map/reduce
相对于Hadoop/HBase来说,所有的节点是相似的
跨数据中心重复中表现得非常好并且数据可靠
最佳使用情形: 当你需要的写多于读,比如日志操作。
最佳使用场合: 银行, 金融业,数据分析业务。
Hypertable
简述· 编程语言: C++
· 主要关注点 : 更快,比HBase更小
· 许可证(License) : GPL 2.0
· 协议(Protocol) : Thrift, C++库, or HQL shell
· 概要: 对谷歌大表设计的实现
运行在Hadoop的HDFS上
使用自己独有的,像SQL一样的语言HQL
能够通过关键字,单元格来搜索,或者是通过列家族(column families )的值
搜索能够限定到 key/column区间
保留最近历史值
表有命名空间
能够使用Hadoop的Map/reduce
最佳使用情形: 如果你需要一个更好的HBase
最佳使用场合: 使用情况与HBase一样,即搜索引擎,分析日志数据,也可以用在任何需要扫描大且少量关联的二位表。
Accumulo
简述· 编程语言: Java 和C++
· 主要关注点 : A BigTable with Cell-level security
· 许可证(License) : Apache
· 协议(Protocol) : Thrift
· 概要:另一种大表的克隆版,也运行在Hadoop之上
单元格级别的安全访问
比内存能够允许的行还用大
使用C++ STL 来保持一个内存映射外在的Java
Map/reduce使用Hadoop设备,如ZooKeeper 等
一些服务器端的编程
最佳使用情形: 如果你需要一个不同的HBase
最佳使用场合: 使用情况与HBase一样,即搜索引擎,分析日志数据,也可以用在任何需要扫描大且少量关联的二位表。