【问题标题】:Cassandra CompositeTypeCassandra 复合类型
【发布时间】:2012-11-16 02:06:18
【问题描述】:

我在 Hector 和 Cassandra 的教程中看到有 DynamicCompositeType

谁能详细说说两者的区别

   create column family Composite with comparator ='DynamicCompositeType
       (t=>TimeUUIDType,s=>UTF8Type)'
       and default_validation_class=UTF8Type and key_validation_class=UTF8Type;

create column family Composite
    with comparator = 'CompositeType(TimeUUIDType,UTF8Type)' 
    and key_validation_class = 'UTF8Type' 
    and default_validation_class = 'UTF8Type'

我在 Cassandra 文档中没有找到它

【问题讨论】:

    标签: nosql cassandra hector


    【解决方案1】:

    这可能有助于了解 Cassandra 如何存储数据以及复合材料的实际含义:

    • 无论您使用哪个验证器/比较器,所有数据都存储为字节。当您指定验证器时,您只是要求 Cassandra 确保这些字节按照您的需要进行编码。相比之下,比较器只是根据特定于您给它的编码的自然顺序对列进行排序。

    • 因此,组合只是具有特定编码的字节数组。这种编码非常简单:对于每个组件,它存储一个两个字节的长度,然后是字节编码的组件,然后是一个终止位,用于确定它是包含还是排除。由于任何东西都可以存储在字节数组中,因此您可以拥有不同的组件类型——但您必须知道它们是什么并自己解码/编码它们。

    • 为了实现动态复合,Hector 将额外的类型数据写入字节数组,以便在读取字节时知道如何对字节进行解码。静态复合无法做到这一点,因为没有类型信息。

    【讨论】:

      【解决方案2】:

      对于静态复合 CF,每列都将具有相同的类型,而对于动态 CCF,每列可以具有不同的数据类型。

      如果您确定 CF 中的数据类型最好坚持静态定义,否则使用动态 CF。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-07-28
        • 2019-03-27
        • 2015-04-19
        • 2021-11-27
        • 2014-08-25
        • 2013-01-31
        • 2018-07-17
        • 2016-08-10
        相关资源
        最近更新 更多