powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как используете Query в классах?
9 сообщений из 9, страница 1 из 1
Как используете Query в классах?
    #39772403
Фотография kolesov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С наступающими!
Вот тут увидел про "Например теже Query в классах" и немного задумался.
Кто может поделиться, как используете и в чем фича?
А то я, может и к собственному стыду, писал их только под сложные запросы, где эти самые Query пишутся в четыре метода - но такие нужны три раза на всю систему. Иногда один ;)
А у вас?
...
Рейтинг: 0 / 0
Как используете Query в классах?
    #39772427
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Query можно писать вместо любых других запросов, любой сложности
но плюсы Query еще и в том что они могут быть не только SQL, а и программные.
Например в ZEN приложении удобно, когда все через Query. Вплоть для сгенерированных результатов.
У меня есть варианты, когда query должен вернуть список классов и он генерируется во время компиляции, и в runtime уже нет никаких вычислений, потому что уже нет необходимости (код меняется только у разработчика, и никогда на продакшене).

И так же большим плюсом идет, то что все query сразу становятся функциями, довольно быстро и легко их вызывать.
Код: sql
1.
2.
3.
4.
set rs = ##class(%File).FileSetFunc("/tmp")
while rs.%Next() {
  write rs.Name
}
...
Рейтинг: 0 / 0
Как используете Query в классах?
    #39772447
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Продолжим традицию поиска недостатков в разных способах выполнения запросов.
В данном случае недостаток в том, что запросов может быть миллион всяких разных, затрагивающих разные классы, зачастую похожих, но не одинаковых. Со временем вы можете захламить класс. Править их страшно, потому что где, откуда используются (я понимаю, можно поискать, но что даст список из десятков результатов - и что с этим делать?)

kolesovгде эти самые Query пишутся в четыре метода - но такие нужны три раза на всю систему. Иногда один ;)Не всем так везет :-)
Хотя первый раз все равно самый страшный.

DAiMorИ так же большим плюсом идет, то что все query сразу становятся функциями, довольно быстро и легко их вызывать.Прикольно, не знал.
Но вспомнил фишку, которые тоже, наверное, не все знают. Что классметоды после добавления признака sqlproc можно использовать в запросах как процедуру, возвращающую значение.
...
Рейтинг: 0 / 0
Как используете Query в классах?
    #39772473
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.В данном случае недостаток в том, что запросов может быть миллион всяких разных, затрагивающих разные классы, зачастую похожих, но не одинаковых. Со временем вы можете захламить класс. Править их страшно, потому что где, откуда используются (я понимаю, можно поискать, но что даст список из десятков результатов - и что с этим делать?)Вообще то же справедливо для любых sql запросов, а в некоторых случаях начинается еще и дублирование. И часто запросы даже почти ничем не отличаются, и можно было бы сделать один вместо такого количества
...
Рейтинг: 0 / 0
Как используете Query в классах?
    #39772488
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

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

Да, захламить можно и методами по той же причине (захотелось - сделал новый метод), но методы при минимальной дисциплине получаются более атомарными, а запросы атомарными не сделаешь.

Кстати, запросы как элемент класса - это по своей сути динамические(кэшированные) или ESQL(прекомпилированные) запросы? Как они при изменении структуры класса работают? У меня ощущение, что они динамические.
...
Рейтинг: 0 / 0
Как используете Query в классах?
    #39772501
Sheonn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Блок А.Н.,

Вроде эти запросы преобразуются в создание объекта SQLStatement
...
Рейтинг: 0 / 0
Как используете Query в классах?
    #39773548
Ptn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DAiMor,

Хм... как то этот способ прошел мимо меня.
Правда предварительные тесты показали существенное замедление супротив обычного
Код: c#
1.
2.
		set rs = ##class(%ResultSet).%New("classname:queryname")
		set sc=rs.Execute(arg1,arg2,...)



Возможно дело в том что у нас принято все данные запроса сразу запихивать в многомерный qHandle от Execute метода, нужно будет еще покапаться.
...
Рейтинг: 0 / 0
Как используете Query в классах?
    #39773606
Фотография DAiMor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ptnпоказали существенное замедление супротив обычногоЭто вроде справедливо для старых версий, в новых вроде должно быть лучше.
...
Рейтинг: 0 / 0
Как используете Query в классах?
    #39777789
alatalo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Блок А.Н.Прикольно, не знал.
Но вспомнил фишку, которые тоже, наверное, не все знают. Что классметоды после добавления признака sqlproc можно использовать в запросах как процедуру, возвращающую значение.

Тут помнится был полезный список автогенерированных методов: https://community.intersystems.com/post/useful-auto-generated-methods
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как используете Query в классах?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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