卡桑德拉还是 SOLR?是啥为前端读取查询提供了更好的性能?

Posted

技术标签:

【中文标题】卡桑德拉还是 SOLR?是啥为前端读取查询提供了更好的性能?【英文标题】:Cassandra or SOLR? What gives better performance to frond end read queries?卡桑德拉还是 SOLR?是什么为前端读取查询提供了更好的性能? 【发布时间】:2012-04-28 09:59:44 【问题描述】:

我的团队要求我在 Cassandra 和 SOLR 之间进行选择,以便更快地响应@前端查询。我告诉他们 Cassandra 是 NOSQL 数据库,而 SOLR 是索引。但是后来他们说我们可以将完整的数据库推送到 SOLR(比如将 SOLR 用作数据库),或者我们可以将 Cassandra 与 SOLR 一起使用。都糊涂了。

我们处理的数据量大约是 10 亿,分布在 4 个 mysql 表中(使用连接获取),我们只从网站获得读取查询。我们不需要全文搜索

我认为 SOLR 不能轻易被击败的地方是它的全文搜索功能,但我们在我们的案例中不需要它。

那么 SOLR 还有什么 Cassandra 无法提供的,Cassandra 有什么可以在我们的特定情况下替代 SOLR 的?

换句话说,谁的表现会更好?卡桑德拉一个人? SOLR 作为一个单独的数据库?还是两者一起?最重要的是为什么?为什么不?

在我的下一次团队会议上,用优势支持我的选择对我来说真的很重要,就好像为什么一个比另一个更好。

提前致谢。

编辑:

SOLANDRA 不是一个选择,因为我猜它还没有那么成熟,也不再需要维护了 DataStax 不是一个选项,因为 SOLR 功能仅在企业版中提供

【问题讨论】:

@Xodarap 这是个大问题吗?如果需要,您可以轻松获得强大的一致性保证。您可以选择(每个操作)有多少副本等待来自:datastax.com/docs/1.0/dml/data_consistency 的响应 @Tyler:Facebook 切换到 hbase due partially to its simpler consistency model,我知道在 Cassandra 中提高一致性会导致延迟问题。我毫不怀疑这可以解决,但值得考虑。 【参考方案1】:

如果您不需要 Solr 的全文搜索功能,我认为没有理由选择它而不是 Cassandra。

(披露:我为 DataStax 工作。)

在操作上,由于基于 Dynamo 的架构,处理 Cassandra 集群会简单得多。对 Solr 进行分片可能会非常痛苦,这也是我们 DataStax 将搜索内置到 DSE 中的重要原因之一; 很多 人都想避免这种情况。我不是想在 DSE 上卖给你,只是指出 Solr 的缺点。

例如,当您想使用 Solr 更改分片的数量时,您必须创建并构建一个全新的索引。您必须担心 Solr 集群的死锁。还有其他几个限制:http://wiki.apache.org/solr/DistributedSearch

您没有说太多关于您需要支持什么样的查询。添加该信息将为您提供更好的答案。

【讨论】:

(目前查询只是读取查询并使用 4 MySQL 表上的连接获取。让我知道您是否想了解更多关于查询性质的信息)所以,从您的输入我可以得出结论如果我们的索引在单个系统上并且我们不需要全文搜索功能,那么 SOLR 和 Cassandra 的执行可能性相同,但是如果索引是分布式的,那么 Cassandra 会更好用吗?或者甚至在单机上 Cassandra 会表现得更好?如果是/否,那为什么? @dragosrsupercool 查询的性质肯定会有所帮助;越详细越好。【参考方案2】: Cassandra 是一种 NoSQL 数据存储,旨在处理大量数据。兆字节及以上。它绝对是为执行而设计的。 请记住,NoSQL DB 或数据存储在查询方面的功能有限。他们不会有 JOIN 查询。因为这会杀死一个系统。考虑一下! 您肯定能够非常快地读/写,并且可以查询一些数据。 灵活的模式,您可以将稀疏数据推入其中。也就是说,在一般数据库中,您为空条目推送 NULL,在这里您根本不需要推送它:) 您不需要! 没有全文搜索。

这就是大 BUT 的用武之地。

说了这么多,另一端的SOLR是TF-IDF全文搜索引擎。虽然您可以将它用于您的数据库。 灵活的架构。只需标记不需要的字段即可。 Solr 将有助于快速标记、解析和索引数据。会有极好的反响。它返回 XML,您可以解析 XML 以创建可表示的数据。 读取查询很快,我的意思是非常快。但是我没有 Cassandra 和 SOLR 之间的比较可分享。

最后,因为您希望 CASSANDRA 和 SOLR 在一起。查看SOLANDRA (former Lucandra)

【讨论】:

Solr allows 以获得灵活的架构。 @Wajih:同意,Cassandra 可以处理大量数据,但是 SOLR 也可以做到这一点,我猜它可以很好地扩展。如果我错了,请纠正我。此外,JOIN 是 SOLR 和 Cassandra 都无法提供的。他们都提供了灵活的模式。 SOLR 有这种高性能的全文搜索,但是我们在特殊情况下不需要它。我们也不需要写操作。所以现在你说 Cassandra 读取速度非常快,但你又说 SOLR 又快了,所以问题仍然是在我们的例子中是什么让一个比另一个更好? :( 我已经重写了这个问题,以便更清楚地了解情况。 :) @Xodarap - 表示稀疏数据。可能我需要详细说明我的答案。 @Xodarap - 嗯......我想我错过了这一点。我会仔细看看的。你有任何链接吗?我的意思是除了 Cassandra 官方?上次我使用 SOLR 时遇到了这个问题。可能是我做错了什么......【参考方案3】:

你也可以看看Datastax 有社区版和企业版,虽然我认为 Solr 不包含在社区版中:(

Solandra 不再积极开发,作者搬到 Datastax 并继续在那里工作。

恕我直言,Cloudera 对于 Hadoop 是什么,这就是对于 Cassandra 的 Datastax。

【讨论】:

哦,是的......忘了DataStax。应该提到它:) @mbonaci:理解为什么我们需要同时使用它们并信任 Datastax / Solandra 真的很重要?我的意思是 Cassandra 中有什么 SOLR 无法提供的,反之亦然?我们不需要全文搜索。所以不能一换一换吗? 我已经重写了这个问题,以便更清楚地了解情况。 :) 抱歉,如果您不需要 FT 搜索,则根本不需要 Solr(正如 Tyler 所说)。 Solr 首先是搜索引擎,其次才是所有其他事物。然后 Datastax Cassandra 社区版(无 Solr)应该足以开始构建技术证明。【参考方案4】:

Solrs 索引功能在读取方面将优于 Cassandra。它将索引流行的查询,因此频繁的查询会更快。它是为读取而构建的,cassandra 是为存储而构建的。但正如已经说过的,如果需要的话,Cassandra 将进行惊人的扩展。为什么不对单节点、1mill 随机文本字符串、1mill 查询平均值进行基准测试。任何一个都不会执行 mysql,更不用说 mysql 连接查询了。 PS solr 很快就会支持加入我认为 solr 4 .....

【讨论】:

以上是关于卡桑德拉还是 SOLR?是啥为前端读取查询提供了更好的性能?的主要内容,如果未能解决你的问题,请参考以下文章

表单的开始和结束以啥为标志?表单的提交有几种方法,它们的区别是啥?

是啥导致卡桑德拉大排长龙?

Solr的安装与使用

正在追踪cassandra是追踪卡桑德拉时间的正确选择

什么是 Solr 中良好的自动预热查询以及它们如何工作?

Linux里面es和Solr区别是啥?