在Cassandra术语中,什么是TimeUUID?

kno*_*orv 21 cassandra timeuuid

在Cassandra术语中,TimeUUID它是什么时候使用的?

And*_*y B 12

TimeUUID是随机的全局唯一标识符.16个字节.

示例十六进制演示文稿:a4a70900-24e1-11df-8924-001ff3591711

请参见http://en.wikipedia.org/wiki/Universally_Unique_Identifier

它可以作为关系数据库的主键,或者当您需要在某个键下存储值列表时.

例如,查看基于cassandra的这个开源twitter示例:

http://twissandra.com/

http://github.com/ericflo/twissandra

User = {
    'a4a70900-24e1-11df-8924-001ff3591711': {
        'id': 'a4a70900-24e1-11df-8924-001ff3591711',
        'username': 'ericflo',
        'password': '****',
    },
}

Username = {
    'ericflo': {
        'id': 'a4a70900-24e1-11df-8924-001ff3591711',
    },
}

Friends = {
    'a4a70900-24e1-11df-8924-001ff3591711': {
        # friend id: timestamp of when the friendship was added
        '10cf667c-24e2-11df-8924-001ff3591711': '1267413962580791',
        '343d5db2-24e2-11df-8924-001ff3591711': '1267413990076949',
        '3f22b5f6-24e2-11df-8924-001ff3591711': '1267414008133277',
    },
}
Run Code Online (Sandbox Code Playgroud)

这里为用户分配了一个唯一密钥a4a70900-24e1-11df-8924-001ff3591711,用于指代其他地方的用户.

  • 如果它是随机的,那为什么叫“时间”呢?对我来说,时间意味着可以排序的东西(比如时间戳。) (2认同)
  • 它不是通常意义上的随机。TimeUUID 是基于时间的唯一键。所以键的顺序是基于时间的。 (2认同)

Sch*_*jer 8

TimeUUID是抽象类AbstractType的六个具体实现之一.

对于ColumnFamilies,您可以指定名为CompareWith的属性.(SuperColumns具有类似的CompareSubcolumnsWith属性).

此属性的有效值是实现抽象类AbstractType的类(例如,TimeUUID).CompareWith属性告诉Cassandra如何对切片操作的列进行排序.

如果您正在使用Java并使用带有TimeUUID的cassandra,我建议您阅读cassandra常见问题解答的这一部分.

  • 根据我的理解,TimeUUID的实际*点*是为您提供一个按时间排序的唯一主键.您可以在RDBMS中使用它,您可以使用整数主键和日期字段.有关示例,请参见http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model. (11认同)