分布式数据库汇总

分布式数据库特点和集群规模汇总

  • 1、 Apache HBase :
  • 2、 Apache CouchDB :
  • 3、 MongoDB
  • 4、 Cassandra :
  • 5、 Sector/Sphere:
  • 6、 Riak:
  • 7、 hypertable:
  • 8、 Memcached Memcached:
  • 9、 Neo4J:
  • 10 集群规模汇总

1、 Apache HBase :

就是bigTable 支持数十亿列 Apache HBase是一个使用Java语言编写的、 以谷歌BigTable技术为基础的开源非关系型列式分布数据库, 可运行在HDFS文件系统之上。HBase提供了很好的存储容错能力和快速访问大量稀疏文件的能力。HBase遵循Apache 2许可证。
Hbase的优点:
1 列的可以动态增加, 并且列为空就不存储数据,节省存储空间.
2 Hbase自动切分数据, 使得数据存储自动具有水平scalability. 3 Hbase可以提供高并发读写操作的支持
Hbase的缺点:
1 不能支持条件查询, 只支持按照Row key来查询.
2 暂时不能支持Master server的故障切换,当Master宕机(死机) 后,整个存储系统就会挂掉.

2、 Apache CouchDB :

也是一个流行的开源NoSQL数据库, 它以文档方式(JSON) 存储数据。 CouchDB使用JavaScript语言作为查询语言, 集成MapReduce技术。 IBM Lotus Notes的开发人员Damien Katz在2005年构建了CouchDB, 用于大规模对象的数据存储系统。 CouchDB遵循Apache 2许可证, 英国广播公司(BBC) 使用CouchDB存储动态内容, 瑞士瑞信银行(Credit Suisse) 的商品部也采用了它。

couchDB,对它的特点做以下总结
一、 key/value型 分布式数据库。
二、 支持海量数据存储, 提供高于传统数据库性能优势。
三、 按照CAP原理: 支持分区容忍性和数据可用性。
四、 数据一致性:couchDB支持数据最终一致性。
五、 提供 rest 方式数据访问API, 个人感觉可以很大程度简化开发过程。
六、 支持不同节点数据库之间的数据增量复制。
七、 数据格式json, 更开放。
八、 贴切移动开发, 提供android和IOS版 客户端数据库。
九、 数据格式无限制, free‐schema, 系统扩展更便利。
十、 支持云计算。

总结:Apache CouchDB 项目还处于早期发展阶段。 CouchDB 是一款正在测试中的软件。CouchDB 在 Web 应用程序、 iPhone 应用程序和 Facebook 应用程序中越来越流行。 到目前为止, 强大的 wiki、 博客、 讨论论坛和文档管理软件都致力于改善关系数据库, 让它们能够更高效地储存文档形式的数据。 然而, 随着 CouchDB 的发行版越来越稳定,CouchDB 数据库越来越受到这些类型的软件的青睐, 从而避免了文档修订管理和不断变化的模式需求带来的烦恼。 总体而言, 到目前为止用户对 CouchDB 的反馈都是正面的, 尽管很多人觉得有必要在博客和论坛上讨论哪种数据库更好 — 关系型或面向文档型。 不过, CouchDB 从来没有打算取代关系数据库, 也不期望成为数据库开发的新标准。 当然, 在很多场景中, CouchDB 的简单性使其不能与 DB2 和 Oracle 相媲美。 不过在很多其他场景中, 数据库的简单性确实是必要的, 传统的 RDBMS 产品被过度吹捧了, 并且耗费的资源太多。

3、 MongoDB

是一种单独的系统数据库 MongoDB是一个基于分布式文件存储的数据库, 由C++语言编写。 旨在为Web应用提供可扩展的高性能数据存储解决方案。MongoDB是非常流行的JSON文档式NoSQL数据库, 许多公司都非常认同MongoDB。 MTV Networks、 craigslist和迪斯尼互动传媒集团, 纽约时报以及Etsy都是MongoDB的客户。 MongoDB遵循GNU Affero通用许可证, 语言驱动遵循Apache许可证, 10gen公司提供商业化的MongoDB许可证。 MongoDB 是一个面向文档的数据库系统。 使用 C++编写, 不支持 SQL, 但有自己功能强大的查询语法。 MongoDB 使用 BSON 作为数据存储和传输的格式。 BSON 是一种类似 JSON 的二进制序列化文档, 支持嵌套对象和数组。 MongoDB 很像 MySQL, document 对应 MySQL 的 row, collection 对应 MySQL 的 table。 MongoDB 是一个基于分布式文件存储的数据库。 由 C++语言编写。 意在为 WEB 应用提供可扩展的高性能数据存储解决方案。

它有一下几个特点:
1 .模式自由。 ( 像 json 数据一样可以自由的宽展)
2.支持动态查询。
3.支持完全索引, 包含内部对象。
4.支持查询。
5.支持复制和故障恢复。
6.使用高效的二进制数据存储, 包括大型对象(如视频等) 。
7.自动处理碎片, 以支持云计算层次的扩展性。
8.支持 RUBY, PYTHON, JAVA, C++, PHP,C#等多种语言。
9.文件存储格式为 BSON(一种 JSON 的扩展) 。

4、 Cassandra :

最好的BigTable和Dynamo 只支持java写入比查询多,只支持Java Cassandra 项目是 Facebook 在 2008 年开源出来的, 随后 Facebook 自己使用 Cassandra 的另外一个不开源的分支, 而开源出来的 Cassandra 主要被 Amazon 的 Dynamite 团队来维护, 并且 Cassandra 被认为是 Dynamite2.0 版本。 目前除了 Facebook 之外, twitter 和 digg.com 都在使用 Cassandra。 Cassandra 的主要特点就是它不是一个数据库, 而是由一堆数据库节点共同构成的一个分布式网络服务, 对 Cassandra 的一个写操作, 会被复制到其他节点上去, 对 Cassandra 的读操作, 也会被路由到某个节点上面去读取。 对于一个 Cassandra 群集来说, 扩展性能是比较简单的事情, 只管在群集里面添加节点就可以了。 我看到有文章说 Facebook 的 Cassandra 群集有超过 100 台服务器构成的数据库群集。 Cassandra 也支持比较丰富的数据结构和功能强大的查询语言, 和 MongoDB 比较类似, 查询功能比 MongoDB 稍弱一些, twitter 的平台架构部门领导 Evan Weaver 写了一篇文章介绍Cassandra: http://blog.evanweaver.com/articles/2009/07/06/up‐and‐running‐with‐cassandra/,有非常详细的介绍。 Cassandra 是一个混合型的非关系的数据库, 主要特点是它不是一个数据库, 而是由一堆数据库节点共同构成的一个分布式网络服务, 对 Cassandra 的一个写操作, 会被复制到其它节点上, 对 Cassandra 的读操作, 也会被路由到某个节点上面去读取。 Twitter 已经证实, 它计划将数据库迁移到 Cassandra。

5、 Sector/Sphere:

是一个分布式存储/ 分布式计算系统。 此系统工作在集群的普通计算机上。 Sector 提供了用户端工具, 来管理系统中数据的存储。 还提供了开发 API, 用来进行分布式数据计算的应用开发。 这是 2006 年启动的一个开源项目(C++), 包括 Sector 和 Sphere 两个子系统 Sector 是一个分布式存储系统, 能够应用在广域网环境下, 并且允 许用户以高速度从任何地理上分散的集群间摄取和下载大的数据 集。 另外, Sector 自动的复制文件有更高的可靠性、 方便性和访问 吞吐率。 Sector 已经被分布式的Sloan Digital Sky Survey 数据系统所使用。 Sphere 是一个计算服务构建在sector 之上, 并为用户提供简单的编 程接口去进行分布式的密集型数据应用。 Sphere 支持流操作语义, 这通常被应用于GPU 何多核处理器。 流操作规则能够实现在支持 MR 计算的应用系统上。

6、 Riak:

是一个去中心化的 key-value 存储服务器,提供一个灵活的 map/reduce 引擎,一个友好的 HTTP/JSON 查询接口。 优点: Riak 没有主节点的概念, 因此在处理故障方面有更好的弹性, Riak 的数据模型更加灵活。 Riak 的另一个优势是它是用 Erlang 编写的。 而 MongoDB 和 Cassandra 是用通用语言(分别为 C++和 Java) 编写, 因此 Erlang 从一开始就支持分布式、 容错应用程序, 所以更加适用于开发 NoSQL 数据存储等应用程序, 这些应用程序与使用 Erlang 编写的应用程序有一些共同的特征。

7、 hypertable:

是一个开源、 高性能、 可伸缩的数据库, 它采用与Google的Bigtable相似的模型。 在过去数年中, Google为在PC集群 上运行的可伸缩计算基础设施设计建造了三个 关键部分。 第一个关键的基础设施是Google File System( GFS), 这是一个高可用的文件系统, 提供了一个全局的命名空间。 它通过跨机器( 和跨机架) 的文件数据复制来达到高可用性, 并因此免受传统 文件存储系统无法避免的许多失败的影响, 比如电源、 内存和网络端口等失败。 第二个基础设施是名为Map-Reduce的计算框架, 它与GFS紧密协作, 帮 助处理收集到的海量数据。 第三个基础设施是Bigtable, 它是传统数据库的替代。 Bigtable让你可以通过一些主键来组织海量数据, 并实现高效的 查询。 Hypertable是Bigtable的一个开源实现, 并且根据我们的想法进行了一些改进。

8、 Memcached Memcached:

是一个高性能的分布式内存对象缓存系统, 用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数, 从而提供动态、 数据库驱动网站的速度。 Memcached 基于一个存储键/值对的 hashmap。 其守护进程 (daemon ) 是用 C 写的,但是客户端可以用任何语言来编写, 并通过 memcached 协议与守护进程通信。

9、 Neo4J:

Neo4j 是一个嵌入式, 基于磁盘的, 支持完整事务的 Java 持久化引擎, 它 在图像中而不是表中存储数据。 Neo4j 提供了 大规模可扩展性, 在一台机器上可以处理数十亿节点/关系/属性的图像, 可以扩展到多台机器并行运行。

10 集群规模汇总

分布式数据库汇总_第1张图片

你可能感兴趣的:(海量数据存储,hbase,mongodb,cassandra)