powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Консолидация баз
22 сообщений из 22, страница 1 из 1
Консолидация баз
    #33177763
zenk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!

Допустим, есть головная контора и филиалы.
Везде стоят базы одинаковой структуры, ссылочная целостность базируется на PRIMARY KEYS по полям SERIAL.

Как в головной организации создать объединённую базу по всем филиалам?
У кого есть опыт?

Пока думаю перейти на использование SEQUENCE, но много кусков INSERT (0,...) придётся переписывать.
...
Рейтинг: 0 / 0
Консолидация баз
    #33178877
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenk
Допустим, есть головная контора и филиалы.
Везде стоят базы одинаковой структуры, ссылочная целостность базируется на PRIMARY KEYS по полям SERIAL.
Как в головной организации создать объединённую базу по всем филиалам?
У кого есть опыт?
Смотря что потом с этой объединенной информацией делать...
Если каналы связи хорошие, то для выполнения консолидированных отчетов можно использовать распределенные запросы.
Если хочется (или нужно) иметь всю информацию (копию) в одном месте , то встанет вопрос ее актуальности - тогда можно использовать однонаправленную репликацию нужных таблиц. Можно собрать физически все БД в одном месте (на одном сервере), но так и не объединять в одну БД, просто каждая БД будет иметь свое название и тогда даже структуру таблиц менять не надо.
Если же нужно слить всю информацию в одну центральную БД, то без тщательного перепроектирования не обойтись.
Есть еще вопросы общих справочников (можно ли их корректировать на местах или только в центре), целостности и актуальности информации, уникальных идентификаторов по всей системе, привязки к филиалам и мн.др.
...
Рейтинг: 0 / 0
Консолидация баз
    #33179509
zenk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЕсли каналы связи хорошие, то для выполнения консолидированных отчетов можно использовать распределенные запросы.

Это как?
Как это должно обрабатываться на клиенте?
Допустим, хотим получить список договоров по всем филиалам?
Динамически строить SELECT ... UNION SELECT по 10-20 серверам?
Боюсь, даже теоретически время отклика будет зашкаливать за рамки комфортной работы.

авторЕсли хочется (или нужно) иметь всю информацию (копию) в одном месте , то встанет вопрос ее актуальности - тогда можно использовать однонаправленную репликацию нужных таблиц. Можно собрать физически все БД в одном месте (на одном сервере), но так и не объединять в одну БД, просто каждая БД будет иметь свое название и тогда даже структуру таблиц менять не надо.
Филиальские базы нужны для построения консолидированной отчётности раз в месяц, ну и для получения прочей информации.
Таким образом, on-line доступа к филиалам нам не требуется.
В крайнем случае - ежедневные ночные выгрузки.
Можно вопрос: какие версии Informix нужны для репликации - 1 Ent+ n ODS
или (n+1) Ent?
Необъединённые базы на одном сервере - большая проблема для клиента БД.

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

Проблема справочников решается организационно - редактирование части таблиц на филиалах будет запрещено. Если окажется, что филиалам нужно будет редактировать справочники (только добавлять записи), переведём справочники на Sequence с minvalue. Случай UPDATE для записей из центральной базы не рассматриваем, IMHO, это допускать нельзя.

А вот про перепроектирование базы не расскажите? Именно этот вопрос интересует больше всего. Какие цели надо поставить при этом?
...
Рейтинг: 0 / 0
Консолидация баз
    #33179513
zenk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, кстати.
А почему Informix так долго не внедрял механизм Sequence?
...
Рейтинг: 0 / 0
Консолидация баз
    #33179686
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenkДа, кстати.
А почему Informix так долго не внедрял механизм Sequence?
А зачем оно?
А самому слабо одну табличку создать и одну процедуру написать (автономных транзакций конечно нет, но и это не проблема)?

hint: serial можно начать с любого числа, т.е. теже диапазоны.
hint2: для того чтобы перейти на SEQUENCE не надо переписывать много кусков INSERT (0,...), надо добавить триггер на insert и там 0 подменять на значение из SEQUENCE.
...
Рейтинг: 0 / 0
Консолидация баз
    #33179753
