如何在Cassandra中存储对象数组

戴夫:

在cassandra DB中,我计划存储对象数组。这样做的最好方法是什么。对象映射到Java中带有模型类的数据映射。

Class Test{
   @Column(name = "id")
   int id,
   @Column(name = "name")
   String name,
   Address[] address

 class Address{
   String add1,
   String city,
   String state 
  }
}

我是否应该通过将列也与add1,city,state一起添加到同一键空间中来将所有(id,name,add1,city,state)放在一个表中?或为地址或其他任何选项添加新表。

我尝试添加TYPE但将错误抛出为:“服务器错误:代码= 2200 [Invalid query] message="A user type cannot contain non-frozen UDTs”从错误和类型语法中,我使用了关键字' frozen',但是没有运气。更改表也给出类似的错误,例如:“ mismatched input 'frozen' expecting EOF

另外,如果我必须保存类型的列,'String[ ]'因为它不是诸如Address []之类的自定义类型,该怎么办它是字符串还是文本。我们是否只需要添加alter语句?如果是这样的话

ruhul:

对于您的情况,首先,您需要在Cassandra中创建UDT(用户定义类型)。

Create TYPE address(
   add1 text,
   city text,
   state text
);

然后创建一个包含此UDT的表。

Create table Test(
   id int,
   name text,
   address list<frozen<address>>,
   primary key(id)
);

如果您想进一步了解UTD及其用法,请访问以下链接:

编辑

另外,如果我必须保存类型为'String []'的列怎么办,因为它不是像Address []这样的自定义类型。它是字符串还是文本。我们是否只需要添加alter语句?如果是这样的话

Alter table test add stringarr list<text>检查此链接以获得有关cassandra数据类型的更多信息:CQL数据类型

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章