如何根据用户定义的类型字段筛选cassandra查询?我想在我的cassandra数据库中创建人员表,所以我在我的cassandra中创建了这个用户定义的类型。
create type fullname ( firstname text, lastname text );
我也有这张桌子。
create table people ( id UUID primary key, name frozen <fullname> );
我需要过滤我的查询,以了解所有姓氏jolie的人。我如何从这个表中查询这个。在cassandra中过滤和查询的情况如何?我知道我可以删除全名类型并将名字和姓氏添加到主表中,但这是我想要做的一个示例。我必须有全名类型。
简而言之:您可以使用二级索引通过全名UDT进行查询。但是您不能仅通过UDT的一部分进行查询。
// create table, type and index
create type fullname ( firstname text, lastname text );
create table people ( id UUID primary key, name frozen <fullname> );
create index fname_index on your_keyspace.people (name);
// insert some data into it
insert into people (id, name) values (now(), {firstname: 'foo', lastname: 'bar'});
insert into people (id, name) values (now(), {firstname: 'baz', lastname: 'qux'});
// query it by fullname
select * from people where name = { firstname: 'baz', lastname: 'qux' };
// the following will NOT work:
select * from people where name = { firstname: 'baz'};
这种行为的原因是实现C*二级索引的方式。一般来说,它只是C*维护的另一个隐藏表,在您的情况下定义为:
create table fname_index (name frozen <fullname> primary key, id uuid);
实际上,您的主键和主键在此表中进行了交换。因此,您的案例被简化为一个更一般的问题“为什么我不能仅通过部分PK进行查询?”:
建议的解决方案:
我用Spring Data Cassandra 2.2.1开发了一个新的应用程序,想在Cassandra 2.1.9服务器上运行它(旧的,我知道)。但是我们得到了错误 Spring数据卡桑德拉手册声称Spring数据2.2.1至少需要卡桑德拉2.1,所以这应该有效,但它没有。我们包含的唯一特定于卡桑德拉的依赖项是 我怎样才能让这个工作?
我正试图用Python插入到这个Cassandra表中 有了这份准备好的声明: 使用这段代码(数据库已打开并插入到其他表,因此连接有效): 我捕获了异常:“为 bind() 提供的参数太多(得到 12 个,预期为 4)”。 绑定函数是如何将我的4个参数转换为12个的? 希望有什么办法来解决这个问题? 或者,一些使用卡桑德拉MAP,LIST和SET的工作示例,从Python驱动程序将不胜感激。
在你否决之前,我想声明,我看了所有类似的问题,但我仍然得到可怕的“主键列不能被限制”错误。 下面是我的表结构: 谢谢,德尼兹
我有几个客户,每个客户都由一个“租户”代表 我想知道将这个概念建模的最佳方法是什么,我做了大量的研究,发现了这个课题:http://cassandra-user-incubator-apache-org.3065146.n2.nabble.com/Modeling-multi-tenanted-Cassandra-schema-td7591311.html 我知道有几种可能性 租户提供一个密钥空间
卡桑德拉如何在内部存储空值?它是否占用任何存储空间?我正在编写一个应用程序,该应用程序使用具有许多列(100s)的表来表示不同类型的数据,因此列具有诸如“text1”,“text2”,“number1”,“number2”等名称,然后有一个外部JSON架构映射哪个列表示特定数据类型的什么值。因此,对于某种数据类型,许多列可能具有空值,并且我无法找到有关空值将占用的存储空间(如果有)的任何具体信息。
我使用的是spring数据cassandra,需要使用jpa映射一个字段,在cassandra中,该字段的类型为