zenk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторА зачем оно?
А самому слабо одну табличку создать и одну процедуру написать (автономных транзакций конечно нет, но и это не проблема)?

hint: serial можно начать с любого числа, т.е. теже диапазоны.
hint2: для того чтобы перейти на SEQUENCE не надо переписывать много кусков INSERT (0,...), надо добавить триггер на insert и там 0 подменять на значение из SEQUENCE.

1. Думаю, что механизм SEQUENCE надёжнее и быстрее. IMHO
2. Serial я не могу обойти при вставке.
3. Да, наверное можно сделать и так.
...
Рейтинг: 0 / 0
Консолидация баз
    #33179863
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenk
1. Думаю, что механизм SEQUENCE надёжнее и быстрее. IMHO
чем что?
чем сериал? - сомневаюсь

zenk
2. Serial я не могу обойти при вставке.

брр. Не понял.
...
Рейтинг: 0 / 0
Консолидация баз
    #33179904
zenk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Нет, чем informix.sequence_factory и процедуры get_from_seq_factory()

2. Insert into tbl_main (id, name)
VALUES (12345, 'бла-бла-бла')

или Insert into tbl_main (id, name)
SELECT id, name
FROM tbl_filal,

если id - serial.
...
Рейтинг: 0 / 0
Консолидация баз
    #33179923
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenk
2. Insert into tbl_main (id, name)
VALUES (12345, 'бла-бла-бла')

или Insert into tbl_main (id, name)
SELECT id, name
FROM tbl_filal,

если id - serial.
<сарказм on>
че правда что-ли? А мужики-то не знают. Остается вопрос как dbimport заливает.
<сарказм off>
...
Рейтинг: 0 / 0
Консолидация баз
    #33179929
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenk авторЕсли каналы связи хорошие, то для выполнения консолидированных отчетов можно использовать распределенные запросы.

Это как?
Как это должно обрабатываться на клиенте?
Допустим, хотим получить список договоров по всем филиалам?
Динамически строить SELECT ... UNION SELECT по 10-20 серверам?
Боюсь, даже теоретически время отклика будет зашкаливать за рамки комфортной работы.

1. Повторюсь - "Если каналы связи хорошие"
2. "для выполнения консолидированных отчетов" - т.е. это не оперативная "комфортная" работа, а аналитика или отчетность , а время реакции для этих запросов играет значительно меньшую роль, главное актуальность и полнота.
3. + Не надо заморачиваться с репликами и копированием баз
4. + Полная "свобода на местах" в части ведения справочников и остального :)
5. Если это раз в месяц, то выполняясь по ночам, время выполнения запросов вообще мало значимо.

zenk авторЕсли хочется (или нужно) иметь всю информацию (копию) в одном месте , то встанет вопрос ее актуальности - тогда можно использовать однонаправленную репликацию нужных таблиц. Можно собрать физически все БД в одном месте (на одном сервере), но так и не объединять в одну БД, просто каждая БД будет иметь свое название и тогда даже структуру таблиц менять не надо.
Филиальские базы нужны для построения консолидированной отчётности раз в месяц, ну и для получения прочей информации.
Таким образом, on-line доступа к филиалам нам не требуется.

Зачем тогда вопросы выше ? О получении списка договоров на клиенте ?
zenkВ крайнем случае - ежедневные ночные выгрузки.
Когда объем каждой БД станет по несколько гиг, тогда я посмотрю на эти "ночные выгрузки" с 10-20 серверов...
zenkМожно вопрос: какие версии Informix нужны для репликации - 1 Ent+ n ODS или (n+1) Ent?

zenkНеобъединённые базы на одном сервере - большая проблема для клиента БД.

zenk авторЕсли же нужно слить всю информацию в одну центральную БД, то без тщательного перепроектирования не обойтись.
Есть еще вопросы общих справочников (можно ли их корректировать на местах или только в центре), целостности и актуальности информации, уникальных идентификаторов по всей системе, привязки к филиалам и мн.др.

Проблема справочников решается организационно - редактирование части таблиц на филиалах будет запрещено. Если окажется, что филиалам нужно будет редактировать справочники (только добавлять записи), переведём справочники на Sequence с minvalue. Случай UPDATE для записей из центральной базы не рассматриваем, IMHO, это допускать нельзя.

