PostgreSQL: "uuid" или "serial" для ID-поля ?

Любые обсуждения, не нарушающие правил форума.

Модератор: Модераторы

PostgreSQL: "uuid" или "serial" для ID-поля ?

Сообщение debi12345 » 22.01.2013 23:23:04

Всегда использовал SERIAL (SEQUENCE), но сейчас задача требует слияния из нескольких раздельно нуменуемых таблиц в одну. Воти думаю - вести на слитой таблице дополнительный нумератор, либо не вести его но зато вставлять гарантирвано непостоояющиеся ключи из раздельных таблиц - а для этого ничего лучше uuid_generate_v*() (дя ключей раздельных таблиц) не видится - гогда ключаеврой столцец слитой талицы модно слить с оным для раздельных таблиц. . Как этот UUID по скорсти выборки - идекированной и неиндексированной, наколько проигрывает BIGINT (sequence) на таблицах 100тыс+ записей ?

И еще - я SEQUNCE недолюбливаю (точнее побаиваюсь), они имеют(проверено на сотнях инсталляций) нехорошую тенденцию "биться" при сбоях питания, притом жестко (невосстанвливаемо через DROP/CREATE sequence)

Добавлено спустя 19 часов 22 минуты 16 секунд:
Что, никто не использовал ?
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)

Re: PostgreSQL: "uuid" или "serial" для ID-поля ?

Сообщение vada » 24.01.2013 10:54:59

Старые ключи обязательно сохранять в новой таблице?
Может просто создать пустую таблицу и туда INSER из всех "нескольких раздельно нуменуемых таблиц" все кроме ID записи?
ЗЫ. За почти 15 лет использования базы ни разу SERIAL(SEQUENCE) ключи не слетали. И питание вырубали, и ОБЭП налетали... :)
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: PostgreSQL: "uuid" или "serial" для ID-поля ?

Сообщение debi12345 » 24.01.2013 12:39:35

разу SERIAL(SEQUENCE) ключи не слетали

К нас много инсталляций версии 7.2.
У нее нумераторы очень падучие.

Старые ключи обязательно сохранять в новой таблице?
Может просто создать пустую таблицу и туда INSER из всех "нескольких раздельно нуменуемых таблиц" все кроме ID записи?

Интересует возможность следующего упрощения жизни :
из громоздого решения с нумераторами :

Код: Выделить всё
global_id BIGSERIAL UNIQUE: ID в слиянии патишинов
id BIGINT: ID в партишине (нельзя использовать нумератор! придется вести нумерацию внутри партишина вручную)
partition_id INT: номер партишина
UNIQUE INDEX ON (partition_id,id)

в
Код: Выделить всё
global_id UUID UNIQUE DEFAULT uuid_generate_v1(): ID в патришинах и в слиянии
Аватара пользователя
debi12345
долгожитель
 
Сообщения: 5759
Зарегистрирован: 10.05.2006 23:41:15
Откуда: Ташкент (Узбекистан)


Вернуться в Потрепаться

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22

Рейтинг@Mail.ru