Re[11]: LINQ vs Store Procedure
От: IB Австрия http://rsdn.ru
Дата: 25.03.09 12:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Как это нет?

А вот так. 90% запросов тупо прошиты в коде, в том числе и тот, который IT переписал.

VD>В прочем ты не раз оптимизировал код сервера, но он все равно упорно продолжает тормозить.

Ни я, ни кто другой, никогда не пытались привести там все в порядок, просто лечили наиболее острые проблемы. К чему такой подход приводит вообщем-то очевидно и совершенно не зависит от используемого инструмента и даже области — линк, хранимки, C++, C# — без разницы.

VD> IT замечательно продемонстрировал, что с помощью линка и грамотного подхода можно резко увеличить производительность.

А с этим кто-то спорил?

VD>Как раз к триггерам у меня особых вопросов нет.

А у меня есть. И именно об этом я и писал, а не про линк.

VD>Кстати, а теперь можно писать триггеры на донтете?

В каком смысле? Ты можешь конечно задействовать код написанный на дотнете из триггера, равно как и из любой хранимки, но на практике толку от этого мало.

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

Но я этой темы здесь не касался и писал совершенно не об этом.
Мы уже победили, просто это еще не так заметно...
Re[9]: LINQ vs Store Procedure
От: IB Австрия http://rsdn.ru
Дата: 25.03.09 12:55
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Возможно. А возможно и нет.

VD>Поделись своими мыслями... поглядим.
Это на хорошую статью потянет, а они уже написаны. Вот здесь например: http://technet.microsoft.com/ru-ru/library/cc966425(en-us).aspx

VD>Понятно, что какие-то там нюансы существуют. Но для понимания общего принципа оно не нужно.

Ты как-то совсем общий принцип урезал. =)
Мы уже победили, просто это еще не так заметно...
Re[12]: LINQ vs Store Procedure
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.03.09 14:03
Оценка:
Здравствуйте, IB, Вы писали:

VD>>Кстати, а теперь можно писать триггеры на донтете?

IB>В каком смысле? Ты можешь конечно задействовать код написанный на дотнете из триггера, равно как и из любой хранимки, но на практике толку от этого мало.

Если есть возможность создавать хранимки на дотнете, то было бы логично сделать интерфейс и для создания триггеров на дотнете. То есть, не вызвать дотнетный код из T-SQL-ного триггера, а напрямую подключать метод в качестве обработчика. Что-то типа событий.

Судя по твоей реакции такого нет. А жаль.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: LINQ vs Store Procedure
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.03.09 14:10
Оценка:
Здравствуйте, IB, Вы писали:

IB>Это на хорошую статью потянет,


Ну, так за чем дело встало?

IB>а они уже написаны. Вот здесь например: http://technet.microsoft.com/ru-ru/library/cc966425(en-us).aspx


Это на буржуйском. Плюс статья явно устарела. Статья 2004 года, а в 2008, как я понимаю как раз в области планов были серьезные изменения.

VD>>Понятно, что какие-то там нюансы существуют. Но для понимания общего принципа оно не нужно.

IB>Ты как-то совсем общий принцип урезал. =)

Ты всю ветку читал? Видел на что я отвечал?
Человек не понимает самого общего принципа кэшироания планов. От того сделал вывод, что динамические запросы в хранимках всегда ухудшают производительность. А дело (скорее всего) было в том, что EXEC применялся, а параметры были в код зашиты. В итоге кэшировалось все подряд и толку от такого кэша практически не было.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: LINQ vs Store Procedure
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.03.09 14:11
Оценка:
Здравствуйте, IB, Вы писали:

IB>Это на хорошую статью потянет, а они уже написаны. Вот здесь например: http://technet.microsoft.com/ru-ru/library/cc966425(en-us).aspx


Кстати, ты нам намекал на то, что какие-то статьи для РСДН-а обещал.
Сейчас как раз материалов практически нет.
Что-нибудь будет?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: LINQ vs Store Procedure
От: Lloyd Россия  
Дата: 25.03.09 14:11
Оценка: 44 (2)
Здравствуйте, VladD2, Вы писали:

VD>Если есть возможность создавать хранимки на дотнете, то было бы логично сделать интерфейс и для создания триггеров на дотнете. То есть, не вызвать дотнетный код из T-SQL-ного триггера, а напрямую подключать метод в качестве обработчика. Что-то типа событий.


VD>Судя по твоей реакции такого нет. А жаль.


