Есть MultiAccount приложение. То есть в БД хранится информация в 100 таблицах и часть этой информации присязана к конкретной организации.
Нужно перенести все эти данные из одной базы в другую. Так чтобы оно органично вписалось и поднялось.
Сейчас есть самописное что-то с копированием информации во временные таблицы, экспортом этих таблиц, импортом на второй базе и переносом из временных таблиц в постоянные.
Работает медленно и криво.
Приложение на Java(Spring, Hibernate) на базе Postgres.
Есть что-то готовое, что можно допилить под конкретную систему и получить простой перенос?
Или велосипеды это наше все?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re: ETL для переноса Организации из одной базы в другую
Здравствуйте, Alexbnd, Вы писали:
A>Нужно перенести все эти данные из одной базы в другую.
dump/restore.
A>Так чтобы оно органично вписалось и поднялось.
Нюанс!
A>Есть что-то готовое, что можно допилить под конкретную систему и получить простой перенос?
Я не могу себе представить универсальный всемогутер. Эта задача алгоритмически неразрешима в общем случае. Собственно органичное вписывание и поднятие — в этом-то и заключается бизнес-логика, которую и нужно реализовывать в зависимости от конкретных требований.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: ETL для переноса Организации из одной базы в другую
Фишка в том, что нужно перенести часть данных из всех таблиц.
·>Я не могу себе представить универсальный всемогутер. Эта задача алгоритмически неразрешима в общем случае. Собственно органичное вписывание и поднятие — в этом-то и заключается бизнес-логика, которую и нужно реализовывать в зависимости от конкретных требований.
Понятно, что готового решения нет, но задача не то, чтобы уникальная.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[3]: ETL для переноса Организации из одной базы в другую
Здравствуйте, Alexbnd, Вы писали:
A>·>dump/restore. A>Фишка в том, что нужно перенести часть данных из всех таблиц.
Проблема в том, что субд как правило поддерживают целостность (consistency). Если ты делаешь dump/restore, то это тривиальный случай. Копия консистентных данных — гарантированно консистентная.
Как только ты начинаешь данные как-то делить, то беспокоиться о целостности придётся тебе, как программисту. И целостность данных зависит исключительно от предметной области и это в каждом случае — уникально.
Может что-то вроде: db copy, delete from * where data not mine, dump, transfer, restore.
A>·>Я не могу себе представить универсальный всемогутер. Эта задача алгоритмически неразрешима в общем случае. Собственно органичное вписывание и поднятие — в этом-то и заключается бизнес-логика, которую и нужно реализовывать в зависимости от конкретных требований. A>Понятно, что готового решения нет, но задача не то, чтобы уникальная.
Уникальная. Не уникальная лишь в том смысле, что всё сводится к пачке sql-запросв.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: ETL для переноса Организации из одной базы в другую
Здравствуйте, Alexbnd, Вы писали:
A>Сейчас есть самописное что-то с копированием информации во временные таблицы, экспортом этих таблиц, импортом на второй базе и переносом из временных таблиц в постоянные.
Неясно зачем последний шаг. Там мержатся данные из двух баз что-ли?
Почему нелья просто импортировать в постоянные напрямую?
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re: ETL для переноса Организации из одной базы в другую
Здравствуйте, Alexbnd, Вы писали:
A>Есть что-то готовое, что можно допилить под конкретную систему и получить простой перенос?
Если база хорошо спроектирована, то у SQL сервера есть возможность выгрузить связанные сущности в XML и загрузить их обратно. А если нет, то:
A>Или велосипеды это наше все?
Re[2]: ETL для переноса Организации из одной базы в другую
·>Неясно зачем последний шаг. Там мержатся данные из двух баз что-ли? ·>Почему нелья просто импортировать в постоянные напрямую?
Еще одна проверка на консистентность и перепривязка данных на айди из новой базы.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[3]: ETL для переноса Организации из одной базы в другую
Здравствуйте, Alexbnd, Вы писали:
A>·>Неясно зачем последний шаг. Там мержатся данные из двух баз что-ли? A>·>Почему нелья просто импортировать в постоянные напрямую? A>Еще одна проверка на консистентность и перепривязка данных на айди из новой базы.
Использовать распределённый дизайн данных, uuid там вместо инкрементальных id и можно будет этот шаг выкинуть.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: ETL для переноса Организации из одной базы в другую
M>Если база хорошо спроектирована, то у SQL сервера есть возможность выгрузить связанные сущности в XML и загрузить их обратно. А если нет, то:
Данные связанны, конечно.
Не вижу в Постгрес такой опции: экспорт всей базы в XML есть, таблицы есть, даже запроса есть. Но как сказать ему, чтобы выгружал еще и связанные данные — не вижу.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re: ETL для переноса Организации из одной базы в другую
Здравствуйте, Alexbnd, Вы писали: A>Есть что-то готовое, что можно допилить под конкретную систему и получить простой перенос? A>Или велосипеды это наше все?
100500 их. https://www.astera.com/type/blog/data-migration-tools/
Но обычно на практике есть ряд нюансов, из-за которых инструменты не шибко-то всё упрощают по сравнению с честным велосипедным скриптованием.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: ETL для переноса Организации из одной базы в другую
A>Нужно перенести все эти данные из одной базы в другую. Так чтобы оно органично вписалось и поднялось. A>Есть что-то готовое, что можно допилить под конкретную систему и получить простой перенос?
Программирование без платы программистам написания и отладки кода — несбыточная мечта менеджеров.