【发布时间】:2018-10-09 14:02:06
【问题描述】:
我有桌子 CREATE TABLE 网站(url 文本 PRIMARY KEY,count int) 有数据
com.google 5
com.google.subdomain 10
Cassandra 是否支持在单个查询中选择所有谷歌网站(带有子域)?
【问题讨论】:
标签: cassandra
我有桌子 CREATE TABLE 网站(url 文本 PRIMARY KEY,count int) 有数据
com.google 5
com.google.subdomain 10
Cassandra 是否支持在单个查询中选择所有谷歌网站(带有子域)?
【问题讨论】:
标签: cassandra
Cassandra 有SASI index type,它允许对前缀搜索和包含的文本进行有效索引。但它不能像您的情况那样用于索引分区键。一种可能的解决方法是将相同数据(或仅域部分)的副本作为普通列放入表中,并为该列建立索引。 (这个blog post 对SASI 索引的内部有非常详细的描述)。
如果你经常做这个操作,那么你可能需要重新建模数据,例如,使用以下结构的表:
create table site(
ps text,
url text,
count int,
primary key (ps, url));
其中ps 是域的public suffix。但这取决于您计算单个 URL 还是仅计算域,否则对于 google、facebook 等网站,您将获得太宽的行。
【讨论】: