Почитал документацию в Яндекс Облаке Yandex Database, понял, что нужно генерить равномерно распределённый первичный ключ. Никаких функций в доках не нашел для создания ID.
Гугл тоже не дал результатов.
Есть какая-то устоявшаяся практика для newsql? Или просто можно брать uuid?
В пример у себя они показывают обычный int для id.
Как советует Антон Шаманов брать timestamp или предварительно вычисляй: (select max(id)) + 1, в яндексе не рекомендуют:
... Как следствие этого правила, не стоит в качестве первичного ключа таблицы использовать монотонно возрастающую последовательность, например, timestamp.
Оба способа имеют массу недостатков:
- timestamp - как быть с записями сделанными в течении одной секунды? Брать миллисекунды, а если снова конфликт?
- (select max(id)) + 1 - что делать в случае паралельных вставок? Блокировать таблицу?