@furyon

Как сделать JOIN для таблиц из разных БД?

Здравствуйте!
Имею: около 10 таблиц в 2х разных БД. Одна из таблиц большая (сотни миллионов записей), в других сотни тысяч записей (все данные в PostgreSQL).
Нужно: по сути сделать JOIN по всем 10ти таблицам и получить результат например group by для статистики.
Не обязательно в реалтайме, можно например пару раз в день.
Как лучше такое сделать?
Подразумеваю что должен быть какой-то софт, который к примеру принимает набор файлов в csv, и делает с ним что угодно.

P.S. Мой основной ЯП - PHP. Но думаю это не имеет значения так как решения скорей всего должны быть консольными.

Буду рад любым наводкам, спасибо!
  • Вопрос задан
  • 3246 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
Напрямую обращаться к другой БД нельзя. Но кто сказал, что вообще нельзя?

Натравливаете Foreign Data Wrappers: https://www.postgresql.org/docs/current/static/pos...
Получаете доступность обеих таблиц в одной БД. На актуальный версиях PG планировщик уже может проталкивать аггрегацию в fdw самостоятельно и считать там что можно, а обратно передавать только аггрегированные данные.
Более старый способ: берёте старый добрый dblink: https://www.postgresql.org/docs/current/static/dbl... дёргаете запрос с джойном таблиц из одной БД, к результату джойните таблицы второй базы.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Могу ошибаться но из разных БД такое не предусмотрено. Запускаете скрипт по cron он создаёт таблицу в какой-то БД, тянет из всех БД в неё нужные данные, делает нужный вам запрос из этой одной таблицы. Всё. По cron можете потом эту таблицу дропнуть если результат выборки куда-то сохраняется и она вам не нужна.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы