Я создал приложение в Rails на Heroku, используя базу данных PostgreSQL.
Он имеет пару таблиц, предназначенных для синхронизации с мобильными устройствами, где данные могут быть созданы в разных местах. Поэтому у меня есть поле uuid, которое является строкой, хранящей GUID в дополнение к первичному ключу с автоматическим добавлением. Uuid - это тот, который передается между сервером и клиентами.
Я понял после реализации механизма синхронизации на стороне сервера, что приводит к проблемам с производительностью при необходимости сопоставлять между uuid ↔ id все время (при записи объектов мне нужно запросить uuid, чтобы получить идентификатор раньше сохранение и наоборот при отправке данных).
Теперь я думаю о переключении на использование UUID в качестве первичного ключа, что делает запись и чтение намного проще и быстрее.
Я читал, что UUID в качестве первичного ключа иногда может давать плохую производительность индекса (фрагментацию индекса) при использовании кластерного индекса первичного ключа. Does PostgreSQL страдает от этой проблемы или он в порядке, чтобы использовать UUID в качестве первичного ключа?
У меня уже есть UUID-столбец сегодня, поэтому хранение мудрым будет лучше, потому что я отбрасываю обычный столбец id.