Java的NoSQL数据库比较

时间:2010-12-06 20:27:42

标签: java comparison nosql

我想了解更多关于可以从Java使用的NoSQL数据库/数据存储的信息,到目前为止,我尝试了Project Voldemort。除了选择的名字,到目前为止似乎很好。

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

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

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

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

编辑:

通过“真实项目”,我主要是指一个正在制作的项目(但是如果没有比作业或完成的教程更大的任何东西)。

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

现在,我很确定这些NoSQL系统中的任何一个都可能是我所拥有的更好的选择。但是,它们之间也必须存在差异。无论是文档,版本之间的稳定性,社区,易用性等等......还有很多巨头。哪些人可以选择? :D

3 个答案:

答案 0 :(得分:3)

我们一直在与HBase合作开展项目。我们的经验是 -

  • 社区非常有活力,非常有帮助
  • 在伪分布式或独立模式下,开发人员的安装过程非常简单
  • 我们一直将它用于集成测试,如单元测试
  • 安装集群也很简单,但是比较其他一些NoSQL,它安装的组件比其他组件要多。
  • 管理 - 仍在继续,因此无法说些什么。
  • 不要像SELECT查询那样将它用于SQL,因为我们使用的是Apache Solr
  • 为了使开发和测试更容易,我们提出了一个简单的对象映射器 - https://github.com/smart-it/smart-dao
  • 我选择的原因是HBase,就像其他NoSQL一样,解决了分片,按设计进行缩放,从长远来看更容易实现,而且看起来很好。

答案 1 :(得分:3)

也许最着名的Java NoSQL解决方案是Cassandra。它具有Voldemort之外的一些功能(Order-Preserving Partitioner允许范围查询; BigTable样式结构的值);并且缺少其他(没有备用存储后端或版本时钟版本)。 它的性能对于快速写入来说更为理想,但它最大的优势在于可以通过添加新节点(V更静态)来水平扩展。

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

答案 2 :(得分:2)

如果不确切知道你的用例是什么,很难找到一个好的选择。其中很大程度上取决于您认为哪种数据模型适合您的需求。您拥有键值存储,面向文档,面向列等。另一个重要因素是产品需要扩展以及如何选择处理可用性/一致性权衡。

我喜欢MongoDB。我喜欢它支持查询的方式,我喜欢面向文档的数据模型。它适合我似乎遇到的许多问题。在最近的MongoSV活动中有一个Great(有大写G)社区。

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