powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обмен данными
20 сообщений из 20, страница 1 из 1
Обмен данными
    #32146044
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотелось бы узнать мнение программистов которые уже сталкивались с такой задачей. Я сделал в программе обмен данными между филиалами. Принцип работы придуман мной и возможно не до конца продуман.
Итак.
Скриптом создается .mdb файл с таблицами идентичными таблицам в Oracle базе, туда перекачиваются все записи за указанный период (если запись обновлялась, то она тоже пишется) и файл архивируется для посылки по почте. При загрузке записей, новые добавляются (id поля сохраняются), измененные переписываются.
До сих пор осталась проблема уникальности id полей. Я сделал так: допустим у нас 10 филиалов и мы знаем что больше 1 000 000 записей в 1 таблице у нас не будет, тогда секвенсоры во всех базах настраиваем так - первый номер=номер филиала * 1 000 000. Но на мой взгляд кривовато.
Поделитесь мыслями пжалста...
...
Рейтинг: 0 / 0
Обмен данными
    #32146064
Фотография Eter Panji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переходи на GUID
и храни его в ROW
Самый простой выход
...
Рейтинг: 0 / 0
Обмен данными
    #32146074
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Над этим нужно будет подумать... Только вот код очень большой, большие изменения вносить тяжело. 20000 строк код и 54 таблицы в базе.
...
Рейтинг: 0 / 0
Обмен данными
    #32146080
Фотография Eter Panji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Второй вариант
преходи на составные ключи
Проблем в коде еще больше
...
Рейтинг: 0 / 0
Обмен данными
    #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
Обмен данными
    #32146106
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот с помощью INCREMENT BY можно сделать даже без модификации кода. Спасибо. Я сам не подумал об этом.
...
Рейтинг: 0 / 0
Обмен данными
    #32146111
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вообще кто-нибудь поделитесь опытом если делали подобное.
...
Рейтинг: 0 / 0
Обмен данными
    #32146123
Фотография Denis Popov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У нас сейчас подобный проект. Асинхронная репликация на обновляемых мат. представлениях. Вторым атрибутом первичного ключа - код сайта. Я не берусь сказать, что это наилучший, но вполне работоспособный вариант.

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

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

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

GUID еще использует кучу параметров и гарантирует уникальность на пространстве вселенной
...
Рейтинг: 0 / 0
Обмен данными
    #32146646
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да уж... Guid я так понял генериться случайным образом (несколько символов точно), так что его действительно только один раз взять, сохранить и использовать для репликации. Только как вот, это еще продумать нужно. Или может быть вообще отказаться от секвенсоров, но guid видимо можно забрать только после добавления записи, и id обновить потом. Криво...
...
Рейтинг: 0 / 0
Обмен данными
    #32146676
MikNik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GUID генерить очень просто, если в Delphi, то нажимаешь Ctrl+Shift+G и получаешь его, родимого.
...
Рейтинг: 0 / 0
Обмен данными
    #32146685
Фотография Eter Panji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В этом действительно есть преимущество
GUID имеешь право создавать на клиенте.
...
Рейтинг: 0 / 0
Обмен данными
    #32146694
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну я генерю так.
select
distinct sys_guid()
from
ur_dogovor
...
Рейтинг: 0 / 0
Обмен данными
    #32146699
Фотография Eter Panji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а почему не
Код: plaintext
select sys_guid() from dual
...
Рейтинг: 0 / 0
Обмен данными
    #32146705
Фотография Eter Panji
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем идея со сдвигом в последовательностях не понраивилась?
Я не помню чем она МНЕ ненравится.
...
Рейтинг: 0 / 0
Обмен данными
    #32146723
Фотография viman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Eter Panji
Ты имеешь ввиду INCREMENT. Уже "внедрил". Там только структуру базы поменять и все, записи закачал назад. Все работает. А для Guid нужно код переписывать. Но в следующей программе обязательно на нем делать буду. Надо будет сначало попробовать, погонять записи туда сюда...
...
Рейтинг: 0 / 0
Обмен данными
    #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
Обмен данными
    #32186215
Salik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
???
Tak nikto i ne otvetil
...
Рейтинг: 0 / 0
20 сообщений из 20, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Обмен данными
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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