|
Распределенные БД
|
|||
---|---|---|---|
#18+
Подскажите плз, необходимо собирать данные в головную БД(Oracle) с удаленных (другой город, страна) БД более 10 (Access,Excel,Dbf,Oracle,MSSQL ...) как лучше это сделать например использовать гетерогенный сервис в Oracle (через ODBC)? или при помощи Web сервисов (Asp.Net) ? или что-то еще? Данные должны быть оперативными,каждые 30 минут. Может кто-то сталкивался с задачей подобного рода, буду благодарен за любую информацию и предложения! Спасибо. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2007, 18:25 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
1. Пользователи вводят данные 2. Сервер приложений протоколирует изменения в виде SQL скриптов и формирует исходящие пакеты для заданных маршрутом получателей 3. С заданной периодичностью (допустим каждые 15 минут) срабатывает служба обмена сообщениями и выполняет рассылку пакетов другим серверам приложений, которые, в свою очередь, исполняют эти скрипты. В общем так... аналог работы e-mail. Возможна принудительная отправка нужных данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2007, 19:04 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
здесь пару строк по этому вопросу ..Вам просто как пример решения. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2007, 19:17 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
Каким образом можно протоколировать изменения в виде SQL скриптов? БД разные, информация вносится по разному (руками, системами и т.д .... как я понял необходимо написать SOFT для отлавливания изменений? для пересылки в общем можно написать клиент-серверное приложение,а для протоколирования? в БД данных заносится много и часто (например какой-либо SCADA) и не только те которые нужно передавать в центр. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2007, 20:23 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
у нас это делает сам клиентский набор данных... Хотя скрипт - это просто один из возможных вариантов. Если нет возможности такой, можно другими способами отловить нужную дельту . Я просто привел опробованный принцип... ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2007, 21:16 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
Спасибо! Принцип понял ...клиент-сервер все равно придется писать и буфер в добавок, отлавливать можно через ODBC запрашивая необходимые данные и передавать их на сервер, тогда по сути дела это можно реализовать на обычных Web-сервисах. Буду рад рассмотреть еще какие-нибудь варианты. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.08.2007, 21:30 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
g_boxзапрашивая необходимые данные и передавать их на сервер таким образом Вы остановитесь на классической репликации, сравнивая одно с другим. На запрашивать, а иннициировать изменения. Немного другой принцип.. вытягивание vs проталкивание. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.08.2007, 02:28 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
g_boxПодскажите плз, необходимо собирать данные в головную БД(Oracle) с удаленных (другой город, страна) БД более 10 (Access,Excel,Dbf,Oracle,MSSQL ...) как лучше это сделать например использовать гетерогенный сервис в Oracle (через ODBC)? или при помощи Web сервисов (Asp.Net) ? или что-то еще? Данные должны быть оперативными,каждые 30 минут. Может кто-то сталкивался с задачей подобного рода, буду благодарен за любую информацию и предложения! Спасибо. IMHO лучше всего навести порядок и сделать гетерогенное гомогенным. Это окупится. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2007, 18:53 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
AlexTheRavenIMHO лучше всего навести порядок и сделать гетерогенное гомогенным. Это окупится. всех согнать в один офис или протянуть 100МБ волокно между городами? Каким образом предлагаете это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.08.2007, 20:27 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
Не путайте гомогенность с централизованностью. Я говорил о гомогенности. Если хранить информацию в БД под управлением различных СУБД - для N СУБД потребуется от 2*N (для архитектуры "звезда") до 2*N^2 (для архитектуры "полносвязный граф") "скриптов" для ETL. Не говоря уже о лишних интерфейсах пользователя, утилитах администрирования, лицензиях в конце концов :) . Не слишком ли дорого обойдётся создание и содержание такого зоопарка? Я предлагаю хранить информацию в распределённой БД под управлением одной СУБД. Тогда можно будет решить задачу репликации встроенными средствами СУБД. И не понадобится постоянного использования ETL-платформы со "скриптами". Что же касается распределённости - то в данном случае оптимистичная оценка необходимой пропускной способности канала между узлами распределённой БД в МБит вычисляется по формуле: (максимально допустимое количество информации в БД в МБайт * 8) / (30 * 60 - время на извлечение, упаковку, распаковку и обновление в сек.) * степень сжатия при упаковке / эффективность канала Т.е. при максимальном количестве информации в БД, равном 100 МБайт, нулевом времени на ETL, отсутствии сжатия и канале Ethernet с эффективностью 0.8 понадобится пропускная способность между двумя узлами "всего" около 0.6 Мбит. При максимальном же количестве информации 10 ГБайт, и времени 20 мин. на их ETL, Вашего канала в 100 МБит не хватит. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2007, 14:35 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
AlexTheRaven И не понадобится постоянного использования ETL-платформы со "скриптами". понял "откуда ноги растут"... Никаких принципов ETL. Пользователь инициирует изменение в одной БД, команды на изменение транслируются в команды для другой БД и передаются нужным адресатам. Если ETL и подобное: чтение-формирование входящего потока-преобразование потока-формирование исходящего потока-запись. Разницу улавливаете? ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2007, 15:14 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
iscrafm AlexTheRaven И не понадобится постоянного использования ETL-платформы со "скриптами". понял "откуда ноги растут"... Никаких принципов ETL. Пользователь инициирует изменение в одной БД, команды на изменение транслируются в команды для другой БД и передаются нужным адресатам. Если ETL и подобное: чтение-формирование входящего потока-преобразование потока-формирование исходящего потока-запись. Разницу улавливаете? Честно сказать - не улавливаю. IMHO если есть БД 1 и БД 2, хранящие одну и ту же информацию в различных структурах, для репликации между ними без извлечения изменённой информации (Extraction), её трансформации к структуре целевой БД (Transformation) и загрузки (Loading) не обойтись. А выполнение операций в поточном (? разделения времени) режиме - не признак ETL. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2007, 15:46 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
AlexTheRavenЧестно сказать - не улавливаю. IMHO если есть БД 1 и БД 2, хранящие одну и ту же информацию в различных структурах, для репликации между ними без извлечения изменённой информации (Extraction), её трансформации к структуре целевой БД (Transformation) и загрузки (Loading) не обойтись. А выполнение операций в поточном (? разделения времени) режиме - не признак ETL. Попробую объяснить, только без тех. подробностей, принцип работы, ок? Утрированно... Есть одна БД в которую пользователь вводит данные. То, что он вводит протоколируется и по нажатию кнопки Сохранить в трансформированном к структуре другой БД виде этот протокол записывается в Исходящие. С заданной периодичностью Исходящие дублируются на другие сервера. Т.е. иммитируется ситуация, как будто пользователь подключился к удаленному серверу, в другой системе открыл нужную форму и повторил свой ввод, только в другую структуру. Потом в третьей системе открыл и т.д. Никакого извлечения данных, их трансформации не выполняется. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2007, 15:58 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
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. В одной базе добавил заказ - в другие реплицировалось. И самим ничего (ну почти :) ) писать и отлаживать не надо. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2007, 17:24 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
AlexTheRavenВ каждом месте XML -файл должен быть преобразован (Transformation) в последовательность действий по изменению данных, причём, в зависимости от СУБД, в разную. Которая должна быть проведена (Loading). А само построене XML-файла в дополнение к транзакции на PL/SQL , наверное, уже после того, как она зафиксировалась, не Extraction ли? зачем лишние звенья? вот для примера фрагмент из письма iTransit... в нем уже все, что нужно сделать серверу приложений... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.
... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2007, 17:54 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
Согласен, для СУБД с поддержкой SQL это замечательный подход. Особенно если СУБД - та же, и структура БД аналогична. А теперь представьте, что то же самое нужно сделать для FoxPro. Или для MS Excel. И что в удалённой БД таблица IDOCENTRY называется IDO_Centers, а ID - IDO_Centers_Id, причём он не строчный, а численный, и берётся из счётчика. Ведь в условии задачи - не порядок, а зоопарк. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2007, 18:38 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
AlexTheRavenСогласен, для СУБД с поддержкой SQL это замечательный подход. Особенно если СУБД - та же, и структура БД аналогична. А теперь представьте, что то же самое нужно сделать для FoxPro. Или для MS Excel. И что в удалённой БД таблица IDOCENTRY называется IDO_Centers, а ID - IDO_Centers_Id, причём он не строчный, а численный, и берётся из счётчика. Ведь в условии задачи - не порядок, а зоопарк. Отличия в структуре определяются заданием темплейтов для парсера. если ему нарисовать, что insert into IDO_CEnters (IDO_CentersID,...) values (:ID,...), то несмотря на то, что в текущую СУБД данные пишутся в одной структуре, к друзьям уйдет именно нужная им команда. С FoxPro кстати работает, мы таким образом с БЭСТом, например, дружимся. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.08.2007, 19:23 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
А если "друзей" десяток, и они потихоньку изменяются, из-за чего время от времени "отъезжают"? Согласен, самодельные сообщения - это решение. Но единообразие и репликация средствами СУБД мне нравится куда больше - это дешевле :) . ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2007, 00:19 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
AlexTheRavenА если "друзей" десяток, и они потихоньку изменяются, из-за чего время от времени "отъезжают"? Согласен, самодельные сообщения - это решение. Но единообразие и репликация средствами СУБД мне нравится куда больше - это дешевле :) . а производители СУБД делают не самодельные решения, разве их кто-то делает за них? Alex, понятие "решение" означает именно решение задачи. Я, например, не поклоняюсь бездумно, так называемым стандартам, в этой области... Походит - рекомендую, нет или явно проигрышный вариант - гудбай. Но то, что предложенный вариант легчайший в интерпретации и работоспособный проверено в боевых условиях и немало. И друзей много и меняются и расстояния большие. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.08.2007, 00:36 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
25.08.2007, 09:38 |
|
Распределенные БД
|
|||
---|---|---|---|
#18+
Нужно знать, что в какие таблицы загружать, дальше можно настроить на местах автоматическую выгрузку(изменения можно отслеживать триггерами СУБД) и отправку в центр. Можно в формате XML. Дальше в центре файлы попадают в очередь загрузки(можно загрузчик делать на NET, там более нативный оракловый клиент, ODBC тот ещё гемор) и последовательно грузить. Чем не решение? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.09.2007, 22:02 |
|
|
start [/forum/topic.php?fid=33&msg=34729887&tid=1549001]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
135ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 242ms |
0 / 0 |