ChatGPT解决这个技术问题 Extra ChatGPT

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

我们所有人最近都遇到了最近大肆宣传的无 SQL 解决方案。 MongoDB、CouchDB、BigTable、Cassandra 和其他已被列为无 SQL 选项。这是一个例子:

http://architects.dzone.com/articles/what-nosql-store-should-i-use

然而,三年前,我和一位同事正在使用 Lucene.NET,因为它似乎符合 no-SQL 的描述。我们不仅仅将它用于用户输入的搜索查询;我们使用它使一些重新索引的 RDBMS 表数据具有极高的性能。我们实现了自己的 .NET sort-of-equivalent-to-Solr 服务来管理这些索引并使它们可调用。当我离开公司时,团队转而使用 Solr。 (对于那些不知道的人,Solr 是一种 Web 服务,它使用 REST 可调用查询和索引转储包装 Lucene。)

我不明白的是,为什么 Solr 不计入非 SQL 解决方案选项的典型列表中?我在这里错过了什么吗?我认为 Solr 无法与 CouchDB 等类似产品相比存在技术原因,实际上我理解 CouchDB 使用 Lucene 作为其数据存储(是吗?),但是什么使 Solr 不合格?

我不是在问某种 Solr 粉丝或任何东西,我只是不明白为什么 Solr 之类的东西不符合 no-SQL 的定义,如果 Solr 在技术上符合定义,那么它可能会做什么人呸呸呸呢?我之所以问,是因为我很难确定是否应该继续使用基于 Lucene 的解决方案(如 Solr)来构建我构建的解决方案,或者我是否真的应该对这些其他选项进行更多研究。


B
Bill Karwin

我曾经听过作家 Ursula K. LeGuin 关于小说写作的采访。采访者向她询问了从事不同写作类型的作者。是什么让一位作家成为浪漫作家,另一位成为神秘作家,另一位成为科幻作家? LeGuin 解释说:

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

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

我认为这同样适用于技术解决方案。 NoSQL 运动之所以受到关注,是因为它现在充满了营销能量。像 Hadoop、CouchDB、MongoDB 这样的 NoSQL 数据存储有商业企业支持,推动他们的解决方案新颖、创新和令人兴奋,这样他们就可以发展业务。 “NoSQL”一词是一个营销品牌,可以帮助他们解释自己的价值。

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

但这不是 Lucene 用来解释其价值的类型。他们没有相同的使命来发展市场和业务,因为他们是由 Apache 基金会管理的。他们很乐意专注于全文搜索的用例,即使该技术可以以其他方式使用。他们遵循软件成功的原则:做一件事,把它做好。


好想法,赞一个。但是CouchDB和Solr一样是Apache项目,CNET等很多商业场景都在使用Solr。因此,根据您关于商业企业与 Apache 的逻辑,除了前期消息传递(即“面对搜索”而不是“索引列/值存储”),我仍然不明白为什么 Solr 在无 SQL 空间。
CouchDB 由商业企业 Couchio 和 Cloudant 提供支持。 Damien Katz 是 CouchDB 的主要架构师,他是 Couchio 的创始人兼首席执行官。他只是碰巧将他的代码授予了 Apache 基金会。
RavenDB 广泛使用 Lucene,IIRC
J
Jon Davis

在做了更多的谷歌搜索之后,我认为这个文档总结得很好:

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”,而且它的用户不使用这个术语,所以炒作机器忽略了它。


查看 MUMPS,了解真正的 NoSQL 前辈! en.wikipedia.org/wiki/MUMPS
由于 NoSQL 通常被解释为“Not Only SQL”,因此 MUMPS 出现在一个根本无法补充 SQL 的时代。然而,参考和“怀旧”的荣誉(尽管这是在我的时代之前)。
下面是另一个可追溯到 1989 年的面向文档的数据库:en.wikipedia.org/wiki/Lotus_Notes#Database 我相信 Damien Katz 也在 IBM 从事 Lotus Notes 工作并非巧合。
Berkeley DB 和 ESENT 也可以被认为是 NoSQL。
上面的链接失效了,当前链接可能是 lucidworks.com/blog/nosql-lucene-and-solr
J
Jokin

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


C
Community

