|
|
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
Хотелось бы узнать мнение программистов которые уже сталкивались с такой задачей. Я сделал в программе обмен данными между филиалами. Принцип работы придуман мной и возможно не до конца продуман. Итак. Скриптом создается .mdb файл с таблицами идентичными таблицам в Oracle базе, туда перекачиваются все записи за указанный период (если запись обновлялась, то она тоже пишется) и файл архивируется для посылки по почте. При загрузке записей, новые добавляются (id поля сохраняются), измененные переписываются. До сих пор осталась проблема уникальности id полей. Я сделал так: допустим у нас 10 филиалов и мы знаем что больше 1 000 000 записей в 1 таблице у нас не будет, тогда секвенсоры во всех базах настраиваем так - первый номер=номер филиала * 1 000 000. Но на мой взгляд кривовато. Поделитесь мыслями пжалста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2003, 15:34:56 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
Переходи на GUID и храни его в ROW Самый простой выход ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2003, 15:56:57 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
Над этим нужно будет подумать... Только вот код очень большой, большие изменения вносить тяжело. 20000 строк код и 54 таблицы в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2003, 16:08:51 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
Второй вариант преходи на составные ключи Проблем в коде еще больше ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2003, 16:12:00 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
Можно покомбинировать START WITH, INCREMENT BY в CREATE SEQUENCE Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2003, 16:27:31 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
А вот с помощью INCREMENT BY можно сделать даже без модификации кода. Спасибо. Я сам не подумал об этом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2003, 16:38:03 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
А вообще кто-нибудь поделитесь опытом если делали подобное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2003, 16:41:38 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
У нас сейчас подобный проект. Асинхронная репликация на обновляемых мат. представлениях. Вторым атрибутом первичного ключа - код сайта. Я не берусь сказать, что это наилучший, но вполне работоспособный вариант. А как GUID формировать? Он обеспечивает уникальность в любом случае? Поммнится, народ на Sybase 11.9 отказался от полей типа identity потому, что при импорте данных из другой БД (рабочая БД -> тестовая, например) происходило нарушение уникальности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2003, 16:53:06 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
Вторым атрибутом это не выход. Во первых, значения поля уникальные, во вторых что делать в таком случае со справочниками, тоже по двум полям выборку делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2003, 17:00:38 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
Вопрос дурацкий возможно, но просто я с Oracle недавно работаю. Чем GUID отличается от ROWID? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 11:59:19 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
2 Denis Popov Identity это та же нарастающая последовательность просто она в MS скрыта внутрь типа данных 2 viman Может быть я не совсем верно понимаю пусть знатоки меня поправт ROWID гарантирует уникальность на данной машине из-за того что на физическом уровне указывает на место где записана строка GUID еще использует кучу параметров и гарантирует уникальность на пространстве вселенной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 12:22:03 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
Да уж... Guid я так понял генериться случайным образом (несколько символов точно), так что его действительно только один раз взять, сохранить и использовать для репликации. Только как вот, это еще продумать нужно. Или может быть вообще отказаться от секвенсоров, но guid видимо можно забрать только после добавления записи, и id обновить потом. Криво... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 13:04:28 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
GUID генерить очень просто, если в Delphi, то нажимаешь Ctrl+Shift+G и получаешь его, родимого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 13:22:57 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
В этом действительно есть преимущество GUID имеешь право создавать на клиенте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 13:26:28 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
Ну я генерю так. select distinct sys_guid() from ur_dogovor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 13:36:30 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
а почему не Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 13:38:55 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
А чем идея со сдвигом в последовательностях не понраивилась? Я не помню чем она МНЕ ненравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 13:43:20 |
|
||
|
Обмен данными
|
|||
|---|---|---|---|
|
#18+
2 Eter Panji Ты имеешь ввиду INCREMENT. Уже "внедрил". Там только структуру базы поменять и все, записи закачал назад. Все работает. А для Guid нужно код переписывать. Но в следующей программе обязательно на нем делать буду. Надо будет сначало попробовать, погонять записи туда сюда... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2003, 13:57:24 |
|
||
|
|

start [/forum/topic.php?fid=52&fpage=2763&tid=1989926]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 361ms |

| 0 / 0 |
