Я ищу первичный ключ для таблиц реляционной базы данных (Postgres), которые:
- Может генерироваться на клиенте и имеет низкую вероятность коллизий
- Может поддерживать быстрые (и, возможно, кластеризованные) индексы.
- Хорошо подойдет для сценариев федерации, шардинга и миграции.
- Не будет пропускать данные о внутренних компонентах моей системы при использовании в качестве идентификатора открытого объекта (например, в API).
Сначала я подумал об использовании внутреннего первичного ключа с автоматическим приращением и открытого суррогатного ключа GUID, сгенерированного клиентом. Но есть проблемы с этим подходом .
После дальнейших размышлений я думаю, что первичный ключ с целочисленной временной меткой (с разрешением в миллисекундах), сгенерированный на клиенте, удовлетворит все эти требования.
Возможны ли проблемы с этим подходом?