为什么像Lucene / Solr这样的文档商店没有包含在NoSQL对话中?
我们所有人最近都遇到过最近的非SQL解决scheme的炒作。 MongoDB,CouchDB,BigTable,Cassandra和其他已被列为非SQL选项。 这是一个例子:
http://architects.dzone.com/articles/what-nosql-store-should-i-use
但是,三年前,一名同事和我正在使用Lucene.NET,因为它似乎适合于非SQL的描述。 我们没有使用它只是为了用户input的search查询; 我们用它来使一些重新索引的RDBMS表格数据非常高效。 我们实现了自己的.NET等价于Solr的服务来pipe理这些索引并使之可以被调用。 当我离开公司时,团队转向了Solr本身。 (对于那些不了解的人,Solr是一个Web服务,它使用REST可调用的查询和索引转储来包装Lucene。)
我不明白的是,为什么Solr不包括在没有SQL解决scheme的典型列表中? 我在这里错过了什么? 我认为Solr和CouchDB等没有可比性的技术原因,事实上我明白CouchDB使用Lucene作为它的数据存储(yes?),但是什么使得Solr不合格呢?
我并不是要求某种Solr fanboy或任何东西,我只是不明白为什么Solr等不符合no-SQL的定义,如果Solr在技术上符合定义,那么它可能会如何人们噗噗呢? 我在问,因为我很难确定我是否应该继续使用基于Lucene的解决scheme(如Solr)来构build解决scheme,或者如果我真的需要使用这些其他选项进行更多的研究。
我曾经听过关于小说写作的作者乌苏拉·K·莱金的采访。 面试官问她有关从事不同文体工作的作者。 是什么让一个作者成为浪漫作家,另一个是一个神秘作家,另一个是一个科幻作家? LeGuin解释道:
stream派是关于市场营销,而不是关于内容。
这是一个令人大开眼界的声明。
我认为这同样适用于技术解决scheme。 NoSQL运动正在吸引注意,因为它现在充满了营销能量。 像Hadoop,CouchDB,MongoDB这样的NoSQL数据存储都有商业企业的支持,将他们的解决scheme推向新的,创新的和令人兴奋的,以便他们能够发展业务。 “NoSQL”一词是一个营销品牌 ,可以帮助他们解释自己的价值。
你是对的,Lucene / Solr与NoSQL文档存储在技术上非常相似:它是非规范化的文档包(他们的术语),其字段在整个文档集合中不一定是一致的。 它以复杂的方式编制索引,以便您可以search所有字段或特定字段。
但这不是Lucene用来解释其价值的types。 由于他们是由Apache基金会pipe理的,所以他们没有同样的使命来发展市场和业务。 他们很乐意专注于全文search的用例,即使这种技术可以用于其他方面。 他们遵循软件成功的宗旨:做一件事,做得好。
在做了更多的谷歌search之后,我认为这个文档总结得非常好:
例如,Lucene / Solr 是 NoSql,可以被看作NoSql更成熟的“前辈”之一。 它只是没有得到应有的NoSql炒作,因为它没有发明术语“没有SQL”,它的用户不使用这个术语,所以炒作机器忽视了它。
我认为solr / lucene最相关的特性是从nosql列表中删除,因为直到最近,使lucene作为一个实时系统工作是一个痛苦。 任何高性能应用程序的通常工作stream程都是为批量增量更新编制索引,并且每5分钟更新一次索引。
我认为stimpy77在NoSQL作为一个品牌的东西是部分正确的 。 而且,NoSQL意味着它是一个数据存储平台,比基于SQL的解决scheme更简单/更简单。 我认为,虽然Solr / Lucene共享某些方面(它们存储数据),但它真的错过了认为Solr / Lucene可以用作任何有关系的主要数据存储。 当然,很多文件都可以扔进去,强大的search把它们拉回来。 但是一旦你想要关系,那么其他人(比如CouchDB和其他人)就可以更好地进行查询。 在这种情况下,search是一个绷带解决scheme。 想一想用例“查找所有标记为单词”car“的文档。 如果我的数据中有一些结构,那么我很容易拿到标签车的文件,并把所有人拉回来。 与依靠包含fq = tag:'car'的search查询。 search越是越强大,你拥有的关系越less,但是关系越多,像CouchDB和弟兄们这样的数据存储就越好。 这就是为什么你仍然看到CouchDB和朋友与Solr配对,反之亦然! 让每个人都做到最好。
当然,这并不是说你不能将你的源数据存储在Solr中,这可能是一个强大的工具!
在我看来,在操作上没有sql和solr的主要区别是下面的。
- Solr需要一个中间数据存储(数据库或XML文件),而nosql本身是一个直接的数据存储。
- 你不能对solr进行一个常量写操作(solr4.0似乎会带来这种支持),你只能在每2分钟和200条logging的最大值处编制索引(对于高吞吐量写操作非常缓慢,而你被强制作为中间存储) 。
- 当您更改存储在文档中的内容时,您需要更改/定义模式。 NoSQL没有这样的定义。
- 当索引大小增长时,索引索引具有性能意义,而NoSQL为其优化(或声称是:))
- Solr有捆绑的底层lucenesearchalgorithm,但在NoSQL中需要构build它们,这适用于由solr提供的华丽的search或快速的文档search。
最后却没有几点,它与这里提到的不同,就是Solr从NoSQL走出来的营销策略
Lucene / Solr – Iam会使用Solr,因为Solr在内部使用lucene并具有附加function。 所以Solr基本上是用新的constume升级到Lucene的。
-
Solr主要用于为search引擎创build构面和索引明文。
-
Solr可以使用大部分数据库来存储数据。 由于直接使用磁盘,因此将数据保存在solr中是不一致的。
-
与Solr相比,NoSQL数据库很容易学习。 Solr或多或less有很多configuration和概念(例如:Fields)。
-
性能是我们必须考虑的事情。 与其他NoSQL数据库相比,Solr提供了高性能。
注意:将Solr和一些数据库结合起来可以提供最好的性能。
简介: Solr也是NoSQL数据存储,它是所有NoSQL数据库的前身。 没有得到别人的炒作。 但由于其performance和实力,仍然在这个领域。
- select一个独立的全文search服务器:Sphinx或SOLR?
- 全文search引擎比较 – Lucene,Sphinx,Postgresql,MySQL?
- SQL Server 2008全文search(FTS)与Lucene.NET
- Lucene分析仪的比较
- 如何从Lucene TokenStream获取令牌?
- ElasticSearch,狮身人面像,Lucene,Solr,Xapian。 哪个适合哪种用法?
- 有没有一个很好的Node.js的索引/search引擎?
- Elasticsearch vs Cassandra与Elasticsearch与Cassandra
- 检索Solr查询中的特定字段?