首页 文章

为什么像Lucene / Solr这样的文档存储不包含在NoSQL会话中?

提问于
浏览
61

我们所有人最近都遇到了最近对无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)来构建我构建的解决方案,或者我是否应该对这些其他选项进行更多的研究 .

6 回答

  • 13

    在进行了更多Google搜索之后,我认为这个文档总结得很好:

    https://web.archive.org/web/20100504055638/http://www.lucidimagination.com/blog/2010/04/30/nosql-lucene-and-solr/

    例如,Lucene / Solr是NoSql并且可以被认为是NoSql 's more mature 1539952 . It just does not get the NoSql hype it deserves because it didn'中的一个发明术语"no-SQL"并且其用户不使用该术语,因此炒作机器忽略了它 .

  • 1

    我认为solr / lucene最相关的特性是从nosql列表中删除的,因为直到最近,使lucene作为实时系统工作才是一种痛苦 . 任何高性能应用程序的通常工作流程是批量索引增量更新,例如每5分钟更新一次索引 .

  • 0

    我认为stimpy77 is partly right on the NoSQL being a branding thing . 但是,NoSQL意味着我很容易获得标签车的文件,并将所有人拉回来 . 与依赖包含fq = tag:'car'的搜索查询相对应 . 搜索越来越强大,关系越少,但关系越多,像CouchDB和兄弟这样的数据存储就越好 . 这就是为什么你仍然看到CouchDB和朋友与Solr配对,反之亦然!让每个人做最好的事情 .

    当然,这并不是说你无法利用在Solr中存储源数据,这可以是一个强大的工具!

  • 2

    我曾经听过作家Ursula K. LeGuin关于小说创作的采访 . 面试官问她关于不同类型写作的作者 . 是什么让一个作家成为浪漫主义作家,另一个成为神秘作家,另一个成为科幻作家? LeGuin回答说:

    类型是关于营销,而不是关于内容 .

    这是一个令人大开眼界的声明 .

    我认为这同样适用于技术解决方案 . NoSQL运动引起了人们的注意,因为它现在充满了营销能量 . 像Hadoop,CouchDB,MongoDB这样的NoSQL数据存储有商业投资支持它们,推动他们的解决方案成为新的,创新和令人兴奋的,以便他们可以发展他们的业务 . "NoSQL"这个词是 marketing brand ,可以帮助他们解释它们的 Value .

    你是对的,Lucene / Solr在技术上与NoSQL文档存储非常相似:它是一个非规范化的文档包(它们的术语),其中的字段在文档集合中不一定一致 . 它以复杂的方式编制索引,允许您搜索所有字段或特定字段 .

    但这并不是Lucene用来解释其 Value 的流派 . 他们没有相同的使命来发展市场和业务,因为他们是由Apache基金会管理的 . 他们很乐意专注于全文搜索的用例,即使该技术可以用于其他方式 . 他们遵循软件成功的宗旨:做一件事,做得好 .

  • 73

    在我看来,操作方面没有sql和solr之间的主要区别如下 .

    • Solr需要一个中间数据存储(数据库或XML文件)而不是nosql本身就是一个直的数据存储

    • 你不能对solr进行持续写入(solr 4.0似乎带来了支持),你只能在每2分钟和200条记录的最大值上进行索引(这对于高吞吐量写入来说非常慢,并且你被迫进行中间存储) .

    • 当您更改文档中存储的内容时,需要更改/定义架构 . NoSQL没有这样的定义 .

    • Solr索引在其索引大小增加时具有性能影响而NoSQL针对它进行了优化(或声称为:)

    • Solr捆绑了潜在的lucene搜索算法,但是在NoSQL中你需要构建它们,这适用于solr提供的宏观分面搜索或快速文档搜索 .

  • 4

    最后但几点,它的差异不是这里提到的差异作为solr从NoSQL中消失的营销策略

    Lucene / Solr - Iam将使用Solr,因为Solr在内部使用lucene并具有附加功能 . 所以Solr基本上是用新的constume升级到Lucene .

    • Solr主要用于为搜索引擎创建构面和索引纯文本 .

    • Solr可以使用大多数数据库来存储其数据 . 将数据保存在solr中是不一致的,因为它直接使用磁盘 .

    • 与Solr相比,NoSQL数据库易于学习 . Solr或多或少地具有许多配置和概念(例如:Fields) .

    • 性能是我们必须考虑的事情 . 与其他NoSQL数据库相比,Solr提供了高性能 .

    Note: 将Solr与某些数据库相结合可提供最佳性能 .

    Summary: Solr也是一个NoSQL数据存储区,它是所有NoSQL数据库的前身 . 哪个没有得到别人的炒作 . 但由于其性能和功率,仍然在现场 .

相关问题