![](/img/trans.png)
[英]Generating a Random Type 1 UUID from a Unix Timestamp for use with Cassandra
[英]When to use UUID instead of millisecond timestamp in Cassandra?
我在cassandra 中創建了表,其中主鍵是一些以timeuuid
作為數據類型的列。 我能夠使用存儲為bigint
毫秒精度時間戳值唯一地識別每條記錄。
我已經使用java datastax 驅動程序連接 cassandra。 在將記錄插入數據庫之前,我將毫秒時間戳轉換為每條記錄的 UUID。 這是開銷,可以刪除。
timeuuid
而不是bigint
的好處是什么?timeuuid
和bigint
數據類型之間是否有任何性能影響?如果從時間戳生成 timeuuid,對性能應該不會有很大影響。 timeuuid
是有用的,如果你可能有許多事件在同一毫秒發生,你需要排序-與timeuuid
你可能會到毫秒內10000倍不同的值。 典型用例是具有如下結構的表:
create table tuuid (
pk int,
tuuid timeuuid,
....
....,
primary key (pk, tuiid));
在這種情況下,您將獲得排序(升序或降序)以及tuuid
值的唯一性。 當然,您可以使用(pk, timestamp, random-value)
主鍵,但是使用timeuuid
您不需要為唯一性添加額外的列。 timeuuid
的缺點之一是與 Spark 集成,例如,因為它沒有這種類型,並且可能無法執行過濾器的推送。
如果您不需要唯一性,那么只需切換到timestamp
- 它在內部表示為 8 字節長 - 與bigint
相同,但您不需要自己進行轉換等。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.