Google Cloud Spanner recommends przeciwko używaniu monotonicznie rosnących liczb całkowitych dla kluczy podstawowych. To sprawia, że idealnie nadaje się on do tabel najwyższego poziomu, ponieważ tworzyłby on hotspoty. Ale co z tabelami z przeplotem? W każdym razie będą przechowywane w tym samym węźle. Są one również przechowywane w uporządkowanej kolejności, więc użycie UUID lub jakiegoś innego losowego identyfikatora wydaje się być suboptymalne, szczególnie jeśli będą one również pobierane w posortowanej kolejności.Autoinżynieria w Google Cloud Spanner
Czy odczytanie max id i zapisanie maxId + 1 dla nowego wiersza jest właściwym rozwiązaniem?
Dzięki za odpowiedź. Jaka jest najlepsza praktyka używania rosnącej liczby w przeplatanych tabelach? Czy to proste: max = odczyt ("WYBIERZ MAKS (SubId) FROM SubTable WHERE ParentId = ..."); write ("INSERT INTO SubTable (SubId, ...) VALUES (" + (max + 1) + ", ...)") ? –
Generalnie nadal dobrym pomysłem jest unikanie i używanie UUID z kolumną dla kolejnych identyfikatorów, jeśli jest taka potrzeba. Istnieje wiele niebezpieczeństw, które czają się tam, np. Upewniając się, że robisz to w transakcji, co się stanie, jeśli ostatnia (i maksymalna) wartość zostanie usunięta - czy możesz jej użyć ponownie, czy nie? Lepiej jest użyć innej tabeli do przechowywania licznika i upewnić się, że masz odpowiednie transakcje. –