А вот про перепроектирование базы не расскажите? Именно этот вопрос интересует больше всего. Какие цели надо поставить при этом?
...
Рейтинг: 0 / 0
Консолидация баз
    #33179948
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<сарказм on>
че правда что-ли? А мужики-то не знают. Остается вопрос как dbimport заливает.
<сарказм off>[/quot]
Хотя в твоем случае это сломает последовательность, но в твоем случае вообще в консолидированной бд сериал не нужен, там интжера хватит.
...
Рейтинг: 0 / 0
Консолидация баз
    #33179968
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не закончил ответ в предыдущий раз - случайно нажал Enter и сообщение тут же публикуется :(
zenkМожно вопрос: какие версии Informix нужны для репликации - 1 Ent+ n ODS или (n+1) Ent?
Проще всего посмотреть в документации - там все тщательно расписано. К тому же есть разные виды репликации, к тому же, я не знаю, какая версия у тебя...
zenkНеобъединённые базы на одном сервере - большая проблема для клиента БД.
А зачем стандартному клиенту работать со всеми базами ? Это явно отдельный клиент и сложностей там никаких не вижу - справочник филиалов прямо завязывается на перечень БД и т.д.

zenk
А вот про перепроектирование базы не расскажите? Именно этот вопрос интересует больше всего. Какие цели надо поставить при этом?
Нет, не расскажу - это не маленький вопрос, к тому я не специалист в этой области. Главное - четко понимать, что вы хотите от системы в реальных условиях и не заморачиваться "на красоту". И еще один совет из жизни - "преодолевайте проблемы по мере их появления" :)
...
Рейтинг: 0 / 0
Консолидация баз
    #33180050
zenk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторХотя в твоем случае это сломает последовательность, но в твоем случае вообще в консолидированной бд сериал не нужен, там интжера хватит.
Последовательность не нарушится, если на головной базе назначить MINVAL для диапазона SERIAL не минимальным, а максимальным среди всех филиалов. Так?
Нет, INT нам не нужен. С SERIAL или SEQUENCE первичные ключи генерить проще.
...
Рейтинг: 0 / 0
Консолидация баз
    #33180115
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenk
Последовательность не нарушится, если на головной базе назначить MINVAL для диапазона SERIAL не минимальным, а максимальным среди всех филиалов. Так?
Нет, INT нам не нужен. С SERIAL или SEQUENCE первичные ключи генерить проще.
Я запутался.
Есть сущность. В филиале А - значение 1, в филиале B - значение 2
В консолидированной базе что должно быть? Для этих же строк? 1,2 или 101,102 ?
...
Рейтинг: 0 / 0
Консолидация баз
    #33180162
zenk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
1. Повторюсь - "Если каналы связи хорошие"
Если каналы хорошие, то можно и терминальный доступ организовать.
К тому же даже скоростные каналы на длинных дистанциях не позволяют получить малое время реакции.
2. "для выполнения консолидированных отчетов" - т.е. это не оперативная "комфортная" работа, а аналитика или отчетность , а время реакции для этих запросов играет значительно меньшую роль, главное актуальность и полнота.
Не спорю.
3. + Не надо заморачиваться с репликами и копированием баз
Это да, но всё остальное... Лучше уж заморочиться...
4. + Полная "свобода на местах" в части ведения справочников и остального :)
Нет, так нельзя. Как я буду строить отчёт по типу договора, если на каждом филиале справочник типов договоров будет разным?
5. Если это раз в месяц, то выполняясь по ночам, время выполнения запросов вообще мало значимо.
Нет, ночью будем данные забирать. А отчёты будем днём строить, когда люди работают.
Зачем тогда вопросы выше ? О получении списка договоров на клиенте ?
Не понял, а как без договоров отчёты по ним строить?
Когда объем каждой БД станет по несколько гиг, тогда я посмотрю на эти "ночные выгрузки" с 10-20 серверов...
Такие объёмы даже и не снятся.
Необязательно скачивать dbexport или onunload. Можно скачивать только те записи, которые изменились со времени предыдущей закачки (на все таблицы ведутся логи).
К тому же можно заранее проконтролировать наличие баз.
Что делать, если при формировании "самого срочного и важного отчёта" прервётся связь с одним из филиалов?

