powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Посоветуйте ORM
25 сообщений из 35, страница 1 из 2
Посоветуйте ORM
    #37411994
krudensoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исходные данные: WinForms клиент, MS SQL Server (2005, 2008) .NET 2.0
БД большая (складская программа)

Задача следующая:
1. Считать и показать список накладных (100 - 100000 строк);
2. Открыть и отредактировать накладную (шапка + 100-5000 строк товаров) ;
3. Быстро сохранить в одной транзакции эту накладную (шапку и товарку)(система многопользовательская).

Системы, которые за меня будут генерить запросы - не предлагайте, я знаю TSQL лучше, чем они 8).
Написание CRUD на клиенте тоже малоинтересно, в силу его медлительности.

Сейчас использую залив данных на сервер во времянки через Bulk Insert и далее выполнение ХП для валидации и слива в постоянки.
Конечно, возможно, есть еще более быстрый способ быстро слить большой объем данных на сервер, чем bulk. 8)

Премного благодарен. 8)
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412034
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krudensoftСистемы, которые за меня будут генерить запросы - не предлагайте, я знаю TSQL лучше, чем они 8).
Написание CRUD на клиенте тоже малоинтересно, в силу его медлительности.


Хм. Вы точно ORM ищете? Собственно, они и занимаются генерацией CRUD запросов на клиенте.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412051
krudensoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

Дело в том, что мне нужно быстро сохранять данные на сервер.
Сохранение построчно с помощью CRUD комманд - это очень, очень медленно.

Возможно, я что-то путаю.

Чего хочется: некое готовое решение для паттерна MVC (я считал, что ORM и предназначены как раз для его реализации), которое позволяло бы писать свои механизмы для заливки на сервер (или использовало бы описанный мной).
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412066
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krudensoft,

ааа, так вы боитесь построчного обращения к БД? Приличные ORM умеют отправлять запросы пакетами, так что предаврительно изучить возможности конкретной ORM.

Далее буду говорить как большой сторонник NHibernate, за него и агитирую. :)

krudensoftИсходные данные: WinForms клиент, MS SQL Server (2005, 2008) .NET 2.0
БД большая (складская программа)

С 2.0 выбор будет сильно огранчен. Ибо его поддержку даже мелкософт прекратила. Может хотя бы на 3.5 перейти? Но может взять старую версию - NH 2.1.1.

krudensoftЗадача следующая:
1. Считать и показать список накладных (100 - 100000 строк);
2. Открыть и отредактировать накладную (шапка + 100-5000 строк товаров) ;
3. Быстро сохранить в одной транзакции эту накладную (шапку и товарку)(система многопользовательская).


1. 100 - это нормально. Но 100000 зачем? И дело даже не в ORM, просто по сети передавать долго будет. Но вот недавно пробовал на NHibernate скорость загрузки проекции из 400к строк. Заняло несколько секунд.
2-3. Насколько быстро можно выполнить этот пункт зависит не только и не столько от ORM. Но если это обычная операция сохранения, то особой разницы по сравнению с обычным TSQL не заметите.

В остальном оптимизация возможна для каждого конкретного случая.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412119
krudensoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,

Тут не просто сохранение.
При сохранении накладной осуществляется валидация сохраняемых данных и по итогам валидации решается, будет ли сохранен документ в БД или нет.

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

