如何在cassandra中创建查找表

如何在cassandra中创建查找表,cassandra,Cassandra,我想在cassandra中创建一个表,用作查找表。我的数据库中有很多URL,希望存储ID而不是URL字符串。因此,我的方法是将url存储在一个包含两列的表中:id(int)和url(text) 我的问题是,我需要url字段和id字段的索引 第一个索引用于处理新的ULR(因此在数据库中查找url的id),第二个索引用于显示数据(获取id的url) 我如何在cassandra中实现这一点?您可以这样创建表: CREATE TABLE urls_table( id int PRIMARY KEY

我想在cassandra中创建一个表,用作查找表。我的数据库中有很多URL,希望存储ID而不是URL字符串。因此,我的方法是将url存储在一个包含两列的表中:
id
(int)和
url
(text)

我的问题是,我需要url字段和id字段的索引

第一个索引用于处理新的ULR(因此在数据库中查找url的
id
),第二个索引用于显示数据(获取id的
url


我如何在cassandra中实现这一点?

您可以这样创建表:

CREATE TABLE urls_table(
   id int PRIMARY KEY,
   url text
   );
然后在第二列上创建索引:

create index urls_table_url on urls_table (url);

您的第一个查询已满足,因为您是通过分区键进行查询的。第二个是满意的,因为您在url列上创建了索引。

我建议为此创建两个单独的表:

CREATE TABLE id_url (id int primary key, url text);

对这些表的插入应通过批处理完成:

BEGIN BATCH
    INSERT INTO id_url (id, url) VALUES (1, '<url1>');
    INSERT INTO url_id (url, id) VALUES ('<url1>', 1);
APPLY BATCH 
开始批处理
插入id_url(id,url)值(1,,);
在url_id(url,id)中插入值(“”,1);
批量应用

所以,我的问题是,创建第二个表还是第二个索引更好?你有什么建议?取决于你决定哪一个对你更合适。你可以阅读这两个主题。另外值得一提的是,如果您有两个不同的表,为了获得id,您需要知道完整的URL。使用索引,您可以使用LIKE进行查询。为此,您需要使用不同的选项创建索引。这一阅读对我个人也有帮助,因为数据的可见性更好,所以我选择了两个表。@Horia Cassandra CQL SELECT语句中没有类似的标准索引支持,我绝对不建议任何人在生产中使用SASI索引。它们是非常实验性的,并且有许多与之相关的文档错误。请注意,对于基数较高的列,不建议使用二级索引。请参阅以获取解释。
BEGIN BATCH
    INSERT INTO id_url (id, url) VALUES (1, '<url1>');
    INSERT INTO url_id (url, id) VALUES ('<url1>', 1);
APPLY BATCH