如何决定使用哪种NoSQL技术?

时间:2010-09-17 13:38:19

标签: mongodb neo4j hbase graph-databases nosql

MongoDB(基于文档),HBase(基于列)和Neo4j(对象图)的优缺点是什么?

我特别想知道每个用例的一些典型用例。

What are good examples of problems that graphs can solve better than the alternative?

也许任何Slideshare或Scribd值得演示?

6 个答案:

答案 0 :(得分:48)

MongoDB

可扩展性:高度可用且一致,但在关系和许多分布式写入方面很糟糕。它的主要好处是存储和索引无模式文档。文档大小上限为4mb,索引仅对有限深度有意义。见http://www.paperplanes.de/2010/2/25/notes_on_mongodb.html

最适合:深度有限的树状结构

用例:多种类型层次结构,生物系统学,图书馆目录

<强> Neo4j的

可伸缩性:高度可用但未分发。强大的遍历框架,用于节点空间中的高速遍历。仅限于数十亿个节点/关系的图表。见http://highscalability.com/neo4j-graph-database-kicks-buttox

最适合:深度图表,无限深度和周期性加权连接

用例:社交网络,拓扑分析,语义Web数据,推理

<强> HBase的

可扩展性:可靠,一致的存储容量,只需数PB甚至更多。支持具有有限稀疏属性集的大量对象。与Hadoop协同工作,用于大型数据处理作业。 http://www.ibm.com/developerworks/opensource/library/os-hbase/index.html

最适合:定向,非循环图

用例:日志分析,语义Web数据,机器学习

答案 1 :(得分:4)

我知道这看起来似乎是一个奇怪的地方,但是,Heroku最近对他们的noSQL产品感到疯狂,并且很好地概述了许多当前的项目。它绝不是Slideshare印刷机,但它将帮助您开始比较过程:

http://blog.heroku.com/archives/2010/7/20/nosql/?utm_medium=email&utm_source=EmailBlast&utm_content=619506254&utm_campaign=HerokuSeptemberNewsletter-VersionB&utm_term=NoSQLHerokuandYou

答案 2 :(得分:4)

查看此内容,以便快速比较NoSQL dbs:

http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

答案 3 :(得分:0)

您还可以评估多模型 DBMS,作为第二代NoSQL产品。使用多模型,您不必仅仅选择一个模型,而是选择多个模型。

第一个多模型NoSQL是OrientDB

答案 4 :(得分:0)

<强> MongoDB的:

MongoDB是与Relational数据库不同的文档数据库。该文档存储半结构化数据,如JSON对象(无架构)

主要功能:

  1. 架构可以改变应用程序的演变
  2. 完整索引
  3. 负载平衡&amp;数据分片
  4. 数据复制
  5. 一致性&amp; CAP理论中的分区(一致性 - 可用性 - 分区)
  6. 何时使用:

    1. 实时分析
    2. 高速记录
    3. 半结构化数据管理
    4. 何时不使用:

      1. 具有强ACID属性的高度事务性应用程序(原子性,一致性,隔离性和耐久性)。在这个用例中,RDBMS是首选。
      2. 操作涉及关系的数据集 - 外键等
      3. <强> HBASE:

        HBase是一个开源的非关系型分布式列族数据库

        主要功能:

        1. 它提供了 存储大量稀疏数据的容错方式 (在大量空或不重要数据集合中捕获的少量信息,例如查找一组20亿条记录中的50个最大项目,或者发现非零项目占大型集合的不到0.1%)
        2. 支持每行不同的变量架构
        3. 可以作为MapReduce作业的输入和输出
        4. 压缩,内存中操作和每列上的布隆过滤器(一种数据结构,旨在快速,高效地告诉您,一个元素是否存在于一个集合中) 5.在CAP上实现CP
        5. 何时使用HBase:

          1. 如果您按键加载数据,按键(或范围)搜索数据,按键提供数据,按键查询数据
          2. 按行存储不符合架构(变量架构)的数据
          3. 何时不使用HBase:

            1. 用于关系分析
            2. 全桌扫描
            3. 要汇总的数据,按行而不是列进行分析
            4. <强>的Neo4j:

              Neo4j是使用属性图数据模型的图数据库(数据存储为图形和节点以及与属性的关系)

              主要功能:

              1. 支持完整的ACID(原子性,一致性,隔离性和持久性)规则
              2. 使用Apache Lucence支持索引
              3. 无架构,自下而上的数据模型设计
              4. 由于可用于图形的紧凑存储和内存缓存,已实现高可扩展性
              5. 何时使用:

                1. 主数据管理
                2. 网络和IT运营
                3. 实时建议
                4. 欺诈检测
                5. 社交网络(如facebook)
                6. 何时不使用:

                  1. 批量查询/扫描
                  2. 如果您的应用需要分区&amp;数据分片
                  3. 在这个article

                    中查看各种NoSQL技术的比较

                    来源:

                    Wiki,Slide shareClouderaTutorials PointNeo4j

答案 5 :(得分:-1)

MongoDB上的相当不错的文章和NoRM(MongoDB的.net扩展) http://lukencode.com/2010/07/09/getting-started-with-mongodb-and-norm/