Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 Есть причины отказаться от embedded sql?  [new]
alatalo
Member

Откуда: Хельсинки
Сообщений: 123
DAiMor не так давно упомянул:

DAiMor
Блок А.Н.,
Еще одна причина отказаться от embedded sql

20256654

интересно а какие еще причины есть? Пользоваться им порой проще и запрос с ошибками не скомпиляется.
5 фев 19, 11:36    [21801807]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2709
alatalo,

пришлось гуглить, чтобы найти когда и почему я это писал. Добавил вам в сообщение ссылку на оригинал.

Вообще я сам пользуюсь embedded sql. Но считаю, что им пользоваться нужно довольно аккуратно, как и всеми другими вариантами при которых компилируется SQL не в runtime. Например теже Query в классах.

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

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

Сейчас я бы посовететовал использовать Query в первую очередь, и embedded sql только в пределах того класса с которым он связан. При наличии Query его можно вызывать из любого места в коде и в разных местах.
А если нужно сделать runtime sql, делать его с помощью %SQL.Statement
5 фев 19, 12:08    [21801830]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3808
Еще ESQL не учитывает разрешения на таблицы для пользователя.

>И еще минус в отношении embedded sql, это громоздскость запросов, когда нужно получить более одной строки. Требуется объявлять курсор, и делать проход по курсору.
Я не понял, а в чем принципиальное отличие у %SQL.Statement? Там тоже prepare,execute,fetch. Но ESQL хотя бы компактен в отношении запросов с получением одной строки.
5 фев 19, 14:13    [21801938]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2709
Блок А.Н.
Я не понял, а в чем принципиальное отличие у %SQL.Statement?
В том что у него меньше зависимость от изменения структуры данных в запрашиваемой таблице.


Блок А.Н.
Но ESQL хотя бы компактен в отношении запросов с получением одной строки.


USER>set rs=##class(%SQL.Statement).%ExecDirect(,"SELECT Count(*) cnt FROM Sample.Person")

USER>w rs.%Next()
1
USER>w rs.cnt
200

Не так уж чтобы прям совсем громоздко
5 фев 19, 14:40    [21801959]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3808
DAiMor
Блок А.Н.
Я не понял, а в чем принципиальное отличие у %SQL.Statement?
В том что у него меньше зависимость от изменения структуры данных в запрашиваемой таблице.
Я имею в виду в плане громоздкости прохода по курсору. Про приколы со структурой я в курсе.
5 фев 19, 18:27    [21802146]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
alatalo
Member

Откуда: Хельсинки
Сообщений: 123
А вот сейчас глупость спрошу: имеет ли размер значение, в смысле - имеет ли какое-либо реальное значение количество кода в нейспейсе? Мы свой продукт пилим с прошлого века, до недавних пор вообще без классов, по крайней мере, без персистентных классов, и количество кода в продукте все время растет. Теперь, видя какое дикое колво кода порождают персистентные классы, и ESQL в частности, и учитывая, что на продакшене этот код копируется в большое колво неймспейсов, возникает вопрос а есть ли какие-то пределы, которые стоит учитывать. Место на диске понятно не проблема, но легко представить, что, например, нужно памяти больше на сервере.
5 фев 19, 19:05    [21802174]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3808
alatalo,

Раньше было ограничение на количество порожденного байткода в одной программе. Именно при использовании ESQL можно было добиться, чтобы класс не компилировался. Сейчас вроде бы не должно быть такого, по крайней мере, нужно постараться руками написать такой код, чтобы он не вместился в длинную строку (я так понимаю, из-за этого была проблема).

Если у вас будут тысячи классов в одном неймспейсе, то скорее всего будут проблемы с Atelier, потому что вроде как он при инициализации делает локальный репозиторий, и все классы копирует к себе. Не слышал, чтобы такие проблемы были у студии.

В некоторых версиях Каше сталкивался с проблемой зацикливания расчета очередности компиляции. Кстати, в том числе из-за ESQL. Если у вас тысячи (или хотя бы сотни) классов, которые ссылаются друг на друга, например, через ESQL, наследование, ссылки, то компилятор при компиляции строит дерево. И было такое, что с этим были проблемы. Но вроде это тоже давно было.