CREATE TRIGGER trigger_name ON table_name FOR INSERT 
AS EXTERNAL NAME assembly_name.class_name.method_name
Re[14]: LINQ vs Store Procedure
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.03.09 14:13
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>
L>CREATE TRIGGER trigger_name ON table_name FOR INSERT 
L>AS EXTERNAL NAME assembly_name.class_name.method_name
L>


А как должен метод выглядеть?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: LINQ vs Store Procedure
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 25.03.09 14:21
Оценка: 40 (1)
Здравствуйте, VladD2, Вы писали:

http://www.rsdn.ru/article/db/yukondotnet.xml#EOWAE
Автор(ы): Антон Злыгостев (Sinclair)
Дата: 11.07.2004
В статье кратко рассмотрены основные нововведения в MS SQL Server 9.0 "Yukon", связанные с поддержкой разработки серверной логики на .NET.
и солнце б утром не вставало, когда бы не было меня
Re[15]: LINQ vs Store Procedure
От: Lloyd Россия  
Дата: 25.03.09 14:29
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>
L>>CREATE TRIGGER trigger_name ON table_name FOR INSERT 
L>>AS EXTERNAL NAME assembly_name.class_name.method_name
L>>


VD>А как должен метод выглядеть?


< method_specifier >

For a CLR trigger, specifies the method of an assembly to bind with the trigger. The method must take no arguments and return void. class_name must be a valid SQL Server identifier and must exist as a class in the assembly with assembly visibility. If the class has a namespace-qualified name that uses '.' to separate namespace parts, the class name must be delimited by using [ ] or " " delimiters. The class cannot be a nested class.

Re[16]: LINQ vs Store Procedure
От: Serginio1 СССР https://habrahabr.ru/users/serginio1/topics/
Дата: 25.03.09 14:46
Оценка:
Здравствуйте, Lloyd, Вы писали:
Кстати много ли изменений по сравнению http://www.rsdn.ru/article/db/yukondotnet.xml
Автор(ы): Антон Злыгостев (Sinclair)
Дата: 11.07.2004
В статье кратко рассмотрены основные нововведения в MS SQL Server 9.0 "Yukon", связанные с поддержкой разработки серверной логики на .NET.
и солнце б утром не вставало, когда бы не было меня
Re[17]: LINQ vs Store Procedure
От: Lloyd Россия  
Дата: 25.03.09 14:49
Оценка:
Здравствуйте, Serginio1, Вы писали:

S>Кстати много ли изменений по сравнению http://www.rsdn.ru/article/db/yukondotnet.xml
Автор(ы): Антон Злыгостев (Sinclair)
Дата: 11.07.2004
В статье кратко рассмотрены основные нововведения в MS SQL Server 9.0 "Yukon", связанные с поддержкой разработки серверной логики на .NET.


Не знаю. Я ни статьи не читал, ни с CLR-триггерами не работал.
Re[9]: LINQ vs Store Procedure
От: IB Австрия http://rsdn.ru
Дата: 25.03.09 19:53
Оценка:
Здравствуйте, kenzo_u, Вы писали:

_>Почему фиолетово для квалифицированного разработчика и почему только хранимки для стажеров?

Потому что у квалифицированного DAL будет, а значит где конкретно находятся запросы не столь важно, а у стажера — все равно будет каша, так хоть запросы отдельно лягут, да и руку набивать надо.
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Мы уже победили, просто это еще не так заметно...
Re[11]: LINQ vs Store Procedure
От: IB Австрия http://rsdn.ru
Дата: 25.03.09 20:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, так за чем дело встало?

Я последние лет несколько сиквелом не очень плотно занимаюсь.

VD>Это на буржуйском. Плюс статья явно устарела.

Она более чем актуальна.

VD> Статья 2004 года, а в 2008, как я понимаю как раз в области планов были серьезные изменения.

Серьезных не было. Там планомерные улучшения с 2000-й версии.

VD>Ты всю ветку читал? Видел на что я отвечал?

Мнизу вверх, сначало это, а потом то что раньше — по нетбуку совсем не удобно.. )
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Мы уже победили, просто это еще не так заметно...
Re[13]: LINQ vs Store Procedure
От: IB Австрия http://rsdn.ru
Дата: 25.03.09 20:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Судя по твоей реакции такого нет. А жаль.

