2017-09-16 61 views
0

我讀docs,並不能找出如何使用雲扳手生成唯一的密鑰。在SQL中,我們有AUTOINCREMENT,但它是雲端扳手中的反模式。在文檔UserId apear中:001930,001519,011289,010483,000241,但沒有說明它們是如何生成這些ID的。雲扳手密鑰

回答

0

您必須生成您的唯一鍵值客戶端。 Cloud Spanner中沒有可用的服務器端的AUTOINCREMENT,SEQUENCE或其他密鑰生成選項。你可以用這個客戶端來做例如(UUID的散列)。

+0

因此,使用UUIDv5會生成一個唯一的ID,比如「a0e6a3d6-aab2-49fc-a214-f26a1e3985e4」,我們可以將它存儲爲一個字符串(非常大),它將作爲該行的唯一ID。雲端扳手可以使用像上面那樣的字符串作爲第一個和時間戳secound主鍵來緩解熱點,或者我需要將UUID散列爲INT(因爲UUIDv5在開始時可以包含字母數字字符) – Kerrop

+0

您也可以將在一個BYTES(16)列中使用UUID而不是字符串以節省空間,但我選擇依賴隨機生成的UUID的散列作爲主鍵,請參閱此簡短文章中的示例:http:// cloudspanner。 blogspot.de/2017/09/google-cloud-spanner-with-jpa-and.html –

+0

因此,使用UUID(v4爲真隨機)「ddb52691-20a6-4fea-b1b6-bc6840fa1485」,我們可以將其用作主要密鑰沒有任何問題(即使是字母數字字符),但你建議散列UUID只是爲了節省空間的原因?(「ddb52691-20a6-4fea-b1b6-bc6840fa1484」 - >「79f836782bcbb8ef159b1eef8ad7da7d」?另一個問題,爲什麼你會主鍵由2個鍵組成,背後的原因是什麼? – Kerrop