А так в целом нет - не слышал о каких-то принципиальных ограничениях на количество кода. Скорее, проблема будет в людях, которые могут понять, что там написано.
5 фев 19, 20:30    [21802202]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2709
Я бы не сказал, что это имеет существенное значение. Да, памяти нужно больше, но не сильно много.
5 фев 19, 20:31    [21802203]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
alatalo
Member

Откуда: Хельсинки
Сообщений: 123
Зер гут. Тысячи классов не предвидится, тем более, связанных, так что буду спать спокойно Картинка с другого сайта.
5 фев 19, 22:31    [21802233]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 945
DAiMor
Блок А.Н.
Я не понял, а в чем принципиальное отличие у %SQL.Statement?
В том что у него меньше зависимость от изменения структуры данных в запрашиваемой таблице.
Это же хорошо и плохо одновременно :)
При компиляции embedded - почти "анализ типов" даром - мечта сторонников строго типизированных языков.
Вот этот совет
DAiMor
использовать embedded только в пределах того класса с которым он связан
- хороший, правильный!
Но есть всякие join, union ... ;) Еще расходы при выполнении чуть меньше, скорость чуть выше (не уверен, тесты наше всё)
А так - низкоуровневый инструмент, использовать с осторожностью, как и всё низкоуровневое.
Точно не помню, ebmedded отображается в статистике запросов? Можно заморозить план запроса?
8 фев 19, 16:12    [21804562]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2709
doublefint
Точно не помню, ebmedded отображается в статистике запросов? Можно заморозить план запроса?
насчет этого не уверен
8 фев 19, 16:35    [21804608]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
doublefint
Member

Откуда: Беларусь, Минск
Сообщений: 945
DAiMor
doublefint
Точно не помню, ebmedded отображается в статистике запросов? Можно заморозить план запроса?
насчет этого не уверен
Это для alatalo, вопросы для беспокойного сна :)
8 фев 19, 20:16    [21804880]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
kolesov
Member

Откуда: Владивосток
Сообщений: 794
alatalo,
Я пользую очень часто. Только нужно в обязательном порядке проверять SQLCODE - иначе такой запрос может вернуть мусор из кеша (ну или как там у ИС называется помойка результатов запросов)
И, конечно, только если нужна одна запись, т.е. чаще всего там TOP 1 в этом запросе - чем возиться в ембедеде с курсором, проще классово непримиримо подойти к!
11 фев 19, 16:51    [21806644]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
Блок А.Н.
Member

Откуда: Новосибирск
Сообщений: 3808
kolesov,
> иначе такой запрос может вернуть мусор из кеша (ну или как там у ИС называется помойка результатов запросов)
Во время выполнения запроса хост-переменные чем-то заполняются. Иногда после выполнения в них что-то остается, иногда они пустые. Я полагаю, зависит от плана запросов и используемых индексов.
11 фев 19, 17:45    [21806719]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
kalin
Member

Откуда:
Сообщений: 313
kolesov
alatalo,
Я пользую очень часто. Только нужно в обязательном порядке проверять SQLCODE - иначе такой запрос может вернуть мусор из кеша (ну или как там у ИС называется помойка результатов запросов)
И, конечно, только если нужна одна запись, т.е. чаще всего там TOP 1 в этом запросе - чем возиться в ембедеде с курсором, проще классово непримиримо подойти к!

В ORM https://ru.wikipedia.org/wiki/ORM давно отказались от прямого доступа к данным и SQL непосредственно.
Проще написать:
record=model.search([field='данные',field2>0],order=field)
А потом проверить
if record: данные получены
обработать их
А как там реализовать быстрый доступ к данным, пускай думают разработчики СУБД.
17 фев 19, 13:46    [21812054]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
DAiMor
Member

Откуда: Volzhsky -> Moscow -> CZ, Brno -> Moscow
Сообщений: 2709
kalin
kolesov
alatalo,
Я пользую очень часто. Только нужно в обязательном порядке проверять SQLCODE - иначе такой запрос может вернуть мусор из кеша (ну или как там у ИС называется помойка результатов запросов)
И, конечно, только если нужна одна запись, т.е. чаще всего там TOP 1 в этом запросе - чем возиться в ембедеде с курсором, проще классово непримиримо подойти к!

В ORM https://ru.wikipedia.org/wiki/ORM давно отказались от прямого доступа к данным и SQL непосредственно.
Проще написать:
record=model.search([field='данные',field2>0],order=field)
А потом проверить
if record: данные получены
обработать их
А как там реализовать быстрый доступ к данным, пускай думают разработчики СУБД.
Уважаемый kalin, я вас настоятельно прошу, прекратить назвязыватся на бан. Я могу это обеспечить.

Вы бы хоть вникли в терминологию ORM. Это общий термин для фреймворков доступа к реляционным базам данных, и реализаций много разных в том числе разных и под разные СУБД. В продуктах InterSystems тоже можно сказать что есть ORM, правда и немного иначе представлена, если для классических реляционных СУБД ORM идет верхним слоем над реляционными таблицами, то в InterSystems он параллельно над глобалами и SQL уже на его основе.

Кстати зашел я тут по ссылке из вашего профиля, и что я вам могу сказать, в мире уже давно перестатали делать настолько убогие и устаревшие дизайны. Вы же наверно не просто так ссылку там используете, так как ваших работ публичных я больше не вижу, могу оценить только это.
17 фев 19, 14:04    [21812065]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
MX-9
Member

Откуда: LIBAVA
Сообщений: 404
kalin,

по ссылке из Вашего профиля
на систему продажи автобусных билетов по Беларуси
не работает
отзыв

хотел предложить вводить станцию также и латиницей

не у всех туристов есть кириллица на клавиатуре

==================
17 фев 19, 17:26    [21812111]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
kalin
Member

Откуда:
Сообщений: 313
MX-9
kalin,

по ссылке из Вашего профиля
на систему продажи автобусных билетов по Беларуси
не работает
отзыв

хотел предложить вводить станцию также и латиницей

не у всех туристов есть кириллица на клавиатуре

==================

new.ticketbus.by - вводите хоть на китайском :)
18 фев 19, 15:33    [21813166]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1565
kalin
new.ticketbus.by - вводите хоть на китайском :)
Не знаю, как на китайском, но на англійской мове города не ищутся.
18 фев 19, 15:58    [21813236]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
Alexey Maslov
Member

Откуда: СПб
Сообщений: 1565
kalin,

виноват - исправляюсь: если переключить язык интерфейса на английский, то можно. Почему-то подумалось, что язык ввода должен распознаваться автоматически, но видно многого захотел.
18 фев 19, 16:04    [21813256]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
kalin
Member

Откуда:
Сообщений: 313
Alexey Maslov
kalin,

виноват - исправляюсь: если переключить язык интерфейса на английский, то можно. Почему-то подумалось, что язык ввода должен распознаваться автоматически, но видно многого захотел.

Да сделать можно поиск с любого языка, там пару строчек кода. Просто такой задачи не ставилось
18 фев 19, 16:31    [21813326]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
kalin
Member

Откуда:
Сообщений: 313
Скоро в Минском национальном аэропорту

К сообщению приложен файл. Размер - 133Kb
18 фев 19, 16:36    [21813336]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
MX-9
Member

Откуда: LIBAVA
Сообщений: 404
Alexey Maslov
kalin,

виноват - исправляюсь: если переключить язык интерфейса на английский, то можно. Почему-то подумалось, что язык ввода должен распознаваться автоматически, но видно многого захотел.



ввод не на английском
а просто латиницей на русском

распознавать язык не надо

Moskva --->> Москва
18 фев 19, 22:29    [21813754]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
kalin
Member

Откуда:
Сообщений: 313
MX-9



ввод не на английском
а просто латиницей на русском

распознавать язык не надо

Moskva --->> Москва

Для этого надо вводить поле транслитерации Пока не планировалось. Другой работы завал. Кстати нам на фирму нужны М-щики. Много денег пока не дают.
18 фев 19, 22:54    [21813759]     Ответить | Цитировать Сообщить модератору
 Re: Есть причины отказаться от embedded sql?  [new]
MX-9
Member

Откуда: LIBAVA
Сообщений: 404
kalin
Кстати нам на фирму нужны М-щики. Много денег пока не дают.



Денег не надо.

Работа давай !
19 фев 19, 19:09    [21814761]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M Ответить