簡體   English   中英

何時在 Cassandra 中使用 UUID 而不是毫秒時間戳?

[英]When to use UUID instead of millisecond timestamp in Cassandra?

我在cassandra 中創建了表,其中主鍵是一些以timeuuid作為數據類型的列。 我能夠使用存儲為bigint毫秒精度時間戳值唯一地識別每條記錄。

我已經使用java datastax 驅動程序連接 cassandra。 在將記錄插入數據庫之前,我將毫秒時間戳轉換為每條記錄的 UUID。 這是開銷,可以刪除。

  1. 考慮到記錄能夠在沒有 timeuuid 唯一性的情況下識別,有人可以解釋使用timeuuid而不是bigint的好處是什么?
  2. timeuuidbigint數據類型之間是否有任何性能影響?

如果從時間戳生成 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM