powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Непричесанные мысли по синтакссу кросс-ДБ запросов
13 сообщений из 13, страница 1 из 1
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #36330843
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 2.5 появились запросы к внешним источникам данных EXECUTE STATEMENT … ON EXTERNAL
Вещь интересная, а кому-то даже полезная. Однако получить набор данных с левой БД – это одно, а вот использовать его, например в соединении с выборками родной базы, – совсем другое. Как я понимаю, сейчас это можно сделать лишь посредством явных курсоров. Причем если условия соединение и фильтрации сложнее палки и веревки, то придется поиметь много-много кода.
Так вот, на сытый желудок подумалось, как ещё докрутить синтаксис ES в тройке, чтобы внешние источники данных стали еще более гладкими и шелковистыми. Объяснять лень, лучше пример:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
with
  datastream1(fieldA1, fieldA2, …, fieldAN) as
    (execute statement 'select field1, field2, …, fieldN from tableA' 
     on external 'localhost:DB1' …),
  datastream2(fieldB1, fieldB2, …, fieldBK) as
    (execute statement 'select field1, field2, …, fieldN from tableB'
     on external 'localhost:DB1' …)
select …
  from datastream1
  left join datastream2 on …
 where …

В общем смысл понятен, полагаю: загонять вывод ES в CTE. Причем FOR перед ES, а также INTO после ES тут не к чему, ибо весь вывод засасывает в себя CTE, и поля уже объявлены в ней после имени. Что скажете? Лисапед?
...
Рейтинг: 0 / 0
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #36330867
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
джойнить EDS без поддержки оптимизатора - бестолковое занятие, IMHO, независимо от синтаксиса. Надо делать нормально оптимизируемые гетерогенные запросы. Но это не для 3.0.
...
Рейтинг: 0 / 0
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #36330885
Фотография arni
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr,

т.к. синтаксис не влияет на поддержку или неподдержку оптимизации, то почему бы не реализовать на скорую руку тупые natural-соединения (как вариант, по предложенному синтаксису или как-то иначе), а когда дойдут руки - не меняя синтаксиса добавить оптимимзацию?
По-моему, возможность - первично, скорость реализации - вторично. Не всем же миллиониками манипулировать.
:)
...
Рейтинг: 0 / 0
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #36330908
belov-evgenii
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сделать в процедуре выборки ES и джойнить уже с процедурой.
...
Рейтинг: 0 / 0
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #36330914
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идеи запихнуть EXEC BLOCK (а теперь и EXEC STMT) в CTE уже витали.
Несмотря на кажущуюся простоту и элегантность синтаксиса это не так просто сделать в самом движке.
Т.е. "на скорую руку" - это фантазия :)
Ну и эффективность выполнения таких запросов будет не на высоте.

Кому сильно нужно, может, не ожидая FB 3 (или FB 33), уже сейчас самостоятельно заливать такие блоки в GTT и джойнить их вдоль и поперёк.
...
Рейтинг: 0 / 0
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #36330929
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladэлегантность синтаксиса
никогда не понимал этой "элегантности" :-)
...
Рейтинг: 0 / 0
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #36330946
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrhvladэлегантность синтаксиса
никогда не понимал этой "элегантности" :-)кажущаяся :)
...
Рейтинг: 0 / 0
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #36656613
q_firebird
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я правильно понял, что count и другие агрегаты считает внешняя СУБД?
Код: plaintext
1.
execute statement 'select count(field1) from tableB'
     on external 'localhost:DB1' 
...
Рейтинг: 0 / 0
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #36656614
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да. Но некрофилить ради этого было необязательно.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #38470434
PisarLenov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...«В 2.5 появились запросы к внешним источникам данных EXECUTE STATEMENT … ON EXTERNAL
Вещь интересная, а кому-то даже полезная. Однако получить набор данных с левой БД – это одно, а вот использовать его, например в соединении с выборками родной базы, – совсем другое. Как я понимаю, сейчас это можно сделать лишь посредством явных курсоров. Причем если условия соединение и фильтрации сложнее палки и веревки, то придется поиметь много-много кода»....


Я делаю иначе:
Просто и быстро.

а) Создаем системный DSN для каждой БД Firebird
в администраторе источников данных ODBC .
б) Далее в MS Access создаем связанные таблицы из DSN
А затем строим выборки и прочие весЧи со всеми БД в савокупности или врозь....

DataPump не рулит!
...
Рейтинг: 0 / 0
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #38470475
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PisarLenovПросто и быстро.
Ага, для пары таблиц с десятком записей в каждой. Акцесс вроде как не умеет пропихивать
условия в связанные таблицы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #38470643
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PisarLenov,

некрофил? К тому же, BDE давным давно умеет это делать, не говоря о том, что он не развивается уже 11 лет.
Гетерогенные запросы только с одной стороны хорошо. С другой - они выкачивают все данные на клиента. Поэтому рулит как раз перекачка части данных между БД через on external, и выполнение запросов уже в конкретной БД.
...
Рейтинг: 0 / 0
Непричесанные мысли по синтакссу кросс-ДБ запросов
    #38470950
AlexeyM123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
свои 5 копеек

недавно пришлось делать джойны из IB56 и FB25 через Execute Statement
правда без курсоров, и на разных машинах
убийственно медленно
нашел выход - TxQuery
дешево, быстро и дружелюбно, хотя нет некоторых элементов конструкций (напр EXISTS)
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Непричесанные мысли по синтакссу кросс-ДБ запросов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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