|
|
|
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/search_topic.php?author=Poliiinka&author_mode=last_topics&do_search=1]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
get settings: |
6ms |
get forum list: |
13ms |
get settings: |
5ms |
get forum list: |
12ms |
get settings: |
7ms |
get forum list: |
9ms |
get settings: |
7ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
159ms |
get topic data: |
8ms |
get first new msg: |
4ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 5078ms |
| total: | 5395ms |

| 0 / 0 |
