Конференция "Базы" » Как осуществить распределенный запрос к нескольким БД?
 
  • KBO78 (26.03.15 02:31) [0]
    Доброе время суток, форумчане.
    Подскажите, пожалуйста:
    как осуществить распределенный запрос к нескольким БД?
    (вот например, есть компонент в delphi, ADOConnection1, он соединен у меня с БД, на этой же машине, есть также TADOQuery, в котором я пишу запрос к таблице в этой БД – с этим понятно.
    Вопрос: а если запрос происходит в две таблицы, которые находятся в разных БД, как это реализовать?

    или дайте ссылочку

    Платформа используется - MySQL.

    Спасибо
  • Кщд © (26.03.15 08:06) [1]
    >KBO78   (26.03.15 02:31)
    в вашем случае, надо положить на форму ещё один ADOConnection и ADOQuery
  • Кщд © (26.03.15 08:07) [2]
    предвосхищая следующий вопрос, почитайте про TClientDataset
  • KBO78 (26.03.15 14:03) [3]
    >Кщд   (26.03.15 08:06)
    да, да я это конечно сделал первым делом (с ADOConnection и ADOQuery),

    вот например запрос:
    "SELECT * FROM detail LEFT JOIN provider ON detail.provider_id = provider.id"
    объединяет запрос с двух таблиц в одной БД.

    а у меня 2 БД, "depositary" и "company" с соотрветствующими таблицами.

    Если я правильно Вас понял, то компонент "TClientDataset", как раз этим и занимается
  • Ega23 © (26.03.15 14:45) [4]

    > Платформа используется - MySQL.


    Houston, we have a problem
  • KBO78 (26.03.15 17:48) [5]
    Да, платформа - MySQL,
    а в чем проблема, подскажите...
  • Плохиш © (26.03.15 18:00) [6]
  • KBO78 (26.03.15 18:18) [7]
    >>Плохиш

    а причем тут "CROSS JOIN", насколько я понимаю это объединение нескольких таблиц в одну, только из одной БД, а у меня несколько БД
  • Ega23 © (26.03.15 20:16) [8]

    > насколько я понимаю это объединение нескольких таблиц в одну


    Неправильно понимаешь. Не таблиц, а "источников данных", каковыми может выступать много чего всякого. Таблица, view, хранимая процедура, подзапрос и т.д.


    >  только из одной БД

    не обязательно.
  • KBO78 (26.03.15 20:28) [9]
    Согласен,
    но вопрос остается,
    тогда мне нужно получается, кидать на форму два "ADOConnection1", которые подключены к каждой БД на каждая на отдельном сервере, TADOQuery - останется одно ...- ересь какая-то.

    Как правильно?
  • Ega23 © (26.03.15 21:16) [10]

    > Как правильно?


    Твои вопросы выглядят примерно так:
    "Мне нужно сделать ремонт. Что нужно?"

    Ремонт чего? Книги? Дома? Комнаты? Автомобиля?
    Если комнаты, то какой ремонт? Капитальный? Косметический? А стены какие? Кирпичные? Бетонные? Несущие? А метраж? А что с электропроводкой и полом?

    Сформулируй чётко задачу. Представь, что ты преподаватель и тупому студенту объясняешь, что от него требуется. Поскольку ты преподаватель, то ты умеешь чётко излагать свои мысли, причём не на жаргоне. А поскольку студент тупой, то расписываешь задачу так, чтобы даже он всё понял.
    После этого тебе, возможно, помогут. Без - будет никому не нужное вангование, стёб, а возможно и сага про XYZ ( http://www.gunsmoker.ru/2008/10/x-y-z.html )
  • кгшзх © (26.03.15 21:25) [11]
    > Как правильно?

    Если сегодня, то сегодня правильно "Иран", а не "Ирак"
  • кгшзх © (26.03.15 21:49) [12]
    либо несколько коннекшенов плюс склеивание нескольких роусетов в адодатасете
    либо ликовать сервера и лепить юнионы
    либо трехзвенка, апп сервер которой умеет первый пункт.
    либо асинхронный распределенный запрос на все сервера со сборкой  результатов по мере их поступления (суть самопальный и кастомизированный пункт три)
  • KBO78 (26.03.15 22:30) [13]
    извиняюсь, конкретизирую,
    итак,
    у меня есть платформа для распределенной базы данных (РБД) (я взял стратегию расчлененной РБД) - на МySQL.
    Я создал 3 БД (с одной таблицей в каждой из них), потом эти БД я раскидаю по разным виртуальным ПК.

    С конкретной БД, я умею "общаться" при помощи (ADOConnection и ADOQuery).

    Я хочу научиться делать распределенные запросы в РБД. Чтобы разнеся в дальнейшем эти БД по серверам, у меня не было проблем, с работой  с данными

    Я почитал http://www.osp.ru/dbms/1995/03/13031428/, но там общие слова, мне нужно конкретно.
    Помогите пожалуйста
  • KBO78 (26.03.15 22:33) [14]
    конкретно,
    какие учавствуют в распределении запросов, и что для этого необходимо?
  • кгшзх © (26.03.15 22:39) [15]
    в общем рано тебе еще.
  • кгшзх © (26.03.15 22:45) [16]
    а по ссылке там не прост общие слова, там ерунда написана и много буков.

    когда мне потребовалось (прозрачно для клиента) получить данные с переменного количества однородных источников, я просто взял и за неделю нарисовал это.

    а чел там всерьез и с умным видом рассуждает,
    что если есть "select * from table", но таблица эта на двух серверах,
    то какую же из них тянуть на соседний сервер
    чтобы типо оптимально было.
    ну и потом чтобы нахерачить юнион на оригинальную и реплицированную.
  • KBO78 (26.03.15 22:46) [17]
    все пропало... :-(
  • Ega23 © (26.03.15 22:59) [18]
    Статья - блеск. Отдельно порадовали картинки из давно забытого windows 3.1 и восторженный рассказ про ODBC.
  • KBO78 (26.03.15 23:02) [19]
    ну а есть конкретные шаги как это все реализовать?
  • кгшзх © (26.03.15 23:07) [20]
    надо съесть три собаки и двух щщенков.
    после этого придет озарение и понимание что коробочная система, которая позволит выполнить "select * from table" /* и далеко не только такой тупой */
    на пятнадцати разных серверах, два из которых мускулы, два ораклы, три mssql а остальные fb - умещается на одной трехдюймовке в десяти копиях.
  • Ega23 © (27.03.15 00:13) [21]

    > ну а есть конкретные шаги как это все реализовать?


    Ты не понимаешь масштаб бедствия. Срочно бери другую тему для курсача.
    Хотя, в [12] основные варианты расписаны.
  • Кщд © (27.03.15 07:32) [22]
    >Ega23 ©   (26.03.15 22:59) [18]
    >Статья - блеск.
    >и восторженный рассказ про ODBC.
    так 95-ый год же - в то время ODBC вполне себе ещё молод, упруг и горяч
  • sniknik © (27.03.15 08:16) [23]
    предложение взять базу аксесс, создать в ней 2 линка к 2м базам mysql и обойтись одним конектом и запросом. ... понятно в общем.

    а mysql столько хвалят, что не ожидал от него не умения "кросджойна".
  • Ega23 © (27.03.15 08:26) [24]

    > так 95-ый год же - в то время ODBC вполне себе ещё молод, упруг и горяч


    Я в том плане, что слезу ностальгическую пустил.
  • Плохиш © (27.03.15 11:03) [25]

    > KBO78   (26.03.15 18:18) [7]
    > >>Плохиша причем тут

    хоть одну ссылку из найденного соизволил прочитать?
    нифига не понял?
    найми программиста!

    PS. в первых же двух ссылках дан ответ на твой вопрос "Как осуществить распределенный запрос к нескольким БД?"
 
Конференция "Базы" » Как осуществить распределенный запрос к нескольким БД?
Есть новые Нет новых   [134427   +34][b:0][p:0.001]