簡體   English   中英

在 Cloud Spanner 中存儲 UUID

[英]Storing a UUID in Cloud Spanner

我想使用 UUID 作為 Cloud Spanner 中的主鍵。 讀寫 UUID 的最佳方式是什么? 是否有 UUID 類型或客戶端庫支持?

最簡單的解決方案就是將其存儲為標准RFC 4122格式的字符串。 例如:

d1a0ce61-b9dd-4169-96a8-d0d7789b61d9

這將需要 37 個字節來存儲(36 個字節加上一個長度字節)。 如果你真的想保存每個可能的字節,你可以將你的 UUID 存儲為兩個 INT64。 但是,您需要編寫自己的庫來序列化/反序列化這些值,並且它們在您的 SQL 查詢中看起來不會很漂亮。 在大多數情況下,每行額外節省約 21 個字節可能不值得。

請注意,某些 UUID 生成算法會根據時間戳順序生成 UUID。 如果機器生成的 UUID 值是單調遞增的,那么這會導致 Cloud Spanner 中的熱點(這類似於使用時間戳作為主鍵開頭的反模式),因此最好避免這些變體(例如,不推薦使用 UUID 版本 1)。

這個Stackoverflow 答案提供了有關各種 UUID 版本的更多詳細信息 (TL;DR:由於在生成中使用了偽隨機數,因此將版本 4 與 Cloud Spanner 一起使用)

根據 Cloud Spanner文檔

有幾種方法可以將 UUID 存儲為主鍵:

  • 在 STRING(36) 列中。
  • 在一對 INT64 列中。
  • 在 BYTES(16) 列中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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