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

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


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

а .. можно полюбопытствовать зачем понадобилось сращивать ежа с ужом? Не, я понимаю, что если скрестить диван с чемоданом то может получиться раскладушка .. но вот применительно к СУБД .. не понял сути вопроса.
...
Рейтинг: 0 / 0
запрос в различные базы с последующим объединением вывода
    #40025019
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cititogo
Есть десяток баз в mariadb несвязанных между собой
Это разные схемы в одном инстансе или даже инстансы разные?
...
Рейтинг: 0 / 0
запрос в различные базы с последующим объединением вывода
    #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
запрос в различные базы с последующим объединением вывода
    #40025024
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
cititogo
Вопрос уже решил через множественный natural join
А как в один запрос втащили таблицы из разных серверов?
...
Рейтинг: 0 / 0
запрос в различные базы с последующим объединением вывода
    #40025028
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft,

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

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

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

имея при этом описание "заказчик" (с дестяками телефонных номеров и почтовых адресов в разных табличках) на .. третьем сервере.
...
Рейтинг: 0 / 0
запрос в различные базы с последующим объединением вывода
    #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
запрос в различные базы с последующим объединением вывода
    #40025144
Arhat109
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
crutchmaster,

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

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

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

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

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


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