powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Взаимодействие баз данных
5 сообщений из 5, страница 1 из 1
Взаимодействие баз данных
    #38541805
big-trot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Просьба поделиться опытом.
Задача. Есть две базы данных, структура которых физически различна, но спроектированы они под одну и ту же предметную область.
Одна база данных по сути является одним большим хранителем данных, друга использует эти данные, т.е. является потребителем. Каким образом организовать информационное взаимодействие этих двух баз данных. Как правило данные из хранилище поступают в БД-потребителя. Рассматривались следующие варианты: 1) из БД1 все данные выгружались в виде XML по согласованной структуре, в БД2 эти данные загружаются; 2) из БД2 по dblink выполнялись запросы в БД1.
Вопрос:

1) есть ли готовые инструменты обмена данными между БД.
2) если нет какой вариант предпочтителен.
3) как ускорить загрузку данных из XML. (в рамках одной транзакции, этот процесс занимает часы, что не приемлемо).

Разработчик база данных разные.

Спасибо
...
Рейтинг: 0 / 0
Взаимодействие баз данных
    #38541904
ARTURV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trot,

XML действительно долго.
Пользуюсь dblink в хранимых процедурах
...
Рейтинг: 0 / 0
Взаимодействие баз данных
    #38541931
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
big-trot,
поинтересуйтесь, как работают системы триггер-репликации.
по сравнению с вашим случаем они всего-то отличаются тем, что там таблица назначения (что не существенно, на самом деле в самом решении, но маскирует некоторые допущения, которые потребуются в вашем случае) совпадает с таблицей источника по структуре.


т.е. вам нужно обрабатывать 2 случая.
1. передача снепшота, и первичная синхронизация. <тут всё в лоб, часами>
2. передача (и обработка по месту назначения) событий через очередь. <тут экономия на инкрементальности>
но раскладывать это не в совпадающую структуру (как при репликации), а в новую.



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


PS лондайст например использует для передачи данных свой текстовый формат, сильно похожий на hstore. т.ч. рекомендую hstore для п.2. Для п.1. лондайст просто копирует данные командой COPY (простое сравнение строк возможно в силу совпадения структур. в вашем случае наверное можно схоже, но перед COPY на стороне выгрузки(А) провести преобразование к структуре (Б).
...
Рейтинг: 0 / 0
Взаимодействие баз данных
    #38542309
Гость_0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
big-trot,

www.postgresql.org/docs/9.3/static/postgres-fdw.html так ещё можно, внешние таблицы будут выглядеть как локальные.
...
Рейтинг: 0 / 0
Взаимодействие баз данных
    #38542494
Фотография Warstone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если Пг и там и тут, то COPY TO STDOUT (SELECT) вам поможет.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Взаимодействие баз данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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