Size: a a a

2020 February 29

AZ

Andrey Zubov in Delphi & Lazarus
У меня выборка по данным где постоянно нужны около 20 таких справочников.
источник

AZ

Andrey Zubov in Delphi & Lazarus
Понятно что в орм я могу сделать свойство без мэппинга в бд и расчёте расшифровки и справочника, но скорость упадёт значительно
источник

AZ

Andrey Zubov in Delphi & Lazarus
И теперь сравни это с одним стандартным джойном на справочник. Тут орм вообще в схему данных не вписывается
источник

AZ

Andrey Zubov in Delphi & Lazarus
Если в таблице нет ПК на одно поле орм начинает извращаться
источник

SB

Sergey Bodrov in Delphi & Lazarus
Мне кажется, с упоминанием джойна вы путаете ORM (объектную модель) и отчёты.
источник

GB

George Bakhtadze in Delphi & Lazarus
Andrey Zubov
орм не серебряная пуля, какие-то вещи на нем просто смысла нет реализовывать. например в медицине все федеральные справочники имеют вид id, name, datebeg, dateend. при этом id повторяющийся и расшифровка name соответственно зависит от диапазона datebeg-dateend, т.е в разные диапазоны времени один и тот же id расшифровывается по разному и вот такое на орме уже делается просто через зад, я бы даже сказал просто не имеет смысла.
составной ключ чтоли? прекрасно ормами обрабатывается. не всеми конечно
источник

GB

George Bakhtadze in Delphi & Lazarus
Andrey Zubov
данные которые приходят в больших объемах используют именно федеральный формат справочников, т.е переход на какой-то свой формат породит другие проблемы, например обновление справочника, если обычно то это банальный транкейт и батчем заливка всего справочника, а в своем случае надо построчно обходить, сравнивать и обновлять только то что изменилось. Ну и при загрузке данных тоже самое, вместо быстрой загрузки батчем придется анализировать практически построчно для выявления своего собственного id из справочника
справочники при обновлении обычно в виде обновлений приходят. тот же ФИАС. можно обновить то, что обновилось
источник

AZ

Andrey Zubov in Delphi & Lazarus
George Bakhtadze
составной ключ чтоли? прекрасно ормами обрабатывается. не всеми конечно
ну это не фиас к сожалению :) это медицина
источник

AZ

Andrey Zubov in Delphi & Lazarus
Sergey Bodrov
Мне кажется, с упоминанием джойна вы путаете ORM (объектную модель) и отчёты.
я просто для сравнения показал что там где джойн в обычной схеме прямой работы с данными прекрасно справляется в одну строку, орм нормально не вытягивает
источник

ДП

Дмитрий Плясунов in Delphi & Lazarus
вот у нас пользователи хотя к одной ентити подключить другую, да там join, но не по ключу, а типа найти последнее предыдущее событие по отношению к текущему, я вот хз как такое в ОРМах сделать (каюсь, не спец), а если сделать, то не думаю, что он будет быстрее sql запроса
источник

ДП

Дмитрий Плясунов in Delphi & Lazarus
пробовать, конечно, нужно, поэтому и возникают дурные мысли - ОРМ на хранимках )
источник

ДП

Дмитрий Плясунов in Delphi & Lazarus
зачастую чтобы вытащить таблицу пользователям пару раз в ХП вытянешь данные во временные таблицы, потом только джойнишь, иначе тормоза, короче изголяемся как можем)
источник

AZ

Andrey Zubov in Delphi & Lazarus
классический орм как мне кажется на хранимках не сделать, ну представь что у тебя структура энтити будет зависеть от каких-то внешних параметров. так как хранимка в зависиомости от параметров может возвращать не только разные по содержанию датасеты но и вообще разные по структуре. дальше, Орм часто используют для веба и рест апи в котором есть PATCH, т.е обновление только нужных полей по указанному id объекта, на прямой работе с таблицей как это сделано у орм никаких проблем, но в хранимку то тебе надо передавать весь набор полей в качестве параметров. Ну и так далее, т.е что-то реализовать можно, но это будет не орм :)
источник

N

Nik in Delphi & Lazarus
Дмитрий Плясунов
вот у нас пользователи хотя к одной ентити подключить другую, да там join, но не по ключу, а типа найти последнее предыдущее событие по отношению к текущему, я вот хз как такое в ОРМах сделать (каюсь, не спец), а если сделать, то не думаю, что он будет быстрее sql запроса
ну, джойнить в ОРМах - на мой взгляд это извращение ))
источник

N

Nik in Delphi & Lazarus
Дмитрий Плясунов
пробовать, конечно, нужно, поэтому и возникают дурные мысли - ОРМ на хранимках )
не ОРМ на хранимках, а просто не надо резать стандартный функционал работы с БД )
источник

AZ

Andrey Zubov in Delphi & Lazarus
Дмитрий Плясунов
вот у нас пользователи хотя к одной ентити подключить другую, да там join, но не по ключу, а типа найти последнее предыдущее событие по отношению к текущему, я вот хз как такое в ОРМах сделать (каюсь, не спец), а если сделать, то не думаю, что он будет быстрее sql запроса
в ормах это делается введением значения которое не мэппится в базу а вычисляется прямо в классе, ну т.е некое подобие вычисляемого поля
источник

ДП

Дмитрий Плясунов in Delphi & Lazarus
Andrey Zubov
классический орм как мне кажется на хранимках не сделать, ну представь что у тебя структура энтити будет зависеть от каких-то внешних параметров. так как хранимка в зависиомости от параметров может возвращать не только разные по содержанию датасеты но и вообще разные по структуре. дальше, Орм часто используют для веба и рест апи в котором есть PATCH, т.е обновление только нужных полей по указанному id объекта, на прямой работе с таблицей как это сделано у орм никаких проблем, но в хранимку то тебе надо передавать весь набор полей в качестве параметров. Ну и так далее, т.е что-то реализовать можно, но это будет не орм :)
🤝
источник

N

Nik in Delphi & Lazarus
Andrey Zubov
классический орм как мне кажется на хранимках не сделать, ну представь что у тебя структура энтити будет зависеть от каких-то внешних параметров. так как хранимка в зависиомости от параметров может возвращать не только разные по содержанию датасеты но и вообще разные по структуре. дальше, Орм часто используют для веба и рест апи в котором есть PATCH, т.е обновление только нужных полей по указанному id объекта, на прямой работе с таблицей как это сделано у орм никаких проблем, но в хранимку то тебе надо передавать весь набор полей в качестве параметров. Ну и так далее, т.е что-то реализовать можно, но это будет не орм :)
именно поэтому я называю свою затею недоОРМ ))
источник

ДП

Дмитрий Плясунов in Delphi & Lazarus
Andrey Zubov
в ормах это делается введением значения которое не мэппится в базу а вычисляется прямо в классе, ну т.е некое подобие вычисляемого поля
Боюсь это непроизводительно )
источник

AZ

Andrey Zubov in Delphi & Lazarus
Дмитрий Плясунов
Боюсь это непроизводительно )
это еще мягко сказано :)
источник