Google Cloud Spanner recommends против использования монотонно возрастающих целых чисел для первичных ключей. Это имеет смысл для таблиц верхнего уровня, поскольку это создавало бы горячие точки. Но как насчет чередующихся таблиц? В любом случае они будут храниться на одном узле. Они также хранятся в отсортированном порядке, поэтому использование UUID или какого-либо другого случайного идентификатора кажется субоптимальным, особенно если они будут также найдены в отсортированном порядке.Автоинкремент в Google Cloud Spanner
Считывает максимальный id и сохраняет maxId + 1 для новой строки правильное решение здесь?
Спасибо за ответ. Какова наилучшая практика использования растущих чисел в чередующихся таблицах? Это просто: max = read ("SELECT MAX (SubId) FROM SubTable WHERE ParentId = ..."); написать ("INSERT INTO SubTable (SubId, ...) VALUES (" + (max + 1) + ", ...)") ? –
Как правило, рекомендуется избегать и использовать UUID со столбцом для последовательных идентификаторов, если это необходимо. Есть много опасностей, которые скрываются там, например, чтобы убедиться, что вы делаете это в транзакции, что произойдет, если последнее (и максимальное) значение будет удалено - вы можете его повторно использовать или нет ?. Вероятно, лучше использовать другую таблицу для хранения счетчика и убедиться, что у вас есть соответствующие транзакции. –