Java的NoSQL数据库比较

6

我想了解有哪些NoSQL数据库/数据存储可用于Java,到目前为止我尝试了Project Voldemort。除了名字选择不当以外,目前看起来还不错。

我想了解其他这样的数据库系统。现在,在维基百科文章上有一些列出来的,以及它们项目页面上的一些文档。

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

你在实际项目中使用这些库的经验如何?基于那些经验,你会推荐使用哪一个,你不会推荐哪个,以及为什么?

我知道只有那些真正使用过多个这样的数据库的人才能回答这个问题,但我希望有人确实这样做过。

编辑:

通过“真实项目”,我主要指生产项目(但在缺乏这些情况下,任何大于作业或完成教程的项目都适用)。

我曾经使用过一个关系型数据库,其中有大量数据集中在一个单独的表中,该表已经为了性能而被去规范化。但是,由于整个约束等混乱情况,创建一个可用的集群在稳定性和性能方面都表现出了可怕的结果。

现在,我相当确定任何这些NoSQL系统很可能比我手头拥有的更好。但是,它们之间肯定存在差异。无论是在文档、版本稳定性、社区、易用性还是其他方面...而且有许多巨人。哪个是最佳选择? :D


说实话,我个人没有使用过noSQL数据库,但我的一个同事使用了MongoDB并表示他对它印象深刻。他没有说出具体原因,但它似乎非常受欢迎,值得一试。 - darioo
我发现这篇来自亚马逊的论文非常有启发性:http://s3.amazonaws.com/AllThingsDistributed/sosp/amazon-dynamo-sosp2007.pdf。在那之后,我寻找了一篇看起来类似于论文描述的论文,并选择了Cassandra。我欣赏它优美的对称性。 - Don Branson
你的项目有多“实际”?地球上最大的数据库不使用SQL:它们要么是“BigTables”(或类似的东西),要么是“键/值存储”。 对我来说,这表明了SQL及其无法处理真正大型数据集的能力;) 而且,不,人们不需要同时使用过两者:你只需要站在巨人的肩膀上。Google就是其中之一 ;) - SyntaxT3rr0r
感谢您的反馈和有用的材料。我更新了我的问题,使其更加具体。 - Goran Jovic
正如Webinator所指出的那样,有很少的实际实现者同时具备两者或任何NoSQL经验。请查看此处是否可以回答您的问题:http://nosql-database.org/links.html - Aravind Yarram
3个回答

3
也许最著名的Java NoSQL解决方案是Cassandra。它具有一些超越Voldemort的功能(Order-Preserving Partitioner允许范围查询;值的BigTable风格结构);但也缺少其他功能(没有备用存储后端或版本时钟进行版本控制)。 它的性能对于快速写入更为优化,但它最大的优势可能在于可以通过添加新节点轻松地进行水平扩展(这是V比较静态的地方)。
与MongoDB相比,它的数据模型非常简单,通常没有必要使用超过键/值抽象的内容(也就是说,在客户端处理数据映射,存储序列化对象)。 它具有完全复制和分布功能,不像某些k/v存储(例如couchdb,据我所知)。

我认为MongoDB的数据模型并不复杂。它基本上就是JSON,这个概念大多数开发人员已经熟悉了。 - CountCet
我的意思是MongoDB的功能更加丰富,因此可以实现更多的功能——并不是说它过于复杂(也不是说V模型由于简单性而更好)。 - StaxMan

3

我们一直在使用HBase作为我们项目的存储系统。我们的经验是:

  • 社区非常活跃,人们乐于助人。
  • 对于开发人员来说,伪分布式或独立模式下的安装过程相当容易。
  • 我们将其用作集成测试的单元测试。
  • 安装一个集群也很容易,但与其他NoSQL相比,它需要安装更多的组件。
  • 管理方面还在进行中,所以无法提供太多信息。
  • 不要将其用于类似于SELECT查询的SQL操作,我们使用Apache Solr。
  • 为了使开发和测试更加简化,我们推出了一个简单的对象映射器 - https://github.com/smart-it/smart-dao
  • 我选择HBase的原因是,像其他NoSQL一样,它通过设计解决了分片和扩展的问题,这在长期运行中更加容易实现。

2

如果不了解你的使用情况,很难确定一个好的选择。很大程度上取决于您熟悉的数据模型以及符合您需求的模型类型,如键值存储、文档导向、列导向等。另一个重要因素是产品的扩展性和它们如何处理可用性/一致性权衡。

我喜欢MongoDB。我喜欢它支持的查询功能和文档导向的数据模型。它适用于我遇到的许多问题。正如最近的MongoSV活动所展示的那样,有着伟大(大写G)的社区。

最好的方法是选择3个不同的产品进行评估。我还建议看看是否能找到一些在会议上演讲并分享他们成功经验的公司。MongoSV的视频即将推出。


这主意不错。我可能会进行比较。基于这个和其他帖子的内容,候选数据库可能是MongoDB、Cassandra、HBase和Voldemort。 - Goran Jovic
我一直向人们推荐这篇博客,因为我觉得它写得很好,可以让你对应该考虑哪些选项有一个很好的想法。http://blog.mongodb.org/post/475279604/on-distributed-consistency-part-1 - CountCet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接