首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卡桑德拉CompositeType

卡桑德拉CompositeType
EN

Stack Overflow用户
提问于 2012-11-28 17:07:05
回答 2查看 1.4K关注 0票数 6

我在赫克托和卡桑德拉的教程中看到过DynamicCompositeType

有没有人能详细说明

代码语言:javascript
复制
   create column family Composite with comparator ='DynamicCompositeType
       (t=>TimeUUIDType,s=>UTF8Type)'
       and default_validation_class=UTF8Type and key_validation_class=UTF8Type;

代码语言:javascript
复制
create column family Composite
    with comparator = 'CompositeType(TimeUUIDType,UTF8Type)' 
    and key_validation_class = 'UTF8Type' 
    and default_validation_class = 'UTF8Type'

我没有在Cassandra文档中找到它

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-28 22:43:17

它可能有助于理解Cassandra存储数据的方式以及组合的实际内容:

  • 无论您使用哪个验证器/比较器,所有数据都以字节存储。当您指定验证器时,您只是要求Cassandra确保按照您的需要对这些字节进行编码。相比之下,比较器只是根据特定于it.
  • Composites,的编码的自然顺序对列进行排序,这些列只是具有特定编码的字节数组。这种编码非常简单:对于每个组件,它存储两个字节的长度,后跟字节编码的组件,后跟一个确定它是包含的还是排他的终止位。因为任何东西都可以存储在字节数组中,所以你可以有不同的组件类型--但你必须知道它们是什么,并自己解码/编码。
  • 为了实现动态组合,赫克托把额外的类型数据写入字节数组,这样当它读出字节时,它知道如何解码字节。静态组合无法做到这一点,因为没有类型信息。
票数 6
EN

Stack Overflow用户

发布于 2012-11-28 20:51:32

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13601406

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档