Нет, у меня реакция — "есть но непонятно зачем". На практике такое пожалуй только для поддержки легаси кода нужно, ну или какая-нибудь экзотика...
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Мы уже победили, просто это еще не так заметно...
Re[11]: LINQ vs Store Procedure
От: IB Австрия http://rsdn.ru
Дата: 25.03.09 20:21
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Сейчас как раз материалов практически нет.

VD>Что-нибудь будет?
Ушло к тебе на почту...
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Мы уже победили, просто это еще не так заметно...
Re[14]: LINQ vs Store Procedure
От: IB Австрия http://rsdn.ru
Дата: 25.03.09 21:23
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Я еще не видел, чтобы интеграция работала лучше компилятора. У него и времени больше, и проблем меньше.

Я тебе про DBPro еще два года назад рассказывал, ты и тогда не верил, а проверить поленился...
Все очень не плохо работает, те недостатки которые ты описываешь, этот инструмент убирает, правда определенная культура нужна.
А линк, к сожалению не панацея, нельзя весь код на него перенести.

VD>Лучше бы чтобы все автоматом менялось.

Можно и автоматом, можно и в строковых константах.

VD>Гы. Любимый аргумент любителей скриптов. "А у нас юнит-тесты есть".

Дело не в скриптах, а в том, что юнит-тесты много где могут пригодится, в том числе и в БД.
... << RSDN@Home 1.2.0 alpha 4 rev. 1082>>
Мы уже победили, просто это еще не так заметно...
Re[37]: LINQ vs Store Procedure
От: Sinix  
Дата: 26.03.09 01:10
Оценка:
Здравствуйте, gandjustas!

G>Видимо про UI недопоняли друг друга.

G>Разделяю вашу точку зрения.

Дико извиняюсь — без причины наехал на человека, когда вокруг столько кандидатов... упс

G>Если пытаться вытягивать кучу связанных сущнстей из БД, то это может превратиться в огромную портянку заджойненых данных.

G>Передача сериализованных объектов бдет экономичнее.

Не дошло — вы про денормализацию? Бесполезно ведь для работы с данными, разве что только для отчётов...
Или вы про грабли с выборкой части данных? Если второе — то решается кучей способов. Как правило заводитсся view типа UserOrders, который внутри себя определяет какие из заказов доступны текущему пользователю, и пишутся хранимки, что жойнят view c нужными таблицами (допустим, orders и orderdetails) и отдают нужные данные.
С точки зрения клиента в базе вообще нет данных, кроме тех что он выгребает (на самом деле и тех нет по большей части — они живут в других базах).

S>>На выходе имеем мешанину из сущностей различных типов, причём отслеживать изменения в контексте невозможно. Кэш нельзя использовать для удобной выборки локальных данных, для валидации при изменениях и для биндинга. Зачем он нужен в десктоп-клиенте?

G>.OfType ?
G>Для биндинга и валидации одной сущности и кеш не нужен. Достаточно одного объекта.
G>Для графа надо создавать отдельный viewmodel.

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

Спасибо за беседу!
Re[5]: LINQ vs Store Procedure
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.03.09 03:03
Оценка:
Здравствуйте, kenzo_u, Вы писали:

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

Ничего, есть и более плохой вариант
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[34]: LINQ vs Store Procedure
От: Sinclair Россия https://github.com/evilguest/
Дата: 26.03.09 04:45
Оценка:
Здравствуйте, Sinix, Вы писали:
S>0) почему база-то будет загибаться??? ей практически всё равно сколько данных отдавать, если они хорошо нормализованы и хороший index coverage. Скорее наоборот, куча мелких обращений обойдётся дороже.
S>1) у нас всё ещё десктоп клиент, так? В память выгребаются только данные, нужные клиенту. От пары тысяч сущностей он загнётся?
Не понимаю, как вы собираетесь проверить глобальную уникальность по паре тысяч сущностей. Пожалуйста, поподробнее — это может быть переворот в управлении данными!
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[35]: LINQ vs Store Procedure
От: Sinix  
Дата: 26.03.09 06:46
Оценка:
Здравствуйте, Sinclair!

Я пишу неправильные буквы, не обращайте внимания

Если коротко, там обсуждалась только нагрузка на одного клиента, где-то рядом ещё обсуждали проблему локальной валидации и возможность сделать её декларативно силами EF.

На глобальную валидацию никто вроде не замахивался.

Есть желание — напишу кучу других неправильных букв про то, чем хороши локальные проверки.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.