随着基于文档数据库的NoSQL运动的发展,我最近开始关注MongoDB.我注意到,如何将项目视为"文档"有着惊人的相似性,就像Lucene(以及Solr的用户)所做的那样.
所以,问题是:Why would you want to use NoSQL (MongoDB, Cassandra, CouchDB, etc) over Lucene (or Solr) as your "database"?
我(我相信其他人)在寻找答案时,会对它们进行深入的比较.让我们一起跳过关系数据库讨论,因为它们有不同的用途.
Lucene提供了一些重要的优势,比如强大的搜索和权重系统.更不用说Solr中的方面了(Solr很快就会集成到Lucene中,耶!).您可以使用Lucene文档来存储ID,并像MongoDB一样访问文档.将其与Solr混合,现在就可以得到一个基于Web服务的负载平衡解决方案.
在讨论MongoDB类似的数据存储和可伸缩性时,您甚至可以对Velocity或MemCached等进程外缓存提供程序进行比较.
MongoDB的限制让我想起了使用MemCached,但我可以使用微软的Velocity,并拥有比MongoDB更强大的分组和列表收集能力(我认为).无法比在内存中缓存数据更快或更具可扩展性.就连Lucene也有内存供应商.
MongoDB(和其他一些)确实有一些优势,比如它们的API易于使用.新建一个文档,创建一个id,然后存储它.完成.又好又简单.