А зачем стандартному клиенту работать со всеми базами ? Это явно отдельный клиент и сложностей там никаких не вижу - справочник филиалов прямо завязывается на перечень БД и т.д.
Так стандартный клиент это всё уже умеет (по одной базе). А так что получается - сделали отдельного клиента для отчётов, а через месяц некоторые цифры в отчёте удивили, захотели узнать, что это за договор такой интересный, придётся дописывать просмотр параметров договора. Постепенно в клиент для отчётов возвратится вся функциональность по просмотру данных из стандартного.

авторНет, не расскажу - это не маленький вопрос, к тому я не специалист в этой области. Главное - четко понимать, что вы хотите от системы в реальных условиях и не заморачиваться "на красоту". И еще один совет из жизни - "преодолевайте проблемы по мере их появления" :)
Спасибо. Хотелось поучиться на чужих ошибках :-)
...
Рейтинг: 0 / 0
Консолидация баз
    #33180200
zenk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Журавлев Денис zenk
Последовательность не нарушится, если на головной базе назначить MINVAL для диапазона SERIAL не минимальным, а максимальным среди всех филиалов. Так?
Нет, INT нам не нужен. С SERIAL или SEQUENCE первичные ключи генерить проще.
Я запутался.
Есть сущность. В филиале А - значение 1, в филиале B - значение 2
В консолидированной базе что должно быть? Для этих же строк? 1,2 или 101,102 ?

Если я правильно понял, о чем ты спрашиваешь.

id Тип(ссылка на справочник) значение

Филиал 1 (minval = 100000)
100001 1 2454545
100002 2 5666566

Филиал 2 (minval = 200000)
200001 1 45454554
200002 2 56565665

Голова (minval = 900000)
900001 1 446557767
900003 1 67677878

Подлили филиалы в голову:
100001 1 2454545
100002 2 5666566
200001 1 45454554
200002 2 56565665
900001 1 446557767
900003 1 67677878

Добавили новую запись insert into... values(0,1,898989)
Получили
100001 1 2454545
100002 2 5666566
200001 1 45454554
200002 2 56565665
900001 1 446557767
900003 1 67677878
900004 1 898989
...
Рейтинг: 0 / 0
Консолидация баз
    #33180458
Фотография Журавлев Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenk...
Если я правильно понял, о чем ты спрашиваешь.
....
900004 1 898989
А где проблема с сериал? Чем сиквенс лучше?
...
Рейтинг: 0 / 0
Консолидация баз
    #33180532
zenk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здесь - ничем.
Но SEQUENCE гибче.
...
Рейтинг: 0 / 0
Консолидация баз
    #33180594
vasilis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenkЕсли каналы хорошие, то можно и терминальный доступ организовать. К тому же даже скоростные каналы на длинных дистанциях не позволяют получить малое время реакции.
Что, электроны на 100км "долго бегут" ? Что то я не понял "скоростные каналы на длинных дистанциях" :) В чем же тогда измеряется "скорость канала" ? Ведь это и есть пропускная способность в единицу времени (которая меряется по самому плохому сегменту) и от расстояния уж никак не зависит...

zenk[quot ]4. + Полная "свобода на местах" в части ведения справочников и остального :)
Нет, так нельзя. Как я буду строить отчёт по типу договора, если на каждом филиале справочник типов договоров будет разным?
Я , вообще то, и в кавычки брал и смайлик в конце ставил....
А ты мне рассказываешь, что так нельзя.
zenk 5. Если это раз в месяц, то выполняясь по ночам, время выполнения запросов вообще мало значимо.
Нет, ночью будем данные забирать. А отчёты будем днём строить, когда люди работают.
А что мешает в пакетном режиме строить ежемесячные отчеты ?
Много интеллекта надо, чтобы выбрать форму и дату отчета ?
Ну, это я так, в сторону :)
zenkЗачем тогда вопросы выше ? О получении списка договоров на клиенте ?
Не понял, а как без договоров отчёты по ним строить?

