如何解决Cassandra CQL:基于用户定义类型的字段进行查询
我有一个如下创建的表
CREATE TABLE users (user_id int,user_fname text,user_lname text,PRIMARY KEY (user_id));
然后我在表中添加另一列:
CREATE TYPE traits (birth_year int,marital_status text,height float);
将其添加到表格中
ALTER TABLE users ADD user_traits FROZEN<traits>;
我想运行一个查询,该查询返回所有单身用户的姓名,但是我不确定如何完成此操作,因为我正在筛选用户定义类型内的字段。
这就是我所拥有的:
SELECT user_fname,user_lname FROM users WHERE user_traits.marital_status = 'Single' ALLOW FILTERING;
但是,此代码在我运行时返回错误。此查询是否可以在Cassandra CQL中执行?
解决方法
仅在DSE Search中支持UDT字段查询,并且在新的二级索引实现中可能会支持,但将来会支持。
通过将Cassandra用作“传统”数据库,您犯了一个大错误。您在这里缺少主要内容-基于查询选择表结构,而不是基于表结构查询。因此,如果您需要按军事状态进行搜索,则应将其作为主键(尽管这将是一个单独的问题,因为这是低基数字段)。
正如我在previous answer中提到的那样,如果您以这种方式使用Cassandra,则需要重新考虑使用它,或者完全改变解决问题的方法。我建议您在DataStax Academy上学习DS220课程,以了解Cassandra的数据建模-这样可以节省很多时间。另外,请考虑获取freely available from the DataStax site的“ Cassandra。The Definitive Guide”这本书的第三版。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。