powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Объединить две одинаковые БД
10 сообщений из 10, страница 1 из 1
Объединить две одинаковые БД
    #38672454
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знал куда задать вопрос, но т.к. управление на РВ (10.5), то задал вопрос сюда :)
Буду краток как некогда :)
Есть несколько БД, которые вели филиалы (или что-то в этом роде). Сегодня поставлена задача объединить их всех в одну БД, чтобы было нагляднее (или так то иначе удобнее).
Вопрос: а как это можно сделать "малой кровью"? Структура у всех одинаковая, НО уникальные ID во всех ключевых таблицах свои и + существуют ещё таблицы связей по этим ID у каждых филиалов свои.
Может есть у кого опыт, как это по легкому разрулить? Или мнение, как выйти из ситуации: например, создать что-то из чего вытягивать те данные которые "вдруг" понадобились?

P.S. Если это не по теме, то прошу модератора перекинуть в соответствующий тематический раздел ;)
...
Рейтинг: 0 / 0
Объединить две одинаковые БД
    #38672489
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISНО уникальные ID во всех ключевых таблицах свои
Тут двояко можно понять.
То ли ID в разных базах свои то есть не пересекаются, то ли свои то есть возможно и пересекаются :)

Допустим ID могут пересекаться.
Тогда во всех базах расширяем столбцы с ID (включая связи) на несколько цифр и в каждой базе в этих старших цифрах делаем свое значение

Например было:
create table doc (id numeric(5) primary key ...)
ID - 1, 2, 3 в каждой базе

стало
create table doc (id numeric(7) primary key ...) (предположем что 100 филиалов)
ID - 0100001, 0100002, 0100003 в 1-й базе, 0200001, 0200002, 0200003 во 2-й базе ...

Это делается естественно только для таблиц не являющихся общими справочниками.

Далее. Для отчетов физически базы можно либо сливать в одну схему, либо каждую базу в отдельную схему загружать, и создать одну схему с view по таблицам из всех схем.
create view doc as
select * from base1.doc
union
select * from base1.doc
...

У нас мы делали вариант с view.
Но у нас данных было не сильно много - базы только по несколько Гбайтов.
Если базы большие, то лучше после устранения пересечения ID настроить репликацию из всех баз в одну схему.


Но вообще эта тема не такая простая. Очень много технических и организационных проблем придется решить.
Если есть возможность отказаться от сведения в одну базу, то я бы не стал связываться :)
...
Рейтинг: 0 / 0
Объединить две одинаковые БД
    #38672601
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мы реализовывали 2 схему
Непростое занятие.
Потом все-таки проапдейтили базы в филиалах для более простого слития
Вариант с репликацией в единую базу тоже интересен, что-то подобное пробовали, но все-таки остановились на слитии через уникальные ID
...
Рейтинг: 0 / 0
Объединить две одинаковые БД
    #38672710
sboyko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ais
сразу есть вопрос использования новых/старых баз...
1.старые будут в таком же виде использоваться на местах?
2.новая база для кого? и что с ней делать?отчеты?
3.или все теперь будут использовать слитую вместе базу для общей работы?
4.слияние баз - только один раз и сливается руками? или же сложнее?
5.конечно же общие справочники-есть такие?
...
Рейтинг: 0 / 0
Объединить две одинаковые БД
    #38673661
AIS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky , во первых спасибо за такую подробную рекомендацию.
Вроде всё просто и понятно, но...
Anatoly Moskovsky...
Это делается естественно только для таблиц не являющихся общими справочниками.
...
А как быть, если есть общие по тематике справочники и в них есть как совпадения, так и различия?
Например, в таблице-клиент в разных БД может быть один и тот же клиент, но по факту с разными ID в каждой БД.
...
Рейтинг: 0 / 0
Объединить две одинаковые БД
    #38673760
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AISА как быть, если есть общие по тематике справочники и в них есть как совпадения, так и различия?
Например, в таблице-клиент в разных БД может быть один и тот же клиент, но по факту с разными ID в каждой БД.
Справочники вводимые юзерами необходимо разделять по ID.
И надо модифицировать систему отчетов, чтобы в при выборе из справочника в фильтре отчета скрывались дубликаты по отображаемому имени. А выбранная запись внутри разворачивалась в список ID и применялась к отчету.

Никто не обещал что будет легко :)
...
Рейтинг: 0 / 0
Объединить две одинаковые БД
    #38673882
akfnnth
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не знаю, насколько в тему и правильно. Не пинайте сильно. Как давно смотрели систему страховой компании с филиалами, так там было сделано следующее. Все ID из целочисленых были переведены в real в которых дробная часть после запятой был просто номер филиала.
...
Рейтинг: 0 / 0
Объединить две одинаковые БД
    #38674183
mgl_www
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Разрешите высказаться в стиле "я такой умный, как моя жена потом".
Вот если бы базы филиалов были бы сформированы в своё время как реплики центральной базы, то проблемы бы не было вообще никакой - все ID были бы уникальными и лежали бы в непересекающихся диапазонах.
А так придётся действовать, как предлагает Анатолий Московский. Правда придётся поудалять все внешние ключи, а потом восстанавливать. Та ещё работка.
...
Рейтинг: 0 / 0
Объединить две одинаковые БД
    #38674767
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mgl_wwwПравда придётся поудалять все внешние ключи, а потом восстанавливать. Та ещё работка.
Автоматизируется за 5 минут :)
...
Рейтинг: 0 / 0
Объединить две одинаковые БД
    #38674822
Фотография Riska
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Могут еще быть проблемы с таблицами городов, банков и т.п. (конечно, если есть такие)
У каждого филиала может быть разный город под одним номером.
Как такие таблицы объединять?
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Объединить две одинаковые БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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