【问题标题】:How to decide which NoSQL technology to use? [closed]如何决定使用哪种 NoSQL 技术? [关闭]
【发布时间】:2010-09-17 13:38:19
【问题描述】:

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

我特别有兴趣了解每种应用的一些典型用例。

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

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

【问题讨论】:

  • 首先你需要知道你将拥有什么样的数据。

标签: mongodb neo4j hbase graph-databases nosql


【解决方案1】:

MongoDB

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

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

用例:不同类型层次结构、生物系统学、图书馆目录

Neo4j

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

最适合:具有无限深度和周期性加权连接的深度图

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

HBase

可扩展性: PB 级及以上的可靠、一致的存储。支持具有一组有限稀疏属性的大量对象。与 Hadoop 协同工作以进行大型数据处理作业。 http://www.ibm.com/developerworks/opensource/library/os-hbase/index.html

最适合:有向无环图

用例:日志分析、语义网数据、机器学习

【讨论】:

  • HBase 如何适用于无环图?它不是 Neo4J 之类的图形数据库
  • 凯龙星你怎么说?
  • 这个答案已经过时了。要获得最新的出色比较,请查看kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis 感谢 Eddie Wong 在下面的回答中指出这一点
【解决方案2】:

我知道这似乎是一个奇怪的地方,但是,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

【讨论】:

    【解决方案3】:

    查看此内容以一目了然地比较 NoSQL 数据库:

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

    【讨论】:

    • 这实际上是一个很好的资源,可以与新产品保持同步。太糟糕了,我不能再次投票赞成这个答案。
    【解决方案4】:

    您还可以评估 多模型 DBMS,作为第二代 NoSQL 产品。使用多模型,您不必在选择一种模型时做出所有妥协,而是选择一种以上的模型。

    第一个多模型 NoSQL 是OrientDB

    【讨论】:

      【解决方案5】:

      MongoDB:

      MongoDB 是文档型数据库,不同于关系型数据库。该文档存储半结构化数据,如 JSON 对象(无模式)

      主要特点:

      1. 架构可以随着应用程序的发展而变化
      2. 全索引
      3. 负载平衡和数据分片
      4. 数据复制
      5. CAP 理论中的一致性和分区(一致性-可用性-分区)

      何时使用:

      1. 实时分析
      2. 高速记录
      3. 半结构化数据管理

      何时不使用:

      1. 具有强 ACID 属性(原子性、一致性、隔离性和持久性)的高度事务性应用程序。在此用例中首选 RDBMS。
      2. 对涉及关系的数据集进行操作 - 外键等

      HBASE:

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

      主要特点:

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

      何时使用 HBase:

      1. 如果您正在按键加载数据、按键(或范围)搜索数据、按键提供数据、按键查询数据
      2. 按行存储不符合架构(可变架构)的数据

      何时不使用 HBase:

      1. 用于关系分析
      2. 全表扫描
      3. 要聚合的数据,按行而不是按列分析

      Neo4j:

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

      主要特点:

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

      何时使用:

      1. 主数据管理
      2. 网络和 IT 运营
      3. 实时推荐
      4. 欺诈检测
      5. 社交网络(如 facebook)

      何时不使用:

      1. 批量查询/扫描
      2. 如果您的应用程序需要对数据进行分区和分片

      看看这个article中各种NoSQL技术的比较

      来源:

      维基,Slide shareClouderaTutorials PointNeo4j

      【讨论】:

        【解决方案6】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-02-01
          • 1970-01-01
          • 2012-02-04
          • 1970-01-01
          • 2013-01-08
          • 1970-01-01
          • 2013-01-03
          • 2011-08-16
          相关资源
          最近更新 更多