Гость
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос в различные базы с последующим объединением вывода / 15 сообщений из 15, страница 1 из 1
06.12.2020, 12:43
    #40025010
cititogo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
Есть десяток баз в mariadb несвязанных между собой, некоторые из них содержат таблицы с одинаковыми названиями, но разными полями и различными значениями. Хочу вывести все значения этих таблиц в одном выводе. В каждой таблице есть поле id на основании его и хочу объединить значения в строку. Поскольку нуб, то решил разбить задачу на несколько этапов.

1. в цикле перебрать имена баз, содержащих нужные таблицы
2. сделать запрос в найденные таблицы и объединить данные
3. оптимизировать код запроса
4. сделать вывод


Саму задачу в принципе уже решил, но у меня получился "макаронный" код запроса на две страницы.
Готовое решение не интересует - хочу понять как решать подобные задачи правильно и быстро.
За примеры был бы весьма благодарен.
...
Рейтинг: 0 / 0
06.12.2020, 14:06
    #40025018
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
cititogo,

а .. можно полюбопытствовать зачем понадобилось сращивать ежа с ужом? Не, я понимаю, что если скрестить диван с чемоданом то может получиться раскладушка .. но вот применительно к СУБД .. не понял сути вопроса.
...
Рейтинг: 0 / 0
06.12.2020, 14:42
    #40025019
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
cititogo
Есть десяток баз в mariadb несвязанных между собой
Это разные схемы в одном инстансе или даже инстансы разные?
...
Рейтинг: 0 / 0
06.12.2020, 14:56
    #40025021
cititogo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
miksoft, иногда даже разные города, а не только сервера и базы, если вы это имели ввиду под словом инстанс

Arhat109,

Ну как бы есть базы, которые я менять и править не могу, но в них есть лабораторные данные в одноименных таблицах, если интересно - показатели исследований круп(это то что варят и едят). Эти самые показатели собирают разные лабы и пишут в свои базы. Общего в этих таблицах только номер образца, всё остальное это параметры за которые отвечает конкретная лаба.
Ну вот начальство под новый год пожелало увидеть портянку на одном листе. Вопрос уже решил через множественный natural join в одну строчку или с подробным листингом, но это уже в два листа.

Вот если бы кто ещё подсказал как на всякий случай жестко задать natural join по конкретному полю, был бы премного благодарен. Пробовал конструкцию типа: select * from lab1.grecha natural join lab2.grecha natural join lab3.grecha using (probe_id) опустив on потому что иначе придётся опять городить множество условий, но не вышло.
...
Рейтинг: 0 / 0
06.12.2020, 15:08
    #40025024
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
cititogo
Вопрос уже решил через множественный natural join
А как в один запрос втащили таблицы из разных серверов?
...
Рейтинг: 0 / 0
06.12.2020, 15:18
    #40025028
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
miksoft,

Присоединяюсь. ТС-у сочуствую, т.к. был в его ситуации. Ну .. не совсем такой, по проще пожалуй.. ;)
...
Рейтинг: 0 / 0
06.12.2020, 15:50
    #40025032
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
Arhat109
ТС-у сочуствую, т.к. был в его ситуации. Ну .. не совсем такой, по проще пожалуй.. ;)
А что тут сочувствовать? Нормальная рабочая ситуация, которая должна решаться адекватным архитектурным решением.
Вот только, похоже, что архитектора нет.
...
Рейтинг: 0 / 0
06.12.2020, 16:01
    #40025036
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
miksoft,

я решал средствами клиента, сращиванием показаний и частичным перезаливом баз с серверов на одну машину .. ничего умнее не придумалось. Поэтому тоже интересно как объединить в одном запросе таблички с нескольких серверов?

Хорошо, если у него там таблички не велики .. у меня был астериск с 5 миллионами звонковых записей + почта с объемом раз в 10 поболее .. и надо было найти Заказчика, со звонками от 2 минут и не менее 5-ю письмами с вложениями за период..

имея при этом описание "заказчик" (с дестяками телефонных номеров и почтовых адресов в разных табличках) на .. третьем сервере.
...
Рейтинг: 0 / 0
07.12.2020, 06:18
    #40025131
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
https://mariadb.com/kb/en/connect-external-table-types/
Вот в этом направлении поковыряй. Там можно приделать внешнюю таблицу по jdbc хоть из оракла, постгри или csv. Т.е. любой источник данных для которых есть реализация jdbc (которая есть для чего угодно, что хоть как-то напоминает таблицу).
Вот конкретно по mysql:
https://mariadb.com/kb/en/connect-mysql-table-type-accessing-mysqlmariadb-tables/
То есть ты можешь надёлать таких табличек, назвать их как хочешь, а потом join'ить.
...
Рейтинг: 0 / 0
07.12.2020, 09:00
    #40025144
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
crutchmaster,

Да, можно так. Но не всегда удобно. В моем варианте оказалось очень долго .. больше 15 минут .. не дотерпел.
Поэтому и делал с частичным перебросом из одной БД в другую (табличку "Клиент" пересобирал на каждом из двух оставшихся, т.к. из Заказчика (фирма + юрлицо + контактные данные + кучка ещё разного .. всего 450тыс записей) в Клиентах (по ряду условий) оставалось только 13500 фирм. Вот, эту уже мелкую табличку почле переброса и джойнил со сзвонками и мылами, а обработку (сращивание) проводил на клиенте. В итого 750мсек на все.
...
Рейтинг: 0 / 0
07.12.2020, 09:42
    #40025150
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
crutchmaster
приделать внешнюю таблицу по jdbc
Интересно, большая ли разница по производительности с FEDERATED Storage Engine ?
...
Рейтинг: 0 / 0
07.12.2020, 10:52
    #40025164
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
miksoft,

К сожалению нет кучи mysql баз, чтобы проверить, в любом случае может быть медленно и глючно, хотя, на небольших объёмах данных, я не вижу проблем, чтобы сделать выборку откуда-то там, притащить это всё в какую-нибудь временную таблицу и сделать уже выборку нормально. Хрен знает, как это там всё реализовано.
...
Рейтинг: 0 / 0
07.12.2020, 10:54
    #40025165
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
Arhat109
Да, можно так. Но не всегда удобно. В моем варианте оказалось очень долго .. больше 15 минут .. не дотерпел.

Что-то всего 500к записей и уже печально.
...
Рейтинг: 0 / 0
08.12.2020, 08:49
    #40025476
Arhat109
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
crutchmaster,

как понимаю, проброс соединения через сеть - это отправка и получение каждой строчки по сети, хоть и гигабитной локали, но это не точно. Там 450к записей в "Заказчик", а кроме этого 5-6млн записей в "звонках" и 50-60млн записей в "письмах" .. :)
...
Рейтинг: 0 / 0
08.12.2020, 09:38
    #40025490
crutchmaster
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос в различные базы с последующим объединением вывода
Arhat109
как понимаю, проброс соединения через сеть - это отправка и получение каждой строчки по сети, хоть и гигабитной локали, но это не точно.

Каждой строчки - это как-то совсем тупо. Может что прикрутили уже, чтобы оно отрабатывало за вменяемое время.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / запрос в различные базы с последующим объединением вывода / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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