powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Распределенные БД
21 сообщений из 21, страница 1 из 1
Распределенные БД
    #34721861
g_box
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите плз, необходимо собирать данные в головную БД(Oracle) с удаленных (другой город, страна) БД более 10 (Access,Excel,Dbf,Oracle,MSSQL ...) как лучше это сделать например использовать гетерогенный сервис в Oracle (через ODBC)? или при помощи Web сервисов (Asp.Net) ? или что-то еще? Данные должны быть оперативными,каждые 30 минут. Может кто-то сталкивался с задачей подобного рода, буду благодарен за любую информацию и предложения! Спасибо.
...
Рейтинг: 0 / 0
Распределенные БД
    #34721896
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Пользователи вводят данные
2. Сервер приложений протоколирует изменения в виде SQL скриптов и формирует исходящие пакеты для заданных маршрутом получателей
3. С заданной периодичностью (допустим каждые 15 минут) срабатывает служба обмена сообщениями и выполняет рассылку пакетов другим серверам приложений, которые, в свою очередь, исполняют эти скрипты.

В общем так... аналог работы e-mail. Возможна принудительная отправка нужных данных.
...
Рейтинг: 0 / 0
Распределенные БД
    #34721907
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
здесь пару строк по этому вопросу ..Вам просто как пример решения.
...
Рейтинг: 0 / 0
Распределенные БД
    #34721952
g_box
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Каким образом можно протоколировать изменения в виде SQL скриптов? БД разные, информация вносится по разному (руками, системами и т.д .... как я понял необходимо написать SOFT для отлавливания изменений? для пересылки в общем можно написать клиент-серверное приложение,а для протоколирования? в БД данных заносится много и часто (например какой-либо SCADA) и не только те которые нужно передавать в центр.
...
Рейтинг: 0 / 0
Распределенные БД
    #34721973
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у нас это делает сам клиентский набор данных... Хотя скрипт - это просто один из возможных вариантов. Если нет возможности такой, можно другими способами отловить нужную дельту . Я просто привел опробованный принцип...
...
Рейтинг: 0 / 0
Распределенные БД
    #34721978
g_box
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо! Принцип понял ...клиент-сервер все равно придется писать и буфер в добавок, отлавливать можно через ODBC запрашивая необходимые данные и передавать их на сервер, тогда по сути дела это можно реализовать на обычных Web-сервисах. Буду рад рассмотреть еще какие-нибудь варианты.
...
Рейтинг: 0 / 0
Распределенные БД
    #34722092
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
g_boxзапрашивая необходимые данные и передавать их на сервер
таким образом Вы остановитесь на классической репликации, сравнивая одно с другим. На запрашивать, а иннициировать изменения. Немного другой принцип.. вытягивание vs проталкивание.
...
Рейтинг: 0 / 0
Распределенные БД
    #34727720
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
g_boxПодскажите плз, необходимо собирать данные в головную БД(Oracle) с удаленных (другой город, страна) БД более 10 (Access,Excel,Dbf,Oracle,MSSQL ...) как лучше это сделать например использовать гетерогенный сервис в Oracle (через ODBC)? или при помощи Web сервисов (Asp.Net) ? или что-то еще? Данные должны быть оперативными,каждые 30 минут. Может кто-то сталкивался с задачей подобного рода, буду благодарен за любую информацию и предложения! Спасибо.
IMHO лучше всего навести порядок и сделать гетерогенное гомогенным. Это окупится.
...
Рейтинг: 0 / 0
Распределенные БД
    #34727823
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenIMHO лучше всего навести порядок и сделать гетерогенное гомогенным. Это окупится.
всех согнать в один офис или протянуть 100МБ волокно между городами? Каким образом предлагаете это сделать?
...
Рейтинг: 0 / 0
Распределенные БД
    #34729582
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не путайте гомогенность с централизованностью. Я говорил о гомогенности.

Если хранить информацию в БД под управлением различных СУБД - для N СУБД потребуется от 2*N (для архитектуры "звезда") до 2*N^2 (для архитектуры "полносвязный граф") "скриптов" для ETL. Не говоря уже о лишних интерфейсах пользователя, утилитах администрирования, лицензиях в конце концов :) . Не слишком ли дорого обойдётся создание и содержание такого зоопарка?

