|
|
|
ID и выгрузка-загрузка
|
|||
|---|---|---|---|
|
#18+
СУБД PostgreSQL Существует таблица на ID поля которой ссылаются поля из других таблиц. При выгрузке данных из этой таблицы и загрузке в новую таблицу может возникнуть ситуация когда идет загрузка ID сперва с номером 2 потом 1 в следствии чего в секвенции запишется последнее значение 1 и после окончания загрузки нужно будет переставить значение секвенции = максимальному ID. Как лучше делать дергать секвенцию или создать дополнительное поле с уникальным ключем который генерится собственной процедурой и ссылаться на него ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 09:29 |
|
||
|
ID и выгрузка-загрузка
|
|||
|---|---|---|---|
|
#18+
bumbarasСУБД PostgreSQL Существует таблица на ID поля которой ссылаются поля из других таблиц. При выгрузке данных из этой таблицы и загрузке в новую таблицу может возникнуть ситуация когда идет загрузка ID сперва с номером 2 потом 1 в следствии чего в секвенции запишется последнее значение 1 и после окончания загрузки нужно будет переставить значение секвенции = максимальному ID. Как лучше делать дергать секвенцию или создать дополнительное поле с уникальным ключем который генерится собственной процедурой и ссылаться на него ?Не знаю что такое секвенция, но подозреваю, что то что уникально на одном сервере и генерится им же, не надо распространять на другой сервер. Хотя конечно, если у нас трудностей нет, то их надо создать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.04.2006, 14:06 |
|
||
|
ID и выгрузка-загрузка
|
|||
|---|---|---|---|
|
#18+
Я не понимаю, с какой стати при процессе переноса данных должна дергаться "секвенция" (которая, подозреваю, механизм выдачи id новым данным). Собственно к проектированию вопрос имхо отношения не имеет; с точки зрения проектирования правильное решение можно сформулировать в паре тезисов: При переносе данные сохраняют изначально выданные id. При независимой генерации данных на нескольких серверах множества возможных значений id должны быть так или иначе разведены (не пересекаться). Стандартные решения этого - Ввести номер сервера как часть ключа; отдельным полем или частью значения id (по формулам вида id = sequence.nextval * 1000 + servernumber). Выдавать id из непересекающихся диапазонов значений (например, на первом сервере create sequence ... start with 1 maxvalue 1000000000). Возможно, динамически распределять новые диапазоны при исчерпании старых. Использовать GUID. Как лучше сделать в Postrge - имхо стоит спросить в соответствующем форуме. Не исключаю, что эта задача уже давно решена штатными средствами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.04.2006, 11:36 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=33668705&tid=1545311]: |
0ms |
get settings: |
12ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
149ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 250ms |
| total: | 491ms |

| 0 / 0 |
