我在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文档中找不到它

最佳答案

可能有助于了解Cassandra如何存储数据以及实际的复合 Material 是什么:

  • 所有数据(无论使用哪种验证器/比较器)都存储为字节。当您指定验证器时,您只是在要求Cassandra确保对这些字节进行了所需的编码。相比之下,比较器仅根据特定于您给出的编码的自然顺序对列进行排序。
  • Composites只是具有特定编码的字节数组。这种编码非常简单:对于每个组件,它存储两个字节的长度,其后是字节编码的组件,后跟一个终止位,该终止位确定它是包含的还是排他的。由于任何东西都可以存储在字节数组中,因此您可以拥有不同的组件类型,但是您必须知道它们是什么,然后自己对其进行解码/编码。
  • 为了实现动态复合,Hector将其他类型的数据写入字节数组,以便它在读出字节后知道如何解码字节。静态复合 Material 无法执行此操作,因为没有类型信息。
  • 10-08 19:27