|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
17-77* достать 50-100 тыс записей, точнее http URL из них (в поле хранилось), и просканировать все, получив ответ http 200/404, обновить статус в таблице в другом поле * достать 50-100 тыс записей с вложенными объектами и сгенерировать для них определенные другие данные, потом сохранить это в БДДля сохранения можно самостоятельно, без EF, генерить SQL-батчи. Использовать для этого EF никто не заставляет. Не нужно вставлять "всё" в один батч, чтобы MSSQL не ругался на его размеры. зы: Странная архитектура. Может она причина всех бед? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 06:11 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
netivanМСУ, вот не надо тут бла бла. решите мне такую задачу, вот есть у вас таблица и в ней есть С1,С2 столбцы, окда. И вам надо из нее вытянуть данные, которые (С1=х1 & С2=х2) ИЛИ (С1=х11 & С2=х21) ... и тд много раз.Ну если не получается одним запросом - делайте несколькими. Будет работать медленно но верно. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 06:18 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей К, а нафига тады орм основная задача орм то как раз запись, читать любой может, а писак маловато будет(усе до сих пор помнят пушкина, а скоко выдающихся читак было, кто их помнит??? токо капицу если в пример привести или перельмана) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 09:29 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
ViPRosосновная задача орм то как раз записьНет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 09:38 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей К, что есть проблемы и с чтением? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 09:56 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
ViPRosа нафига тады орм "если не получается одним запросом - делайте несколькими" (с) ...- Не получается в хранимке сделать задачу одним запросом - Делайте несколькими - А нафига тогда SQL? Сахават, когда ты уже научишься адекватные вопросы задавать? ViPRosосновная задача орм то как раз запись Бред сивой кобылы. Основная задача SQL тоже запись? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 10:03 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУ, ну и что генерит LInq в этом случае? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 11:28 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей К, я же не говорил ,что не работает. Я говорил, что медленно. И вот тут как раз приходит магия t-sql. Я собственно не против Orma, и EF , просто подчеркиваю, что от хранимок все равно не уйти ) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 11:33 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
netivanМСУ, ну и что генерит LInq в этом случае? Вот возьми руки, выпрями их, включи мозг, напиши запрос и посмотри, что он генерит. В чём конкретно вопрос? netivanАлексей К, я же не говорил ,что не работает. Я говорил, что медленно. Разговор о сферической кобыле без упряжки. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 12:13 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУ, разница в том делать тыщу раз (ID=x and ID=x2) OR и так 1000 раз и 10 секунд или делаешь JOIN и получаешь 1 секунду. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 12:15 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
netivanМСУ, разница в том делать тыщу раз (ID=x and ID=x2) OR и так 1000 раз и 10 секунд или делаешь JOIN и получаешь 1 секунду. Ну так не делай тыщу раз (ID=x and ID=x2) OR, а сделай джойн в ORM и получи свою секунду. В чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 12:45 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
МСУ, ну у нас рекурсия. Я тебе дал ссылку на свой вопрос, прочитай ее. Если знаешь как - напиши. Но у меня есть в этом сомнение :) ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 12:51 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
netivanМСУ, ну у нас рекурсия. ORM не умеет работать с CTE, сто раз уже тылдычили. Пиши вьюху / функцию / хп и обвязывай в своём типизированном датаконтексте. В чем сложность? netivanЯ тебе дал ссылку на свой вопрос, прочитай ее. Если знаешь как - напиши. Но у меня есть в этом сомнение :) Я тебе уже ответил: 13538523 13539176 13541607 P.S. Про рекурсию в твоих постах ничего не было ( http://www.sql.ru/forum/actualthread.aspx?tid=978484) ВбросnetivanВот не пойму позволяет сделать Join и таблицей "из памяти" или нет ? Запрос что - то типа: Код: c# 1.
пока что сделал с помощью SP, но неспортивно :( 1. Начинаешь придумывать новые условия? 2. В чем сложность конкретно и понятно задать вопрос? 3. А ты как невинная девица, не знаешь к какому херу примастыриться Говори по-существу - с конкретными примерами и вопросами. 4. Если проблема с рекурсией, так и говори, что имеешь такую-то и такую-то схему, такой-то и такой-то запрос. И что тебе не понятно, как это будет выглядеть в той или иной ORM. Когда научишься вопросы задавать правильно? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 13:19 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
netivanАлексей К, я же не говорил ,что не работает. Я говорил, что медленно. И вот тут как раз приходит магия t-sql. Я собственно не против Orma, и EF , просто подчеркиваю, что от хранимок все равно не уйти )Я тоже не говорил что не работает. Просто в моём понимании: "работает медленнее чем надо" == "не работает" :-) netivanМСУ, разница в том делать тыщу раз (ID=x and ID=x2) OR и так 1000 раз и 10 секунд или делаешь JOIN и получаешь 1 секунду. 1000 простых запросов вида select * from T where X=@x and Y=@y выполняться будут тоже порядка секунды. А то и быстрее, если сетевой пинг позволит + запустить их одновременно асинхронно. зы: Почему данных, с которыми нужно джойнить, нет в базе? Может с архитектурой что-то не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 13:23 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
ViPRosАлексей К, что есть проблемы и с чтением?У меня проблем нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 13:24 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей К, все равно не согласен, медленнее будет полюбому, даже пусть 5 секунд против 2. Тут я делаю один запрос и получаю быстро то что надо. а тут надо будет делать 1000, а если у меня 1000 таких в секунду что получаем? Вообщем вывод - то какой- orm не на все способен. Думаю на этом надо завершить дискуссию. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 14:24 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей КCat2Ну, матом не крыл, но "идиотами" или неким подобным обзывал Это же просьба относится ка Алексею К. Бывалоча начнется дискуссия, я бы еще чего мог сказть - ан нет. МСУ и Алексей поцапались и тему закрыли.Вы что-то путаете. Мы с МСУ никогда не ругались. Все наши с ним дискуссии всегда были в рамках приличия. Прошу прощения. Они с SeVa ругаются ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 20:10 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Получить может. Соединится не может. МСУНа пальцах еще раз: в двухзвенной архитектуре пользователь ПО может безпрепятственно получить строку соединения к БД (пусть даже если ты строишь ПО с помощью виндовой аутентификации в БД). Ты считаешь нормальной практикой, если юзеры (пусть даже особо продвинутые или не очень) начнут хаотично юзать БД через сторонние клиенты (Excel, Access, Management Studio и пр.), делать большие выборки, ковыряться во внутрях БД и искать узкие места? Уже сам факт возможности попадания пользователя в БД, тем более сторонними средствами - вопиющ и опасен. Я уже не говорю про двухзвенки, в которых строка соединения к БД идет от sa либо от достаточно привилегированной сиквельной учетной записи - за такое вообще расстрел на месте. Cat2, что не понятно по безопасности? Вопросы, комментарии, замечания приветствуются. Получить может. Соединится не сможет, если его виндовой группе не предоставлено право на доступ к конкретной базе. Впрочем, могут быть более мягкие варианты. Например, все Domain Users включены в группу public одной из баз. В этом случае они могут увидеть названия таблиц. И все. Никакого доступа из Excelя не получится, если доступ дается не через разрешения на иаблицы, а через разрешения на ХП. Разумеется, если используется ОРМ, то кому-то будут даны прямые права на таблицы и можно будет, при известных знаниях, лазать к базе чем угодно. При использовании хранимых процедур пользователи не знают их названий и не знают их параметров. Но даже если и знают, то не смогут сделать ничего того, что не позволдяют сделать хранимки. Ты как-то писал про "тупые хранилища". Приходится напомнить, что эти хранилища не тупые. Их можно тупо использовать и превратить в "тупые хранилища". Настоящая правильно спроектированная база сама должна поддерживать целостность и непротиворечивость, огранирчения которой нельзя обойти никаким способом. Ну, разумеется, кроме снятия ограничений администратором. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 20:26 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
MasterZivИначе выигрыш только в удобстве оформления кода, проигрыш в привязке к конкретной субд. Вы постоянно пишете приложения которые должны работать со всеми существующими СУБД? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 20:28 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
MasterZivCat2Не все можно сделать с клиента хорошо. Например, транзакции. Ну, это ты не прав. Просто не прав. Может что-то ещё бы привёл в виде примера -- я бы согласился. Но не транзакции. Допустим мы открываем транзакцию на клиенте из двух запросов. В промежутке между ними отвалилась сеть. Первый запрос заблокировал какие-то ресурсы. (я знаю про версионники! Но и в этом случае незавершенная транзакция ни к чему хорошему не ведет) Они, конечно, не будут заблокированы вечно. СУБД через разумный промежуток времени откатит эту "зависшую" транзакцию и снимет блокировки. Однако это все таки будет промежуток времени. Транзакция с сервера будет выполнена даже если клиент умрет страшной смертью ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 20:35 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
MasterZivCat2Хранимые процедуры всегда будут чуть быстрее, так как они уже откомпилированы и для них обязательно создан план запроса. Это сильно зависит от СУБД. Подготовленные запросы также во многих СУБД откомпилированы. Планы некоторые СУБД кэшируют и для простых запросов, а не только для процедур. Не все запросы простые. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 20:36 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
MasterZivKorbanz, В общем, подытоживая, могу предложить следующий "решатель" проблемы. если надо использовать CRUD -запросы (CreateReadUpdateDelete) и у тебя не одна поддерживаемая СУБД, стоит использовать ORM. Если надо писать только аналитические запросы (SELECT-ы ) то ORM применять бесполезно если поддерживается только одна СУБД, стоит писать код в виде хранимых процедур. если поддерживается одна-две СУБД, можно тоже писать код в виде хранимых процедур, несколько раз, для каждой СУБД свой вариант. Естественно, только если процедур немного (10-20). если запросов много, и много поддерживаемых СУБД, (и запросы аналитические, естественно), то лучше подумать о оформлении кода SQL на клиенте напрямую на SQL в виде универсального, стандартного SQL-я, иногда это получаться не будет, тогда надо писать конкретный запрос в N вариантах, для каждой СУБД. Не согласен ни с одним пунктом. ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 20:41 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Алексей КИмею самописный несложный кодогенератор, удобный для дальнейшей поддержки и модификации. +1 тоже ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 20:42 |
|
Организация запросов из десктопного клиента к субд
|
|||
---|---|---|---|
#18+
Cat2MasterZivпропущено... Ну, это ты не прав. Просто не прав. Может что-то ещё бы привёл в виде примера -- я бы согласился. Но не транзакции. Допустим мы открываем транзакцию на клиенте из двух запросов. В промежутке между ними отвалилась сеть. Первый запрос заблокировал какие-то ресурсы. (я знаю про версионники! Но и в этом случае незавершенная транзакция ни к чему хорошему не ведет) Они, конечно, не будут заблокированы вечно. СУБД через разумный промежуток времени откатит эту "зависшую" транзакцию и снимет блокировки. Однако это все таки будет промежуток времени. Транзакция с сервера будет выполнена даже если клиент умрет страшной смертью то есть клиент отправил запрос серверу приложений, отвалился, сервер приложений его выполнил (или не выполнил). в чем проблема? ... |
|||
:
Нравится:
Не нравится:
|
|||
28.11.2012, 21:10 |
|
|
start [/forum/topic.php?fid=20&msg=38057057&tid=1405536]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
32ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
2ms |
others: | 308ms |
total: | 442ms |
0 / 0 |