IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

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

Linux|系统管理|WEB开发 2012-08-23 00:01:47 累计浏览 3,418 次
本机暂存

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. 使用deepseek进行Oracle恢复,引起重大故障 (2026-06-22 10:56:00)
  2. 接手一个只差临门一脚的数据库恢复 (2026-06-18 00:13:09)
  3. 我做了一个 AI 版的 StarRocks 升级风险扫描工具,直接帮我定位到一个风险 (2026-06-15 01:00:00)

查看更多 数据库 文章 →

建议继续学习

  1. HFile存储格式 (累计阅读 15,977)
  2. hbase运维 (累计阅读 14,924)
  3. hbase介绍 (累计阅读 12,368)
  4. HBase技术介绍 (累计阅读 8,077)
  5. SQL vs NoSQL:数据库并发写入性能比拼 (累计阅读 8,004)
  6. Redis作者谈Redis应用场景 (累计阅读 7,671)
  7. HBase随机写以及随机读性能测试 (累计阅读 7,548)
  8. Web应用的缓存设计模式 (累计阅读 7,444)
  9. Using MySQL as a NoSQL (累计阅读 7,111)
  10. SQL到NOSQL的思维转变 (累计阅读 6,848)