我们所有人最近都遇到了最近对无SQL解决方案的大肆宣传.MongoDB,CouchDB,BigTable,Cassandra等已被列为无SQL选项.这是一个例子:
http://architects.dzone.com/articles/what-nosql-store-should-i-use
但是,三年前我和一个同事使用Lucene.NET似乎符合无SQL的描述.我们并没有将其用于用户输入的搜索查询; 我们使用它来使一些重新编制索引的RDBMS表数据非常高效.我们实现了自己的.NET等价于Solr服务,以管理这些索引并使它们可调用.当我离开公司时,团队切换到Solr本身.(对于那些不知情的人,Solr是一个Web服务,它使用REST可调用查询和索引转储来包装Lucene.)
我不明白的是,为什么Solr不计入典型的无SQL解决方案选项列表?我在这里错过了什么吗?我假设Solr与CouchDB等不相似的技术原因,实际上我理解CouchDB使用Lucene作为其数据存储(是吗?),但是什么使Solr失去资格?
我不是要求某种Solr粉丝或任何东西,我只是不明白为什么Solr之类的东西不符合no-SQL的定义,如果Solr在技术上确实符合定义,那么它有什么可能使得人们呸呸吗?我问,因为我很难确定是否应该继续使用基于Lucene的解决方案(如Solr)来构建我构建的解决方案,或者我是否应该对这些其他选项进行更多的研究.
我曾经听过作家Ursula K. LeGuin关于小说创作的采访.面试官问她关于不同类型写作的作者.是什么让一个作家成为浪漫主义作家,另一个成为神秘作家,另一个成为科幻作家?LeGuin回答说:
类型是关于营销,而不是内容.
这是一个令人大开眼界的声明.
我认为这同样适用于技术解决方案.NoSQL运动引起了人们的注意,因为它现在充满了营销能量.像Hadoop,CouchDB,MongoDB这样的NoSQL数据存储有商业投资支持它们,推动他们的解决方案成为新的,创新和令人兴奋的,以便他们可以发展他们的业务."NoSQL"这个词是一个营销品牌,可以帮助他们解释自己的价值.
你是对的,Lucene/Solr在技术上与NoSQL文档存储非常相似:它是一个非规范化的文档包(它们的术语),其中的字段在文档集合中不一定一致.它以复杂的方式编制索引,允许您搜索所有字段或特定字段.
但这并不是Lucene用来解释其价值的流派.他们没有相同的使命来发展市场和业务,因为他们是由Apache基金会管理的.他们很乐意专注于全文搜索的用例,即使该技术可以用于其他方式.他们遵循软件成功的宗旨:做一件事,做得好.
在进行了更多Google搜索之后,我认为这个文档总结得很好:
https://web.archive.org/web/20100504055638/http://www.lucidimagination.com/blog/2010/04/30/nosql-lucene-and-solr/
例如,Lucene/Solr 是 NoSql,可以被认为是NoSql更成熟的"前辈"之一.它只是没有得到它应得的NoSql炒作,因为它没有发明术语"no-SQL"并且其用户不使用该术语,因此炒作机器忽略了它.
我认为从nosql列表中删除的Solr / lucene最相关的特性是因为直到最近,使lucene用作实时系统还是很痛苦的。对于任何高性能应用程序来说,通常的工作流程是成批索引增量更新,例如每5分钟更新一次索引。