Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обмен данными / 20 сообщений из 20, страница 1 из 1
22.04.2003, 15:34:56
    #32146044
viman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
Хотелось бы узнать мнение программистов которые уже сталкивались с такой задачей. Я сделал в программе обмен данными между филиалами. Принцип работы придуман мной и возможно не до конца продуман.
Итак.
Скриптом создается .mdb файл с таблицами идентичными таблицам в Oracle базе, туда перекачиваются все записи за указанный период (если запись обновлялась, то она тоже пишется) и файл архивируется для посылки по почте. При загрузке записей, новые добавляются (id поля сохраняются), измененные переписываются.
До сих пор осталась проблема уникальности id полей. Я сделал так: допустим у нас 10 филиалов и мы знаем что больше 1 000 000 записей в 1 таблице у нас не будет, тогда секвенсоры во всех базах настраиваем так - первый номер=номер филиала * 1 000 000. Но на мой взгляд кривовато.
Поделитесь мыслями пжалста...
...
Рейтинг: 0 / 0
22.04.2003, 15:56:57
    #32146064
Eter Panji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
Переходи на GUID
и храни его в ROW
Самый простой выход
...
Рейтинг: 0 / 0
22.04.2003, 16:08:51
    #32146074
viman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
Над этим нужно будет подумать... Только вот код очень большой, большие изменения вносить тяжело. 20000 строк код и 54 таблицы в базе.
...
Рейтинг: 0 / 0
22.04.2003, 16:12:00
    #32146080
Eter Panji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
Второй вариант
преходи на составные ключи
Проблем в коде еще больше
...
Рейтинг: 0 / 0
22.04.2003, 16:27:31
    #32146093
_kozyr
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
Можно покомбинировать START WITH, INCREMENT BY в CREATE SEQUENCE

Код: plaintext
1.
2.
3.
START WITH        1                        3                         5 
INCREMENT BY      10                       10                        10 
Range Example     1 ,  11 ,  21 ,  31 , ...      3 ,  13 ,  23 ,  33 ,...        5 ,  15 ,  25 ,  35 ,  45 ,...
...
Рейтинг: 0 / 0
22.04.2003, 16:38:03
    #32146106
viman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
А вот с помощью INCREMENT BY можно сделать даже без модификации кода. Спасибо. Я сам не подумал об этом.
...
Рейтинг: 0 / 0
22.04.2003, 16:41:38
    #32146111
viman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
А вообще кто-нибудь поделитесь опытом если делали подобное.
...
Рейтинг: 0 / 0
22.04.2003, 16:53:06
    #32146123
Denis Popov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
У нас сейчас подобный проект. Асинхронная репликация на обновляемых мат. представлениях. Вторым атрибутом первичного ключа - код сайта. Я не берусь сказать, что это наилучший, но вполне работоспособный вариант.

А как GUID формировать? Он обеспечивает уникальность в любом случае? Поммнится, народ на Sybase 11.9 отказался от полей типа identity потому, что при импорте данных из другой БД (рабочая БД -> тестовая, например) происходило нарушение уникальности.
...
Рейтинг: 0 / 0
22.04.2003, 17:00:38
    #32146134
viman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
Вторым атрибутом это не выход. Во первых, значения поля уникальные, во вторых что делать в таком случае со справочниками, тоже по двум полям выборку делать?
...
Рейтинг: 0 / 0
23.04.2003, 11:59:19
    #32146546
viman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
Вопрос дурацкий возможно, но просто я с Oracle недавно работаю. Чем GUID отличается от ROWID?
...
Рейтинг: 0 / 0
23.04.2003, 12:22:03
    #32146584
Eter Panji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
2 Denis Popov
Identity это та же нарастающая последовательность просто она в MS скрыта внутрь типа данных

2 viman
Может быть я не совсем верно понимаю пусть знатоки меня поправт

ROWID гарантирует уникальность на данной машине из-за того что на физическом уровне указывает на место где записана строка

GUID еще использует кучу параметров и гарантирует уникальность на пространстве вселенной
...
Рейтинг: 0 / 0
23.04.2003, 13:04:28
    #32146646
viman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
Да уж... Guid я так понял генериться случайным образом (несколько символов точно), так что его действительно только один раз взять, сохранить и использовать для репликации. Только как вот, это еще продумать нужно. Или может быть вообще отказаться от секвенсоров, но guid видимо можно забрать только после добавления записи, и id обновить потом. Криво...
...
Рейтинг: 0 / 0
23.04.2003, 13:22:57
    #32146676
MikNik
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
GUID генерить очень просто, если в Delphi, то нажимаешь Ctrl+Shift+G и получаешь его, родимого.
...
Рейтинг: 0 / 0
23.04.2003, 13:26:28
    #32146685
Eter Panji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
В этом действительно есть преимущество
GUID имеешь право создавать на клиенте.
...
Рейтинг: 0 / 0
23.04.2003, 13:36:30
    #32146694
viman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
Ну я генерю так.
select
distinct sys_guid()
from
ur_dogovor
...
Рейтинг: 0 / 0
23.04.2003, 13:38:55
    #32146699
Eter Panji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
а почему не
Код: plaintext
select sys_guid() from dual
...
Рейтинг: 0 / 0
23.04.2003, 13:43:20
    #32146705
Eter Panji
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
А чем идея со сдвигом в последовательностях не понраивилась?
Я не помню чем она МНЕ ненравится.
...
Рейтинг: 0 / 0
23.04.2003, 13:57:24
    #32146723
viman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
2 Eter Panji
Ты имеешь ввиду INCREMENT. Уже "внедрил". Там только структуру базы поменять и все, записи закачал назад. Все работает. А для Guid нужно код переписывать. Но в следующей программе обязательно на нем делать буду. Надо будет сначало попробовать, погонять записи туда сюда...
...
Рейтинг: 0 / 0
18.06.2003, 17:06:15
    #32185788
Salik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
Vsem privet ,
Pro4el etot topik
Voznik vopros:

Pri izmenenii ID na tip "ROW" (dlya hraneniya v nem GUID )
Naskolko eto vliyaet na performance ( imel v vidu zaprosi s joinami) ?
Zaranee Spasibo
...
Рейтинг: 0 / 0
19.06.2003, 10:59:32
    #32186215
Salik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Обмен данными
???
Tak nikto i ne otvetil
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обмен данными / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]