技术头条 - 一个快速在微博传播文章的方式     搜索本站
您现在的位置首页 --> 系统架构 --> 几种常见的NoSQL数据库关键特性列表

几种常见的NoSQL数据库关键特性列表

浏览:2592次  出处信息

NoSQL根据不同的数据模型,大致可以分为4类,分别是键值对存储(Key-Value Stores),列族存储(Column Families),文档数据库(Document Databases)以及图形数据库(Graph Databases)。四者从容量来讲,依次下降,而从复杂度来说则相反。

下面我根据最近看的一些资料,列出了目前常见的NoSQL数据库系统的一些主要特性,不一定都正确。另外,后面列了一些参考资料,偏向于PostgreSQL,个人觉得还不错。

  • Google BigTable

    • 由Google开发
    • 闭源产品
    • 通过SSTable实现持久化
    • 通过Chubby实现一致性
    • key-value存储
  • HBase

    • Apache基金项目,开发语言为Java
    • Apache License 2.0 许可
    • Google BigTable的开源版本
    • Hadoop的后端数据库
    • 通过HTTP REST,使用JSON协议通信
    • 着重于CP
    • 通过memtable/SStable实现持久化
    • 通过ZooKeeper实现一致性
    • 支持多主节点(multi-master)

  • Hypertable

    • 由Inkomi公司前员工发起,其中包括百度,Rediff,Zvents等公司赞助,后成立Hypertable公司。
    • GPLv2 许可
    • 开发语言为C++
    • Goole BigTable的另外一个开源实现,但比HBase要快
    • 着重CP
    • 通过Thrift通信
    • 通过memtable/SStable实现持久化
    • MVCC
    • 查询通过类似SQL的HQL
    • 通过Hypersace算法(Paxos算法)实现一致性
  • Apache Cassandra

    • Facebook开发,开发语言为Java
    • Apache License 2.0 许可
    • Google BigTable的数据模型,Amazon的基础架构
    • 面向列的key-value存储
    • 通过提交日志来实现持久化,类似PostgreSQL里的WAL
    • 跨节点的最后一致性(Eventually Consistent)实现
    • 着重于CAP里的AP
    • 客户端通过Thrift协议通讯,查询通过Map-Reduce
  • Apache CouchDB

    • 主要开发者包括BBCEngine Yard
    • Apache License 2.0 许可
    • 开发语言为Erlang
    • key-value 文档存储
    • 通过只附加(append-only)B+树实现持久化
    • MVCC
    • 着重于AP
    • 通过HTTP REST,使用JSON协议通信
    • 支持多主(multi-master)复制
    • 通过文档或JavaScript函数(Map-Reduce)进行查询
    • 无一致性实现,需要通过应用端解决
  • MongoDB

    • 主要开发者包括Sourceforge,Foursquare,Bit.lyGithub
    • 开发语言为C++
    • AGPLv3 许可
    • key-value 文档存储
    • 通过复制加快照实现持久化
    • 就地更新(in place update),无版本,无只附加日志
    • 着重于CP
    • 数据通过BSON(二进制JSON)存储
    • 自有的通信协议
    • 主从复制
    • 支持地理空间索引
  • Voldemort

  • Redis

    • VMWare开发,开发语言为ANSI C
    • key-value 文档存储
    • 内存数据库,通过快照实现持久化
    • 着重于CP
    • 无数据序列化格式
    • 类似POP3的自有通信协议
  • Tokyo Cabinet/Tyrant

    • 实现key-value 数据库管理,带网络守护进程(Tyrant)
    • 通过WAL和阴影拷贝分页实现持久化
    • 无数据序列化格式
    • 通信协议:Tokyo Tyrant Binrary Protocol,memcached compatible Text protocol,HTTP REST
  • Neo4j

    • neo technology开发
    • 开发语言为Java
    • AGPLv3 和商业 双重许可
    • 图形化数据库
    • 通过ZooKeeper实现HA
    • 通过REST,Java协议通信
    • 通过存储在磁盘的链接列表(linked-list)实现持久化
    • 节点遍历高效
    • 很好的纵向扩展性
    • 通过SPARQL查询

参考:

  1. PostSQL and NoSQL
  2. NoSQL databases: why,what and when
  3. Bigtable:A Distributed Storage System for Structured Data
  4. The Chubby lock service for lossely-coupled distrubuted systems
  5. 分布式系统工程实践
  6. Robert Hass blog
  7. Bruce Momjian: Postgres Blog
  8. Dave’s Postgres Blog
  9. DBMS Musings
  10. NOSQL Notes
  11. NoSQL Fan
  12. 阳振坤的博客
  13. 2ndQuadrant
  14. The Heart,The World

建议继续学习:

  1. hbase运维    (阅读:13696)
  2. 我对技术方向的一些反思    (阅读:9944)
  3. Key-Value小数据库tmdb发布:原理和实现    (阅读:7336)
  4. SQL vs NoSQL:数据库并发写入性能比拼    (阅读:6693)
  5. 让Redis使用TCMalloc,实现高性能NOSql服务器    (阅读:6115)
  6. SQL到NOSQL的思维转变    (阅读:5672)
  7. Using MySQL as a NoSQL    (阅读:5732)
  8. nosql数据库选型    (阅读:4880)
  9. 分享会-高性能nosql数据库redis    (阅读:4458)
  10. MySQL vs NoSQL 效率与成本之争    (阅读:3860)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
© 2009 - 2024 by blogread.cn 微博:@IT技术博客大学习

京ICP备15002552号-1