Я о другом, если не нужна оперативная и распределенная обработка транзакций, то зачем тогда спрашивать о виде селекта...
[quot zenk]
Необязательно скачивать dbexport или onunload. Можно скачивать только те записи, которые изменились со времени предыдущей закачки (на все таблицы ведутся логи).
К тому же можно заранее проконтролировать наличие баз.
Если ты начнешь "изобретать велосипед", т.е. строить свою систему репликации, то я тебе не завидую - там очень много подводных камней, о которых ты еще и не задумывался (на вскидку - в филиале упал сервер и восстановили по состоянию на сутки назад, а пропавшая информация уже ушла наверх...).
А другие уже подумали и сделали. Поэтому, если уж и использовать репликацию, то родную информиксовскую, которая позволяет тиражировать срезы таблиц и построена не на "тяжелых" триггерах.
zenk
Что делать, если при формировании "самого срочного и важного отчёта" прервётся связь с одним из филиалов?
А это вопрос к чему или к кому ? Я тебя вовсе не убеждаю использовать распределенные запросы или реплики или копировать БД. В каждом из способов много нюансов и сложностей и все зависит от твоих целей и задач.
А также способности все продумать и решить возникшие проблемы.

zenk[quot ]А зачем стандартному клиенту работать со всеми базами ? Это явно отдельный клиент и сложностей там никаких не вижу - справочник филиалов прямо завязывается на перечень БД и т.д.
Так стандартный клиент это всё уже умеет (по одной базе). А так что получается - сделали отдельного клиента для отчётов, а через месяц некоторые цифры в отчёте удивили, захотели узнать, что это за договор такой интересный, придётся дописывать просмотр параметров договора. Постепенно в клиент для отчётов возвратится вся функциональность по просмотру данных из стандартного.
Ну так сделайте наоборот - добавьте в стандартный клиент необходимую дополнительную функциональность для работы с многими базами, которая добавляется только нужным людям. Не пойму, в чем проблема.

авторНет, не расскажу - это не маленький вопрос, к тому я не специалист в этой области. Главное - четко понимать, что вы хотите от системы в реальных условиях и не заморачиваться "на красоту". И еще один совет из жизни - "преодолевайте проблемы по мере их появления" :)
Спасибо. Хотелось поучиться на чужих ошибках :-)
У меня впечатление, что ты себе систему некую уже придумал, а получив другой совет, возражаешь :)
...
Рейтинг: 0 / 0
Консолидация баз
    #33180647
zenk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vasilisУ меня впечатление, что ты себе систему некую уже придумал, а получив другой совет, возражаешь :)
В спорах рождается истина :-)
Так система ведь действительно есть.
Требуется расширить её функционал за счёт возможности работы с консолидированной базой.

Вариант с распределёнными запросами требует переписывания всего софта. Поэтому этот вариант мне и не нравится. Возможно, в других условиях он мне и приглянулся бы.

А для варианта с объединённой базой ничего переписывать не надо, всё уже есть, требуется только оптимально это объединение осуществить. Кроме того, первый вариант быстрее обрабатывает запросов и меньше зависит от состояния связи. Хуже только актуальность, но она нам и не требуется.
...
Рейтинг: 0 / 0
Консолидация баз
    #33207138
Алексан
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zenkДобрый день!

Допустим, есть головная контора и филиалы.
Везде стоят базы одинаковой структуры, ссылочная целостность базируется на PRIMARY KEYS по полям SERIAL.


Аналогичная проблема встаёт перед разработчиками приложений для Enterprise Replication - им IBM не рекомендует использовать тип serial либо рекомендует ввести дополнительный столбец - идентификатор филиала, и строить Primary Key по двум столбцам. Разделить диапазоны значений serial для разных филиалов может быть быстрым способом решения проблемы.
...
Рейтинг: 0 / 0
Консолидация баз
    #33209226
cpr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
cpr
Гость
я использую двойной праймэри ключ , состоящий из сериал столбца и номера подразделения. Никаких проблем не наблюдаю. Хотя и рампределение по диапазонам тоже использую, но только в таблице договоров, чтобы получить сквозную нумерацию, а таблицы в которых учитываются различные операции все имеют двойной ключ и сливаются в конце дня в центральную БД.
...
Рейтинг: 0 / 0
22 сообщений из 22, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Консолидация баз
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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