【问题标题】:Comparison of NoSQL Databases for Java用于 Java 的 NoSQL 数据库比较
【发布时间】:2010-12-06 20:27:42
【问题描述】:

我想了解更多有关可用于 Java 的 NoSQL 数据库/数据存储的信息,到目前为止,我尝试了 Project Voldemort。除了名字选得非常糟糕,目前看来还不错。

我想了解更多关于其他此类数据库系统的信息。现在,在wikipedia article 上有其中一些的列表,并且在他们的项目页面上有一些文档。

然而,与其比较作者提供的技术规格和教程,我想知道的是:

您在实际项目中使用这些库有什么经验?根据该经验,您会推荐使用哪一种,您不会推荐使用哪一种,为什么?

我知道只有实际使用过多个此类数据库的人才能够回答这个问题,但我希望有人这样做。

编辑:

我所说的“真实项目”主要是指生产中的项目(但如果没有这些项目,则适用于家庭作业或完成的教程)。

我使用了一个关系数据库,其中包含大量数据,其中大部分集中在一个表中,无论如何为了性能,该表都进行了非规范化。但是,由于约束等的混乱,创建一个可用的集群在稳定性和性能方面都表现出了可怕的结果。

现在,我很确定这些 NoSQL 系统中的任何一个都将是比我所拥有的更好的选择。但是,它们之间也必须有区别。无论是在文档、版本之间的稳定性、社区、易用性等等……而且还有很多巨头。选择哪个肩膀? :D

【问题讨论】:

  • 说实话,我个人没有使用过 noSQL 数据库,但我的一个同事使用过MongoDB,并说他对它印象深刻。没有说具体原因,但它似乎很受欢迎,可能值得一试。
  • 我发现这篇来自亚马逊的论文信息量很大:s3.amazonaws.com/AllThingsDistributed/sosp/…。在那之后,我寻找了一个与论文描述的相似的,并选择了 Cassandra。我欣赏它优雅的对称性。
  • 你的项目有多“真实”?这个星球上最大的数据库没有使用 SQL:它们要么是“BigTables”(或类似的),要么是“键/值存储”。对我来说,这充分说明了 SQL 及其无法处理 真正 大型数据集 ;) 而且,不,人们不需要同时使用这两种方法:你需要做的就是站在巨人的肩膀。谷歌就是其中之一;)
  • 感谢您的反馈和有用的材料。我更新了我的问题,使其更加具体。
  • 正如 webinator 指出的那样,很少有真正的实现者同时使用过这两种方法或具有任何 nosql 经验。看看您是否可以在这里回答您的问题:nosql-database.org/links.html

标签: java comparison nosql


【解决方案1】:

我们一直在为我们的项目使用 HBase。我们的经验是 -

  • 社区充满活力,非常乐于助人
  • 无论是伪分布式还是独立模式,开发人员的安装过程都非常简单
  • 我们一直将它用于单元测试等集成测试
  • 安装集群也很简单,但与其他一些 NoSQL 相比,它需要安装的组件比其他的要多。
  • 管理 - 仍在进行中,因此无法说太多。
  • 不要将它用于 SQL 之类的 SELECT 查询,因为我们使用的是 Apache Solr
  • 为了使开发和测试更容易,我们提出了一个简单的对象映射器 - https://github.com/smart-it/smart-dao
  • 我选择 HBase 的原因是,与其他 NoSQL 一样,HBase 解决了分片问题,通过设计扩展使其更容易从长远来看,而且这似乎很好。

【讨论】:

    【解决方案2】:

    也许最突出的 Java NoSQL 解决方案是 Cassandra。它具有 Voldemort 之外的一些功能(允许范围查询的订单保留分区器;值的 BigTable 样式结构);并且缺少其他(没有用于版本控制的备用存储后端或版本时钟)。 它的性能更适合快速写入,但它的最大优势可能在于它可以通过添加新节点轻松水平扩展(V 更静态一些)。

    与 MongoDB 相比,它的数据模型非常简单,而且通常没有必要使用更多的键/值抽象(即在客户端处理数据映射、存储序列化对象)。 它具有完整的复制和分发,不像一些 k/v 商店(couchdb,据我了解)。

    【讨论】:

    • 我觉得MongoDB的数据模型没那么复杂。它基本上是 JSON,这是大多数开发人员已经熟悉的概念。
    • 我的意思是 mongo 更丰富,它允许更多的功能——并不是说它过于复杂(也不是说 V 模型会因为简单而更好)
    【解决方案3】:

    如果不确切知道您的用例是什么,就很难确定一个好的选择。这在很大程度上取决于您对哪种数据模型感到满意并满足您的需求。您有键值对存储、面向文档、面向列等。另一个重要因素是产品具有可扩展性以及它们如何选择处理可用性/一致性权衡。

    我喜欢 MongoDB。我喜欢它支持查询的方式,也喜欢面向文档的数据模型。它适合我似乎遇到的许多问题。从最近的 MongoSV 活动中可以看出,有一个很棒的(大写字母 G)社区。​​p>

    您最好选择 3 种不同的产品并对其进行评估。我还想看看你是否能找到一些在会议上发表过演讲的公司,并讲述他们如何成功的故事。 MongoSV 的视频将很快推出。

    【讨论】:

    • 这是个好主意。我可能只是做个比较。根据这篇文章和其他帖子,候选者将是 MongoDB、Cassandra、HBase 和 Voldemort。
    • 我一直在向人们推荐这个博客,但我觉得它写得很好,可以让你很好地了解应该考虑哪些选项blog.mongodb.org/post/475279604/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 2021-09-23
    • 2011-01-27
    • 2012-08-23
    • 2023-03-08
    • 2014-06-16
    相关资源
    最近更新 更多