|
|
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
ну что бы не мучился - на вход процедуры подается таблица форинкеев родительской таблицы на всю глубину помеченого подграфа ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 18:06 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
а в случае динамической скл подается сам актуальный скл ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 18:09 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
для джойна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 18:11 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Megabyte... ХП - это защита от дурака. Использование правильно написанных ХП не приведет данные в БД к некорректности, не даст криворукому програмисту, разрабатывающему клиента, поломать данные. У него просто не будет прав на это.. предполагается, что ХП пишут исключительно пряморукие программисты или, что с помощью ХП поломать данные в принципе невозможно? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2011, 18:17 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
ChopMegabyte... ХП - это защита от дурака. Использование правильно написанных ХП не приведет данные в БД к некорректности, не даст криворукому програмисту, разрабатывающему клиента, поломать данные. У него просто не будет прав на это.. предполагается, что ХП пишут исключительно пряморукие программисты или, что с помощью ХП поломать данные в принципе невозможно? :)Имеется в виду, что во первых, защита на нескольких уровнях повышает вероятность её срабатывания. Во вторых, ХП пишут программисты, которые разработчики БД. Они могут неумелыми действиями поломать веб-сервер, но данне - это их родное :-) Это называется "специализация". Ну и код в ХП действительно более "прямой". Обычно программисты, разрабатывающие клиента, не представляют, какие запросы выполняются на сервере в результате выполнения их кода. Ну, может быть, один из 20 представляет, обычно это кто-то повыше тимлида. А вот для программиста ХП такое представить трудно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 00:05 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
alexeyvgНе увидел я такого изменения темы, по крайней мере в вашем первом посте. хм, в моем первом посте я спрашивал что делать, если клиент написан с ООП подходом, и даже приводил примеры классов. По определению, если строиться доменная модель, то вся логика там и находиться (если это не какой-нибудь анемик, но даже в этом случае логика просто выноситься в классы сервисов). Тогда уж скажите, о какой архитектуре вы думали, что есть и ООП и вся логика в БД. alexeyvgКонечно, если БД - это просто не стирающиеся при выключении питания переменные, интерфейсов нет, то, конечно, использование ХП не имеет смысла. вот именно. Какая-то часть логики в базе правда в любом случае присутствует в виде ограничений на данные, но не более. Маппинг на ХП в этом случае приведет к создания CRUD процедур для каждой сущности и крайне неэффективной работе с БД ViPRosты просто не въехал :) грузится именно помеченный подграф(макротип, бизнес-объект, агрегатный класс,,. как хошь назови), а не произвольный процедуру эту дописывает автоматом на случай нулл даже адо.нет :) к картинкам бы надо было посерьезнее присмотреться ну так покажи уже код наконец. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 01:01 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Megabyte Код: plaintext 1. 2. 3. так. Покажи-ка тогда что делать, когда таких параметров 15 штук :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 01:03 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
StalkerS, это закрытая система все что тебе надо было, я сказал садись и делай :) когда 1 и 15, 15 называется рутиной, а рутину автоматизируют ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 01:30 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
ViPRosэто закрытая система т.е. кода ты даже и не видел ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 02:15 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
alexeyvgИмеется в виду, что во первых, защита на нескольких уровнях повышает вероятность её срабатывания. Во вторых, ХП пишут программисты, которые разработчики БД. Они могут неумелыми действиями поломать веб-сервер, но данне - это их родное :-) Это называется "специализация". "которые разработчики БД" вполне могут быть такие же криворукие, как и любые другие програмисты родные для них данные или не очень родные... я сейчас пишу отчет по ... виду страхования весь отчет - чистый SQL - система другого не предполагает (будет время - реализую оный и через php, и через .NET) увы и ах, при моем мнении, что БД - исключительно хранилище данных приходится вот такое делать могу сказать, что когда вкапываешься в структуру БД... слов нет, одни выражения... многоэтажные разработчики БД не только не знают, что такое внешние ключи, но и о никаких нормальных формах даже не слышали у них - клипперовская система 20-летней давности с костылями "под винду"... :( отсутствие документации... это даже не пэстня... alexeyvgОбычно программисты, разрабатывающие клиента, не представляют, какие запросы выполняются на сервере в результате выполнения их кода. Ну, может быть, один из 20 представляет, обычно это кто-то повыше тимлида. непрадва это, может быть, применимо к конфигурастам 1С (и то не ко всем), но любой студент, к-й клепает сайты на php, пусть самые примитивные, но запросы писать умеет alexeyvgА вот для программиста ХП такое представить трудно. очень даже лехко если "фирма" разрабатывает какую-нить систему, то сомневаюсь, что там работают и "гуру", и "студенты" на разработке модулей не может такого быть - один модуль разрабатывает "гуру", а другой - "студент" либо все - "гуру", либо все - "студенты" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 02:19 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
alexeyvgОбычно программисты, разрабатывающие клиента, не представляют, какие запросы выполняются на сервере в результате выполнения их кода. Ну, может быть, один из 20 представляет, обычно это кто-то повыше тимлида. Кхм... какие-то уж очень тупые у Вас там программисты. Это же как они бедняги данные обрабатывают даже не имея представления о их структуре? Или у Вас только студенты за миску супа? Ну специализация при работе над крупным проектом идет только на пользу, но чтобы писать программу не зная SQL... По теме: имхо linq2sql какбэ не зря придумали. Мы обычно тоже через ХП работаем, но писать бизнес логику на linq2sql удобнее (читай: эффективнее). По сути автоматически делается то, что при Вашем подходе требует написания тучи ХП и тучи кода. Материализовать объекты, сделать сложные выборки с массой условий... Но с другой стороны, конечно, сложнее оптимизировать саму БД.... Вот и гадай, что лучше - туча очень оптимизированных ХП, возвращающих избыточные данные или простые понятные "тупому" программисту средства, делающий запросы, которые возвращают только нужные данные? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 02:31 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
ultra_alexВот и гадай, что лучше - туча очень оптимизированных ХП, возвращающих избыточные данные или простые понятные "тупому" программисту средства, делающий запросы, которые возвращают только нужные данные? зависит от типа приложения.. Если датацентрик - то вся логика обычно отправляется на сервер в ХП. Если сложная ветвистая логика - то доменная модель удобнее. Хотя по большей части будет зависеть от скиллов, которыми обладают разработчики.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 02:41 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
StalkerSзависит от типа приложения.. Вот! В том то и дело, что вместо упертых попыток доказать абсолютную истинность своей точки зрения можно просто определить область применения той или иной технологии. Если приложение использует БД только как хранилище данных, то технически без разницы как делать запросы: через ХП или из кода. Но зато ХП проще поддерживать. Если в приложении есть сложная бизнес-логика, то уже вопрос как оно спроектировано. Если все сделано "красиво" и все сущности материализуются в объекты, то ИМХО правильнее использовать linq2sql. А если бизнес-логика тупо гоняет данные туда-сюда, то проще через ХП. Ну а если есть желание написать ВСЮ бизнес-логику в БД... Ну вот изменились условия задачи (заказчик сказал, что теперь мы вот это рассчитываем не так, а эдак), тогда переделываем мы N ХП и... В 90% случаев код тоже нужно менять. А если код все равно менять, то проще сразу все делать через код. Или я в чем-то не прав? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 03:07 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
PS. Если чессно, я не сталкивался с ситуацией, когда за БД отвечают одни люди, а за программный код другие. У нас небольшая команда и каждый умеет и то и другое. Вот надо мне реализовать такой-то функционал, беру пишу какой мне надо код, какие мне надо ХП и все! Знающие люди, подскажите, как работает команда, когда программер не лазит в БД? Я просто не представляю! Получается я должен пойти к БД-девелоперу и объяснить, что мне нужно, чтобы БД вернула мне такие-то данные. А он через 15 минут говорит: "ок, Саня, можешь юзать sp_Get_bla_bla_bla". Так что-ли? Так может мне быстрее самому написать чем кому-то объяснять? Или в чем тогда выигрыш? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 03:14 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
ultra_alexНу а если есть желание написать ВСЮ бизнес-логику в БД... Ну вот изменились условия задачи (заказчик сказал, что теперь мы вот это рассчитываем не так, а эдак), тогда переделываем мы N ХП и... В 90% случаев код тоже нужно менять. А если код все равно менять, то проще сразу все делать через код. когда клиент тонкий и только дергает ХП с сервера, то при изменении бизнес-логики как-раз таки клиента менять часто не приходиться, a только тогда когда меняется сигнатура методов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 03:23 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Ну я так и написал: Если приложение использует БД только как хранилище данных, то технически без разницы как делать запросы: через ХП или из кода. Но зато ХП проще поддерживать. Если в приложении есть сложная бизнес-логика... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 03:28 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
alexeyvgОбычно программисты, разрабатывающие клиента, не представляют, какие запросы выполняются на сервере в результате выполнения их кода. Ну, может быть, один из 20 представляет, обычно это кто-то повыше тимлида. Chopнепрадва это, может быть, применимо к конфигурастам 1С (и то не ко всем), но любой студент, к-й клепает сайты на php, пусть самые примитивные, но запросы писать умеет ultra_alexКхм... какие-то уж очень тупые у Вас там программисты. Это же как они бедняги данные обрабатывают даже не имея представления о их структуре? Или у Вас только студенты за миску супа? Ну специализация при работе над крупным проектом идет только на пользу, но чтобы писать программу не зная SQL...Ну не знаю... Тот, кто клепает сайты на php, конечно, представляет - он же сам пишет запросы. Я про тех, кто использует ОРМ, linq2sql... Тогда некоторые ещё могут с трудом приблизительно представить , что будет делать сервер в ответ на конкретное выражение от linq2sql. Но в целом, сказать, что будет происходить на сервере при рефреше страницы уже не могут... Смотришь иногда на трейс - там бред. А в ответ программисты говорят - это не мы, это linq2sql :-) ultra_alexПо теме: имхо linq2sql какбэ не зря придумали. Мы обычно тоже через ХП работаем, но писать бизнес логику на linq2sql удобнее (читай: эффективнее). По сути автоматически делается то, что при Вашем подходе требует написания тучи ХП и тучи кода. Материализовать объекты, сделать сложные выборки с массой условий...Ну я же не говорю, что linq2sql зря придумали :-) Просто при увеличении сложности систем ХП становятся удобным способом деления на уровни. Рассматривать БД как часть прикладной программы можно только в простейших случаях. Т.е. сайтик и одноразовая БД для управления контентом этого сайта - тут нормально, а если программа пишется для уже существующей БД? Если БД существует долго, то такой подход просто не сработает. Программ для этой БД будет написано много, они будут на разных языках (понятное дело - ведь век языка недолог), мапировать всё будет сложно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 10:56 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
ultra_alexPS. Если чессно, я не сталкивался с ситуацией, когда за БД отвечают одни люди, а за программный код другие. У нас небольшая команда и каждый умеет и то и другое. Вот надо мне реализовать такой-то функционал, беру пишу какой мне надо код, какие мне надо ХП и все! Знающие люди, подскажите, как работает команда, когда программер не лазит в БД? Я просто не представляю! Получается я должен пойти к БД-девелоперу и объяснить, что мне нужно, чтобы БД вернула мне такие-то данные. А он через 15 минут говорит: "ок, Саня, можешь юзать sp_Get_bla_bla_bla". Так что-ли? Так может мне быстрее самому написать чем кому-то объяснять? Или в чем тогда выигрыш? Off. Нормально работает. В большинстве своем программисты не БД части даже не подозревают, что происходит в системе. БД разработчики подготавливают все необходимые интерфейсы для работы с данными, после чего программисты Клинета/Сервера апп пользуются этими интерфейсами. 99% необходимости лезть в БД нет у остальной команды. На 1% можно и задачу создать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 11:54 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
читаю я эти холивары, читаю... так и не убедился, что к БД надо относиться, как к чему-то большему, чем простое хранилище данных, способное на что-то большее, чем следить за ссылочной целостностью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 12:42 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Chopчитаю я эти холивары, читаю... так и не убедился, что к БД надо относиться, как к чему-то большему, чем простое хранилище данных, способное на что-то большее, чем следить за ссылочной целостностью а как тогда обрабатывать большие объемы данных - т.е. когда в правилах БЛ надо обновить/расчитать десятки тысяч значений? или как быть, когда идет связанная обработка? руцями, итерационно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 14:57 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Chopтак и не убедился, что к БД надо относиться, как к чему-то большему, чем простое хранилище данных Ну тут уж как посмотреть. Если смотреть на БД как на "набор табличек с данными" и делать запросы из кода, то - ДА! Но потом приходит понимание, что запросы реализуют значительную часть логики и поэтому удобнее вынести ее в БД (по средствам ХП). Это создает целостность данных и методов работы с ними ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2011, 23:49 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
ultra_alexЭто создает целостность данных и методов работы с ними и размазывает бизнес-логику по разным слоям ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 07:53 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Chopultra_alexЭто создает целостность данных и методов работы с ними и размазывает бизнес-логику по разным слоям1. Ничего страшного. Обычное дело 2. Слой клиента обычно некритичный: скрыть/деактивировать контрол на форме или что-то в этом роде. С бизнес-логикой сама СУБД справляется как правило лучше и эффективнее, чем приложение. Единственный реальный минус - непортируемость на другую СУБД, но далеко не всегда критично. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 12:16 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
LSVChopи размазывает бизнес-логику по разным слоям1. Ничего страшного. Обычное дело 2. Слой клиента обычно некритичный: скрыть/деактивировать контрол на форме или что-то в этом роде. С бизнес-логикой сама СУБД справляется как правило лучше и эффективнее, чем приложение. Единственный реальный минус - непортируемость на другую СУБД, но далеко не всегда критично. 1. спорно: обычное дело - прог приложения лучше знает предметную область, чем прог БД, переносить бизнес-логику в БД - добавлять лишнее звено 2. спорно: приведи пример для 1С да и слой клиента зачастую состоит не только из этого, а в случае толстого клиента так и ваще спорно: бизнес-логика состоит не только из работы с данными спорно: минус не единственный, например серьезный минус - вместо одного прога надо два, вместо того чтобы поддерживать один модуль - приходится поддерживать два со всеми вытекающими ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 13:29 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
2. спорно: приведи пример для 1С да и слой клиента зачастую состоит не только из этого, а в случае толстого клиента так и ваще спорно: бизнес-логика состоит не только из работы с даннымиДа уж 1С просто образец высокой производительности и оптимальности. Ога. Сделано это в т.ч. для портируемости. Один код для любой СУБД. А сама СУБД в данном случае - свалка таблиц. Аналогично кстати в большинстве западных ERP систем. переносить бизнес-логику в БД - добавлять лишнее звеноТак и запишем - ХП и триггеры придумали дураки. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 13:49 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37108063&tid=1542319]: |
0ms |
get settings: |
6ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
152ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 422ms |

| 0 / 0 |
