【问题标题】:Composite Column Values in Cassandra?Cassandra中的复合列值?
【发布时间】:2013-09-26 03:33:44
【问题描述】:

我们可以在 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 客户端插入到上面的列族中。

【问题讨论】:

    标签: java cassandra astyanax column-family


    【解决方案1】:

    有两种方法:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢阿比。那么有没有其他方法来设计我的用例..我的每个列名只需要三个值..
      • 我猜不是..这是不可能的
      【解决方案3】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-07-09
        • 2012-07-12
        • 1970-01-01
        • 1970-01-01
        • 2016-09-28
        • 1970-01-01
        • 2013-07-14
        • 2013-07-13
        相关资源
        最近更新 更多