在Cassandra术语中,什么是TimeUUID?

23
在Cassandra术语中,TimeUUID是什么,何时使用?
3个回答

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',
    },
}

用户被分配了一个唯一的键a4a70900-24e1-11df-8924-001ff3591711,该键用于在其他地方引用该用户。


2
如果它是随机的,那么为什么叫做“时间”?对我来说,时间意味着可以按顺序排列的东西(比如时间戳)。 - Carl G
2
它不是通常意义上的随机。TimeUUID是一种基于时间的唯一键,因此键的顺序是基于时间的。 - Andriy B
通用唯一识别码(UUID)是一个128位的数字,为什么它被称为128位数字? - chris
Chris,我不明白...看起来是正确的。128位=16字节。 - Andriy B

8

TimeUUID是抽象类AbstractType的六种具体实现之一。

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

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

如果您正在使用Java并使用带有TimeUUID的cassandra,则建议阅读cassandra FAQ的此部分


13
据我理解,TimeUUID 的实际意义在于为您提供一个按时间排序的唯一主键。在关系型数据库中,您需要使用整数主键和日期字段。请参考 http://arin.me/blog/wtf-is-a-supercolumn-cassandra-data-model 获取示例。 - poolie

-2

用于表示ColumnFamily中唯一的“行”


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接