随着基于文档数据库的NoSQL运动不断发展,我最近研究了MongoDB。我已经注意到与Lucene(和Solr的用户)一样,如何将项目视为“文档”也有惊人的相似之处。
所以,问题是:为什么要在Lucene(或Solr)上使用NoSQL(MongoDB,Cassandra,CouchDB等)作为“数据库”?
我在寻找答案时(我确信其他人正在寻找)是对它们的一些深入比较。让我们一起跳过关系数据库的讨论,因为它们有不同的用途。
Lucene具有一些重要的优点,例如强大的搜索和权重系统。更不用说Solr中的方面了(是的,Solr即将集成到Lucene中,是的!)。您可以使用Lucene文档来存储ID,并像访问MongoDB一样访问文档。将其与Solr混合使用,您现在可以获得基于WebService的负载平衡解决方案。
在谈论类似的数据存储和MongoDB的可伸缩性时,您甚至可以对诸如Velocity或MemCached之类的进程外缓存提供程序进行比较。
关于MongoDB的限制使我想起使用MemCached,但是我可以使用Microsoft的Velocity,并且对MongoDB具有更多的分组和列表收集功能(我认为)。没有比在内存中缓存数据更快或可扩展的方法。甚至Lucene都有一个内存提供程序。
MongoDB(和其他)确实具有一些优势,例如易于使用它们的API。新建一个文档,创建一个ID,然后存储它。做完了 好,易于。