Я предлагаю хранить информацию в распределённой БД под управлением одной СУБД. Тогда можно будет решить задачу репликации встроенными средствами СУБД. И не понадобится постоянного использования ETL-платформы со "скриптами".

Что же касается распределённости - то в данном случае оптимистичная оценка необходимой пропускной способности канала между узлами распределённой БД в МБит вычисляется по формуле:

(максимально допустимое количество информации в БД в МБайт * 8) / (30 * 60 - время на извлечение, упаковку, распаковку и обновление в сек.) * степень сжатия при упаковке / эффективность канала

Т.е. при максимальном количестве информации в БД, равном 100 МБайт, нулевом времени на ETL, отсутствии сжатия и канале Ethernet с эффективностью 0.8 понадобится пропускная способность между двумя узлами "всего" около 0.6 Мбит.

При максимальном же количестве информации 10 ГБайт, и времени 20 мин. на их ETL, Вашего канала в 100 МБит не хватит.
...
Рейтинг: 0 / 0
Распределенные БД
    #34729718
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRaven И не понадобится постоянного использования ETL-платформы со "скриптами".

понял "откуда ноги растут"...
Никаких принципов ETL. Пользователь инициирует изменение в одной БД, команды на изменение транслируются в команды для другой БД и передаются нужным адресатам.
Если ETL и подобное:
чтение-формирование входящего потока-преобразование потока-формирование исходящего потока-запись. Разницу улавливаете?
...
Рейтинг: 0 / 0
Распределенные БД
    #34729887
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm AlexTheRaven И не понадобится постоянного использования ETL-платформы со "скриптами".

понял "откуда ноги растут"...
Никаких принципов ETL. Пользователь инициирует изменение в одной БД, команды на изменение транслируются в команды для другой БД и передаются нужным адресатам.
Если ETL и подобное:
чтение-формирование входящего потока-преобразование потока-формирование исходящего потока-запись. Разницу улавливаете?
Честно сказать - не улавливаю. IMHO если есть БД 1 и БД 2, хранящие одну и ту же информацию в различных структурах, для репликации между ними без извлечения изменённой информации (Extraction), её трансформации к структуре целевой БД (Transformation) и загрузки (Loading) не обойтись. А выполнение операций в поточном (? разделения времени) режиме - не признак ETL.
...
Рейтинг: 0 / 0
Распределенные БД
    #34729927
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenЧестно сказать - не улавливаю. IMHO если есть БД 1 и БД 2, хранящие одну и ту же информацию в различных структурах, для репликации между ними без извлечения изменённой информации (Extraction), её трансформации к структуре целевой БД (Transformation) и загрузки (Loading) не обойтись. А выполнение операций в поточном (? разделения времени) режиме - не признак ETL.
Попробую объяснить, только без тех. подробностей, принцип работы, ок?
Утрированно... Есть одна БД в которую пользователь вводит данные. То, что он вводит протоколируется и по нажатию кнопки Сохранить в трансформированном к структуре другой БД виде этот протокол записывается в Исходящие. С заданной периодичностью Исходящие дублируются на другие сервера. Т.е. иммитируется ситуация, как будто пользователь подключился к удаленному серверу, в другой системе открыл нужную форму и повторил свой ввод, только в другую структуру. Потом в третьей системе открыл и т.д. Никакого извлечения данных, их трансформации не выполняется.
...
Рейтинг: 0 / 0
Распределенные БД
    #34730316
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iscrafm<...> Есть одна БД в которую пользователь вводит данные. То, что он вводит протоколируется и по нажатию кнопки Сохранить в трансформированном к структуре другой БД виде этот протокол записывается в Исходящие. С заданной периодичностью Исходящие дублируются на другие сервера. Т.е. иммитируется ситуация, как будто пользователь подключился к удаленному серверу, в другой системе открыл нужную форму и повторил свой ввод, только в другую структуру. Потом в третьей системе открыл и т.д. Никакого извлечения данных, их трансформации не выполняется.