我认为stimpy77 is partly right on the NoSQL being a branding thing。而且,NoSQL 意味着它是一个比基于 SQL 的解决方案更简单/更容易的数据存储平台。而且我认为虽然 Solr/Lucene 共享某些方面(它们存储数据),但认为 Solr/Lucene 可以用作任何有关系的任何事物的主要数据存储,这确实是错误的。当然,可以将大量文档放入其中,强大的搜索功能会将它们拉回来。但是,只要您想要关系,那么其他诸如 CouchDB 和其他具有某种查询语法的人就会做得更好。在这种情况下,搜索是一种创可贴的解决方案。考虑用例“查找所有带有单词'car'标签的文档”。如果我的数据中有一些结构,那么我很容易获取标签汽车的文档,然后将所有人拉回来。与依赖包含 fq=tag:'car' 的搜索查询相比。拥有的关系越少,搜索就越强大,但关系越多,像 CouchDB 和 brethren 这样的数据存储就越好。这就是为什么您仍然会看到 CouchDB 和朋友与 Solr 配对,反之亦然!让每个人都做自己最擅长的事情。

当然,这并不是说您不能利用将源数据存储在 Solr 中,这可能是一个强大的工具!


“我认为 stimpy77 部分是正确的,因为 NoSQL 是一种品牌化的东西。”我认为这要归功于比尔·卡尔文。谢谢你。
关于您的观点,“NoSQL”的几个有意见的定义是它特别不强调关系完整性。 BigTable 是否支持关系数据?卡桑德拉有吗?诚然,关系很好,但它肯定不是大多数人同意的 NoSQL 定义的一部分。另一方面,Solr 确实支持“分面搜索”,这是一种多对多对多对多过滤的抽象方法。过滤不是关系数据,但它可以帮助子查询虚拟连接。
“[NoSQL 是] 一个比基于 SQL 的解决方案更简单/更容易的数据存储平台” 嗯,不是很难。这只是不同的。尤其是当您进入分布式系统、缺乏一致性和非 ACID 存储时,“简单”和“容易”是您首先失去的一些东西。
G
Gokul Muralidharan

在我看来,no sql 和 solr 在操作方面的主要区别如下。

Solr 需要一个中间数据存储(数据库或 XML 文件),而 nosql 本身是一个直接的数据存储。您不能对 solr 进行持续写入(solr 4.0 似乎提供了这种支持),并且您只能在每 2 分钟和 200 条记录的最大值处建立索引(这对于高吞吐量写入非常慢,并且您被迫使用中间存储) .当您更改文档中存储的内容时,您需要更改/定义架构。 NoSQL 没有这样的定义。 Solr 索引在其索引大小增长时具有性能影响,而 NoSQL 已针对它进行了优化(或声称是:)) Solr 捆绑了底层 lucene 搜索算法,但在 NoSQL 中您需要构建它们,这适用于宏伟的多面搜索或快速solr 提供的文档搜索。


当人们标记某人的答案时,我希望他们能说出原因。这个答案有 5 分,我认为有些是正确的,有些则不是。但我没想到,所以希望它确认哪些是正确的,哪些是错误的。
第 1 点:Solr (Lucene) 是主数据存储。没有什么中间的。如果您愿意,可以将其用作记录系统。大多数人不这样做,因为它的力量在于搜索。第 2 点:有些人不断索引并每秒执行一次提交,甚至更快。 2 分钟/200 条记录从何而来?第3点:没错,这种方式不像其他软件那样灵活。第 4 点:因为 Solr 是围绕搜索设计的,所以它必须在 RAM 中有数据才能获得良好的性能。操作系统磁盘缓存规则。低RAM使其变慢。第 5 点:是的。 Solr 确实搜索,做得很好。
您好@Elyagrag 请在下面找到我的回复,在这里感谢您的输入。第 1 点:我的观点是,您需要再次重建整个文档,然后将其提交以进行符合中间构建的处理(我同意您可以避免存储),我对 Solr 的经验总是有一个外部数据存储这将有助于在索引损坏的情况下重新索引数据。 Point2:出于性能原因,提交通常会延迟,我同意您可以将其更改为以非常低的间隔提交,但这会影响高事务站点的性能。
要补充到我的第 1 点的另一件事是,当您需要添加一个字段(这总是发生)时,您需要重新索引,这就是您需要中间数据存储的地方。见blog.michaelhamrah.com/2011/11/…
V
Viswanath Lekshmanan

最后一点,关于 solr 从 NoSQL 走出去的营销策略不是这里提到的区别

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

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

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

与 Solr 相比,NoSQL 数据库易于学习。 Solr 或多或少有很多配置和概念(例如:字段)。

性能是我们必须考虑的东西 b/w 。与其他 NoSQL 数据库相比,Solr 提供了更高的性能。

注意:将 Solr 与某些数据库结合可提供最佳性能。

简介: Solr 也是一个 NoSQL 数据存储,它是所有 NoSQL 数据库的前身。这没有得到别人的炒作。但由于其性能和力量,仍然在该领域。


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