Сохранение балком 100 записей из накладной длится меньше секунды. 3-4 секунды - это уже слишком много.
Впервые столкнувшись с .NET я использовал как раз стандартный книжный подход для DataAdapter`a и он меня жутко разочаровал из-за своей скорости...

Накладные действительно встречаются огромные (это ведь не только приход-расход с контрагентами, но и внутренние инвентаризации, перемещения, а там легко может быть вся матрица склада), к тому же есть куча других документов, которые так же содержат в себе большой объем вводимой(!) информации.

Вот почему и интересовался, есть ли ORM, которые умеют сохранять с помошью BulkInsert или хотя бы дающие возможность переопределить методы сохранения?
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412157
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krudensoft,

Наличие ORM предполагает, что ваша бизнес логика и будет на клинете, либо сервере приложений.
Что касается валидации - надо пробовать на ваших данных и базе. Теоретически, загрузить всю необходимую информацию можно за один поход к БД, проверить валидацию на клиенте, и в случае успеха отправить накладную на в БД. На накладую из 100 строк думаю вполне реально получить результат меньше секудны.

Переопределять методы сохранения, загрузки и т.д. можно. Но в этом случае вы потеряте многие возможности ORM связанные с эффективными запросами к БД.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412255
krudensoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtor,
SolYUtorНаличие ORM предполагает, что ваша бизнес логика и будет на клинете, либо сервере приложений.
Т.е. правильно ли я понял, что вся прелесть ORM в том, что не надо писать запросы?

SolYUtorЧто касается валидации - надо пробовать на ваших данных и базе. Теоретически, загрузить всю необходимую информацию можно за один поход к БД, проверить валидацию на клиенте, и в случае успеха отправить накладную на в БД. На накладую из 100 строк думаю вполне реально получить результат меньше секудны.
У некоторых клиентов базы данных превышают 450Гб. Используется сегментирование и прочие хитрости, чтобы такие обьемы ворочались достаточно шустро. Делать валидацию на клиенте нереально, т.к. за время закачки результатов валидации и слива данных на скул, валидация может устареть.

SolYUtor>Переопределять методы сохранения, загрузки и т.д. можно. Но в этом случае вы потеряте многие возможности ORM связанные с >эффективными запросами к БД.
Спасибо за ответы. Получается, под мои задачи ORM не подходят... Ну или надо менять задачи. 8)
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412296
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krudensoftТ.е. правильно ли я понял, что вся прелесть ORM в том, что не надо писать запросы?
В первую очередь ORM помогает избавится от рутинного CRUD'а. Особенно для простых сущностей. Всякие справочники и т.д. идут на ура, там где надо более сложная логика - приходится потрудится чуть побольше. Но разве с T-SQL дело обстоит так же. :)

krudensoftУ некоторых клиентов базы данных превышают 450Гб. Используется сегментирование и прочие хитрости, чтобы такие обьемы ворочались достаточно шустро. Делать валидацию на клиенте нереально, т.к. за время закачки результатов валидации и слива данных на скул, валидация может устареть.
Вряд ли вы одиноки в своих проблема насчёт 450Гб. И есть много способов оптимизации в т.ч. при работе с ORM. Устаревать валидация не будет, т.к. загрузка данных, валидация, и сохранение накладной идут в рамках транзакции.

SolYUtorСпасибо за ответы. Получается, под мои задачи ORM не подходят... Ну или надо менять задачи. 8).
Скорее вам придётся кардинально менять способы решения задачи. :)
Ибо ORM"ы заточены под DDD, использует все преимущества неведения о сохранямости, улучшает возможности тестирования и надёжность приложения. Но естественно, не бесплатно, некоторое снижение производительности будет. Насколько сильно - зависит от понимания узких мест, возможностей ORM, и вашего уровня владения им. ;)
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412444
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krudensoftИсходные данные: WinForms клиент, MS SQL Server (2005, 2008) .NET 2.0
БД большая (складская программа)
Entity Framework однозначно.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412450
Фотография bured
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Забавный топик. ТС пока не понял что такое ОРМ, но он ему очень нужен.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412455
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krudensoftПосоветуйте ORM

krudensoftСистемы, которые за меня будут генерить запросы - не предлагайте

Великолепно.

krudensoftНаписание CRUD на клиенте тоже малоинтересно, в силу его медлительности.

Ни дать ни взять. Всё чётко.

krudensoftСейчас использую залив данных на сервер во времянки через Bulk Insert и далее выполнение ХП для валидации и слива в постоянки.

Чудо-система, просто пестец какой-то.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412603
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МСУkrudensoftИсходные данные: WinForms клиент, MS SQL Server (2005, 2008) .NET 2.0
БД большая (складская программа)
Entity Framework однозначно.

Видимо первый EF, да?
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37412793
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorВидимо первый EF, да?
Либо ап .NET'а, либо ... ну хибер, согласен )
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413061
Фотография Алексей К
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BLToolKit ещё можно взять. Впрочем, вызывает сомнение необходимость тягать из/в БД NNNNNN записей.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413104
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorСкорее вам придётся кардинально менять способы решения задачи. :)
Ибо ORM"ы заточены под DDD, использует все преимущества неведения о сохранямости, улучшает возможности тестирования и надёжность приложения. Но естественно, не бесплатно, некоторое снижение производительности будет. Насколько сильно - зависит от понимания узких мест, возможностей ORM, и вашего уровня владения им. ;)

Другими словами: нужно четко понимать ограничения ORM и знать, как с этим бороться. А бороться можно только одним способом - подстраиваться под эти ограничения и узкие места, набивать шишки, пытаться понять, что закопано в этом черном ящике.
Процес муторный и долгий.
Помимо этого есть еще один момент - разным пользователям в разные моменты нужны разные срезы данных, а ORM тащит толстый граф, начинаются муторные мультики с ленивыми загрузками. Пока из попытки соединить ужа с ежом ничего путного не получается.
Если сюда прибавить кривую работу с БД, то лучший ORM - отсутствие его как такового.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413378
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVa,

большое спасибо за подтверждение моих слов!
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413428
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей КBLToolKit ещё можно взять. Впрочем, вызывает сомнение необходимость тягать из/в БД NNNNNN записей.
BLToolKit это конечно не ORM, но явно лучше голого ADO.NET.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413455
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaЕсли сюда прибавить кривую работу с БД, то лучший ORM - отсутствие его как такового.
При сложных срезах и прочих телодвижениях всегда есть возможность раскурить срарую добрую хранимую процедуру или функцию, намапленную на свою дата-модель. Для круда и прочего ребячества, коего 90% в более менее серьезном проекте, ORM - то, что доктор прописал. Никаких графов.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413486
SeVa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нет графов, то это только какой-то примитивный классификатор, в остальных 99% - сложный граф
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413592
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как здесь смайлики вставлять? Ну типа :Ржунимагу:

Вы мне скажите нафига Вам ваще ORM сдался если речь идет только об накладных?
Два класса - накладная и товар, товар соответственно списком идет в накладной. Коннектор, команд, риадер... полдня работы и накладные летают только в путь и никаких проблем с производительностью.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413619
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKI,

Если вы думаете, что обработка накладной - это кинуть в базу шапку и товар, то нужен смайлик чтобы поржать над вами. А то что вы описали на полдня, можно сделать за почаса с ORM'ом.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413623
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaЕсли нет графов, то это только какой-то примитивный классификатор, в остальных 99% - сложный граф

Проблемой графов вы не один озадачились. ORM'ы имеют эффективные средства для их загрузки ( или не загруки, it depends).
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413654
Фотография МСУ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SeVaЕсли нет графов, то это только какой-то примитивный классификатор, в остальных 99% - сложный граф
Вовсе нет, я могу использовать "линейные" прокси сущности, объединяющие в себе конкретные атрибуты некоторыъ других сущностей. Такая педаль как-раз и достигается с помощью линк-запросов или сторед объектов в угоду производительности. Всё от задачи зависит.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413715
Фотография EDUARD SAPOTSKI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SolYUtorEDUARD SAPOTSKI,

Если вы думаете, что обработка накладной - это кинуть в базу шапку и товар, то нужен смайлик чтобы поржать над вами. А то что вы описали на полдня, можно сделать за почаса с ORM'ом.
Где я такое писал, что я так думаю? Даже если так, а оно так и есть, Вы можете много придумать реальных операций с накладными которые требуют применений нетривиальных алгоритмов? Примеры в студию! Я чето сходу так и не придумаю.

>>А то что вы описали на полдня, можно сделать за почаса с ORM'ом.

:Ржунимагу: особенно применительно к поставленной задаче.
...
Рейтинг: 0 / 0
Посоветуйте ORM
    #37413773
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EDUARD SAPOTSKIГде я такое писал, что я так думаю? Даже если так, а оно так и есть, Вы можете много придумать реальных операций с накладными которые требуют применений нетривиальных алгоритмов? Примеры в студию! Я чето сходу так и не придумаю.

Сложность не в алгоритмах. А в количестве простых действий, которые надо выполнить в рамках одной транзакции.
...
Рейтинг: 0 / 0
25 сообщений из 35, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Посоветуйте ORM
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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