Звучит хорошо. Но представьте себе: пользователь в Москве создаёт, например, заказ:
1 трактор "Кировец", 300 л.с., усиленная подвеска, по 100000$
2 трактора "Беларусь", водяное охлаждение, по 5000$
1 трактор "Беларусь", экскаваторный ковш, бульдозерный нож, по 7000$
1 грузовик "MAN", седельный тягач, по 150000$

В основную БД под Oracle, в Москве, где стоят грузовики "MAN", он записывается, например, как множество связанных записей табличек "документы", "контрагенты", "количества_товаров", "товар_трактор", "товар_грузовик", транзакцией на PL/SQL.

А для остальных создаётся и отправляется, например, XML-файл.

В Костроме, где стоят трактора "Кировец", БД под MS SQL. В ней есть "документы", "контрагенты", "количества_товаров", но "товары" реализованы в виде EAV, "наименования товаров" и "свойства товаров".

В Орле, где стоят трактора "Беларусь" - таблица MS Excel. В ней каждый заказ - несколько строчек в таблице Excel, а все свойства требуемого товара из каждого "количества_товаров" записываются в одной ячейке, в нарушение 1 НФ :) .

А в Санкт-Петербурге, где сидит топ-менеджмент, вообще что-то объектно-ориентированное.

В каждом месте XML-файл должен быть преобразован (Transformation) в последовательность действий по изменению данных, причём, в зависимости от СУБД, в разную. Которая должна быть проведена (Loading). А само построене XML-файла в дополнение к транзакции на PL/SQL, наверное, уже после того, как она зафиксировалась, не Extraction ли?

А зачем? Представьте - стоит везде, например, PostgreSQL и PGCluster, multi-master replication. В одной базе добавил заказ - в другие реплицировалось. И самим ничего (ну почти :) ) писать и отлаживать не надо.
...
Рейтинг: 0 / 0
Распределенные БД
    #34730420
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenВ каждом месте XML -файл должен быть преобразован (Transformation) в последовательность действий по изменению данных, причём, в зависимости от СУБД, в разную. Которая должна быть проведена (Loading). А само построене XML-файла в дополнение к транзакции на PL/SQL , наверное, уже после того, как она зафиксировалась, не Extraction ли?

зачем лишние звенья? вот для примера фрагмент из письма iTransit... в нем уже все, что нужно сделать серверу приложений...

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
DELETE FROM IDOCENTRY  WHERE ID = '1LMdqAW87mfl5Q8jbgiQRq'
;
INSERT INTO IDOCENTRY (
  ID
  ,PARTITION
  ,OWNER
  ,PDATE
  ,REFNUM
  ,PNUM
  ....
Задача сервера тупо выполнить то что ему сказали в письме... Задача сервиса на удаленном узле - сформировать письмо под его структуру.
...
Рейтинг: 0 / 0
Распределенные БД
    #34730592
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен, для СУБД с поддержкой SQL это замечательный подход. Особенно если СУБД - та же, и структура БД аналогична.
А теперь представьте, что то же самое нужно сделать для FoxPro. Или для MS Excel. И что в удалённой БД таблица IDOCENTRY называется IDO_Centers, а ID - IDO_Centers_Id, причём он не строчный, а численный, и берётся из счётчика. Ведь в условии задачи - не порядок, а зоопарк.
...
Рейтинг: 0 / 0
Распределенные БД
    #34730688
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenСогласен, для СУБД с поддержкой SQL это замечательный подход. Особенно если СУБД - та же, и структура БД аналогична.
А теперь представьте, что то же самое нужно сделать для FoxPro. Или для MS Excel. И что в удалённой БД таблица IDOCENTRY называется IDO_Centers, а ID - IDO_Centers_Id, причём он не строчный, а численный, и берётся из счётчика. Ведь в условии задачи - не порядок, а зоопарк.
Отличия в структуре определяются заданием темплейтов для парсера.
если ему нарисовать, что
insert into IDO_CEnters (IDO_CentersID,...) values (:ID,...), то несмотря на то, что в текущую СУБД данные пишутся в одной структуре, к друзьям уйдет именно нужная им команда. С FoxPro кстати работает, мы таким образом с БЭСТом, например, дружимся.
...
Рейтинг: 0 / 0
Распределенные БД
    #34733832
AlexTheRaven
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если "друзей" десяток, и они потихоньку изменяются, из-за чего время от времени "отъезжают"?
Согласен, самодельные сообщения - это решение. Но единообразие и репликация средствами СУБД мне нравится куда больше - это дешевле :) .
...
Рейтинг: 0 / 0
Распределенные БД
    #34733836
