0

我们可以在 Cassandra 列族的每一列中都有一个复合值吗?

user-id   column1-name
123      (Column1-Value  Column1-SchemaName  Column1-LastModifiedDate)

userId 是这里的rowKey。同样的事情也适用于其他列。

每列值将始终包含以下三项内容-

ByteType for Column-Value

UTF8Type for Column-SchemaName

DateType for LastModifiedDate

如果是,任何人都可以帮助我为此设计列族吗?我将使用 Astyanax 客户端插入到上面的列族中。

4

3 回答 3

1

有两种方法:

  1. 为您的列使用 CompositeType。在这种情况下,将有 4 个组件复合列名和空列值。
  2. 使用 astyanax 自定义序列化程序。在这种情况下,列名将保持不变。自定义序列化程序将从字节缓冲区转换为您的自定义对象并返回。
于 2013-10-07T16:57:40.393 回答
0

您似乎正在尝试创建一个所谓的“超级列”,它最近在 Cassandra 中被高度“不推荐”(为什么 Cassandra 中的超级列不再受青睐?)。所以,我想说你应该尝试重新考虑你的设计,如果你真的需要在一个列中包含所有这些值,你可以从应用程序中进行编组/解组,或者你也可以考虑使用“复合键”,如果这对你有帮助。

于 2013-09-21T16:18:46.467 回答
0

我不认为,这在 Cassandra 中是完全可能的。要么你必须去规范化你的列族,要么照顾Cassandra Collection支持。如果您可以将 ValueSchemaNameLastModifiedDate的数据模型数据类型限制为单一类型,那么Map可能会对您的情况有所帮助。

于 2013-09-21T21:51:59.180 回答