【发布时间】:2011-03-14 00:04:16
【问题描述】:
随着基于文档数据库的 NoSQL 运动不断发展,我最近关注了 MongoDB。我注意到与如何将项目视为“文档”有着惊人的相似之处,就像 Lucene(和 Solr 的用户)所做的那样。
那么,问题来了:为什么要使用 NoSQL(MongoDB、Cassandra、CouchDB 等)而不是 Lucene(或 Solr)作为“数据库”?
我(我相信其他人)在答案中寻找的是对它们的一些深入比较。让我们一起跳过关系数据库讨论,因为它们有不同的目的。
Lucene 提供了一些重要的优势,例如强大的搜索和权重系统。更不用说 Solr 中的方面(Solr 很快就会集成到 Lucene 中,耶!)。您可以使用 Lucene 文档来存储 ID,并像 MongoDB 一样访问文档。将它与 Solr 混合,您现在可以获得基于 WebService 的负载平衡解决方案。
在谈论 MongoDB 的类似数据存储和可扩展性时,您甚至可以比较 Velocity 或 MemCached 等进程外缓存提供程序。
MongoDB 的限制让我想起了使用 MemCached,但我可以使用 Microsoft 的 Velocity,并且比 MongoDB 拥有更多的分组和列表收集能力(我认为)。无法比在内存中缓存数据更快或可扩展。甚至 Lucene 也有内存提供程序。
MongoDB(和其他)确实有一些优势,例如 API 易于使用。新建一个文档,创建一个 id 并存储它。完毕。很好很容易。
【问题讨论】:
-
谢谢,但这并不能回答我的问题:我的数据库为什么要使用 MongoDB 而不是 Lucene?它们都处理文档,但 Lucene 有一些非常强大的搜索选项。 +1 虽然实际上是为了找到一个相关的问题。我在 Stackoverflow 上搜索了几次,但没有得出一个接近的比较。
-
你是如何使用 Lucene 的,它提供了类似于 MongoDB 的功能?您是否将其绑定到关系数据库进行存储?
-
@Philip:这是一个假设性问题。为什么不使用 Lucene 作为您的文档存储?您将获得更多的搜索能力和可扩展性(与 Solr 混合使用时,使 Lucene 更易于使用)。
标签: mongodb solr lucene memcached nosql