Фотография iscrafm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenА если "друзей" десяток, и они потихоньку изменяются, из-за чего время от времени "отъезжают"?
Согласен, самодельные сообщения - это решение. Но единообразие и репликация средствами СУБД мне нравится куда больше - это дешевле :) .
а производители СУБД делают не самодельные решения, разве их кто-то делает за них?
Alex, понятие "решение" означает именно решение задачи. Я, например, не поклоняюсь бездумно, так называемым стандартам, в этой области... Походит - рекомендую, нет или явно проигрышный вариант - гудбай. Но то, что предложенный вариант легчайший в интерпретации и работоспособный проверено в боевых условиях и немало. И друзей много и меняются и расстояния большие.
...
Рейтинг: 0 / 0
Распределенные БД
    #34752302
andsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlexTheRavenЗвучит хорошо. Но представьте себе: пользователь в Москве создаёт, например, заказ:
1 трактор "Кировец", 300 л.с., усиленная подвеска, по 100000$
2 трактора "Беларусь", водяное охлаждение, по 5000$
1 трактор "Беларусь", экскаваторный ковш, бульдозерный нож, по 7000$
1 грузовик "MAN", седельный тягач, по 150000$

В основную БД под Oracle, в Москве, где стоят грузовики "MAN", он записывается, например, как множество связанных записей табличек "документы", "контрагенты", "количества_товаров", "товар_трактор", "товар_грузовик", транзакцией на PL/SQL.

А для остальных создаётся и отправляется, например, XML-файл.

В Костроме, где стоят трактора "Кировец", БД под MS SQL. В ней есть "документы", "контрагенты", "количества_товаров", но "товары" реализованы в виде EAV, "наименования товаров" и "свойства товаров".

В Орле, где стоят трактора "Беларусь" - таблица MS Excel. В ней каждый заказ - несколько строчек в таблице Excel, а все свойства требуемого товара из каждого "количества_товаров" записываются в одной ячейке, в нарушение 1 НФ :) .

А в Санкт-Петербурге, где сидит топ-менеджмент, вообще что-то объектно-ориентированное.

В каждом месте XML-файл должен быть преобразован (Transformation) в последовательность действий по изменению данных, причём, в зависимости от СУБД, в разную. Которая должна быть проведена (Loading). А само построене XML-файла в дополнение к транзакции на PL/SQL, наверное, уже после того, как она зафиксировалась, не Extraction ли?

А зачем? Представьте - стоит везде, например, PostgreSQL и PGCluster, multi-master replication. В одной базе добавил заказ - в другие реплицировалось. И самим ничего (ну почти :) ) писать и отлаживать не надо.
Для подобных задач лучше использовать предназначенные для этого инструменты интеграции - такие как MS Biztalk
...
Рейтинг: 0 / 0
Распределенные БД
    #34802236
Доктор М
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужно знать, что в какие таблицы загружать, дальше можно настроить на местах автоматическую выгрузку(изменения можно отслеживать триггерами СУБД) и отправку в центр. Можно в формате XML. Дальше в центре файлы попадают в очередь загрузки(можно загрузчик делать на NET, там более нативный оракловый клиент, ODBC тот ещё гемор) и последовательно грузить.
Чем не решение?
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Разработка информационных систем [игнор отключен] [закрыт для гостей] / Распределенные БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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