Как обеспечить глобальную уникальность primary key в PostgreSQL при шардировании?

Независимые шарды PostgreSQL не получают глобальную уникальность от локального PRIMARY KEY. Нужны согласованная генерация ID или маршрутизация по уникальному ключу.

Короткий ответ

Что ответить на собеседовании

Независимые шарды PostgreSQL не получают глобальную уникальность от локального PRIMARY KEY. Нужны согласованная генерация ID или маршрутизация по уникальному ключу.

Подробный разбор

Ответ с пояснениями

Независимые шарды PostgreSQL не получают глобальную уникальность от локального PRIMARY KEY. Нужны согласованная генерация ID или маршрутизация по уникальному ключу.

Варианты — выделение непересекающихся диапазонов, составной ключ (shard_id, local_id) или распределённый генератор идентификаторов. UUID уменьшает вероятность коллизии, но не заменяет строгий глобальный контроль уникальности бизнес-ключа.

Если одинаковое уникальное значение всегда попадает на один шард, проверку можно выполнить там. В остальных случаях потребуется координатор или отдельный реестр с атомарной проверкой. Уточните, речь об уникальности технического ID или, например, email: это разные задачи.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее