使用CQL 3.0在集合上创建自定义索引

 我是yingh_303 发布于 2023-02-12 12:56

我一直在查看CQL 3.0 数据建模文档,该文档描述了带有标签的列系列歌曲,如下所示:

CREATE TABLE songs (
    id uuid PRIMARY KEY,
    title text,
    tags set
);

我想获得所有具有特定标签的歌曲的列表,因此我需要添加适当的索引.

我可以title很容易地在列上创建索引,但是如果我尝试索引tags作为集合的列,如下所示:

CREATE INDEX ON songs ( tags );

我从DataStax Java驱动程序1.0.4收到以下错误:

Exception in thread "main" com.datastax.driver.core.exceptions.InvalidQueryException: Indexes on collections are no yet supported
at com.datastax.driver.core.exceptions.InvalidQueryException.copy(InvalidQueryException.java:35)
at com.datastax.driver.core.ResultSetFuture.extractCauseFromExecutionException(ResultSetFuture.java:269)

根据JIRA问题CASSANDRA-4511,看起来这可以在更高版本的Cassandra(2.1)中修复.我目前正在使用Apache Cassandra 1.2.11,但不想升级.根据发行CASSANDRA-5615虽然在卡桑德拉1.2.6存在支持自定义索引的集合.

问题是,唯一可用的文档说明:

Cassandra支持创建自定义索引,该索引供内部使用且超出本文档的范围.

但是,它确实暗示的语法如下:

CREATE CUSTOM INDEX ON songs ( tags ) USING 'class_name';

什么是class_name我们在本CQL语句中指定?

有没有更好的方法来索引标签,以便我可以在歌曲表中查询具有特定标签的歌曲列表?

撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有