【问题标题】:Best Indexing model in Cassandra tableCassandra 表中的最佳索引模型
【发布时间】:2016-06-12 07:25:33
【问题描述】:

``(我已阅读 A Big Data Modeling Methodology for Apache Cassandra 了解我的项目数据库的数据建模,该数据库使用 Cassandra。因此,我使用 查询驱动方法。)

我会有如下搜索客户:(这只是一个例子,真实页面有更多搜索参数。另外,没有搜索参数是必填参数强>.)

我的 Cassandra 键空间中的示例客户表:(根据提到的文章选择主键)

//---------Create Customers Table
USE testKeySpace;
CREATE TABLE IF NOT EXISTS customers(
id varint
name text
birthday date,
gender text,
education text,
PRIMARY KEY ((id,name,gender,education),birthday)
);

问题是:

  • 此表最好的索引模型是什么?
  • 如何编写查询以支持可选搜索参数

【问题讨论】:

  • 如果 Cassandra 实际上非常适合此任务,那么您应该有 N 个表,每个查询类型一个。 Cassandra 3.0 支持物化视图,这将使其更易于支持。
  • Cassandra 并不是最适合您的要求。您必须使用 Solr 或 elasticsearch 在 cassandra 之上进行索引。
  • 所以,根据我的几个搜索选项,不建议每个查询使用单个表;我要'n!查询!这是真的吗?

标签: indexing cassandra primary-key partition nosql


【解决方案1】:

因此,根据您在此处所说的内容,我认为您当前的表设计在索引和搜索能力方面可能存在一些问题。在您的帖子中,您提到不需要任何搜索参数,但使用您当前拥有的表模式,您需要在每个请求的 WHERE 子句中提供 ID、姓名、性别和教育。这是因为 CQL 要求您要么没有 WHERE 子句,要么 WHERE 子句必须包含所有 PARTITION KEY 字段。由于您有一个提前定义不明确(即动态)的查询,因此您不希望沿着每个查询表的路线走下去,因为您不知道查询可能是什么。

在这种情况下,我的建议是您创建一个具有PRIMARY KEY 的表,基于最有效的数据分区方式。然后,我建议您使用来自 Undefined_variable 的建议,并在您的数据之上设置 Solr 或 Elasticsearch,以提供您正在寻找的动态和全文搜索功能。如果您决定采用 Solr 路线,您将需要考虑使用 Datastax(社区(免费)或企业(付费)),因为它与 Solr(称为 DSE Search)开箱即用。通过 DSE 搜索,您可以使用 CQL 来查询您的 Solr 索引,例如 SELECT * FROM customers WHERE solr_query='name: XXXX'。您可以在这里查看更多信息:

http://docs.datastax.com/en/latest-dse/datastax_enterprise/srch/srchCql.html

【讨论】:

  • 你是对的;我只是根据提到的文章数据建模步骤设计了表格。它说:“平等搜索属性...映射到表主键的前缀列。”和“一个不等式搜索属性,...映射到一个表clustering key列。”但问题恰恰是主键的要求。因此,根据您的回答,看来我必须在 Cassandra 之上使用索引工具。 Tnx。
【解决方案2】:

搜索结束了!

对于这种动态查询,您很快就能使用 Cassandra 3.4 中发布的新 SASI 二级索引(计划于 2016 年 3 月发布) .

该索引将允许 全文搜索 使用标记器以及数值范围查询。它比原生二级索引实现的性能更高。

阅读并感到惊讶:https://github.com/apache/cassandra/blob/trunk/doc/SASI.md

【讨论】:

  • 太好了!不幸的是,我们必须使用 Cassandra 2.1.5,因为我们在使用新版本的 SSIS 连接到 Cassandra 时遇到了问题。
  • 如果您需要继续使用 Cassandra 2.1.5,DSE 搜索是一种可能的解决方案,如下 bechbd 所述
猜你喜欢
  • 2011-03-20
  • 1970-01-01
  • 1970-01-01
  • 2020-08-13
  • 2014-05-13
  • 1970-01-01
  • 1970-01-01
  • 2012-06-03
  • 2017-09-22
相关资源
最近更新 更多