|
|
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
LSVДа уж 1С просто образец высокой производительности и оптимальности. Ога.уж какой есть :) по распространнести может конкурировать очень со многими эффективность решения в целом состоит не только из быстрой отработки запросов но и из скорости и простоты разработки и сопровождения если ты 1с пишешь конфигурацию за два часа, и она делает то же самое, что и ХП, которые пишутся неделю... пусть даже не настолько оптимально с точки зрения БД какое решение будет более эффективно? :) LSVСделано это в т.ч. для портируемости. Один код для любой СУБД. А сама СУБД в данном случае - свалка таблиц. Аналогично кстати в большинстве западных ERP систем. видать были аргУменты для принятия такой архитектуры... :) LSVпереносить бизнес-логику в БД - добавлять лишнее звеноТак и запишем - ХП и триггеры придумали дураки. :) да записывай как угодно, я этого не говорил но чем больше длина цепочки - тем более высока вероятность искажения сигнала, тем более высока стоимость передачи от этого никуда не денешся ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 14:00 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Chopесли ты 1с пишешь конфигурацию за два часа, и она делает то же самое, что и ХП, которые пишутся неделю... пусть даже не настолько оптимально с точки зрения БД какое решение будет более эффективно? :) то, что востребованно. Не даром 1С используется как вариант "из коробки" и для не больших контор. Серьезные вынуждены разрабатывать свои системы учета, которые будут оптимизированы под конкретные задачи. Почему-то еще не встречал серьезных бизнес решений с высокими требованиями по производительности которая бы использовала БД как свалку таблиц Chopда записывай как угодно, я этого не говорил но чем больше длина цепочки - тем более высока вероятность искажения сигнала, тем более высока стоимость передачи от этого никуда не денешся ничего подобного, звенья цепочки теже самые. PS: Если человек считает, что БД - груда хлама из данных - то я не вижу смысла таким использовать клиент-сервеные БД - юзайте файловые, что в лоб, что полбу PPS Если человек не знает, как это реализовать, то это не значит, что это такой подход не правильный. Chop а как на счет производительности обработки массивов данных? десятки и сотни тысяч строк? тоже клиет будет делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 14:16 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
авторесли ты 1с пишешь конфигурацию за два часа, и она делает то же самое, что и ХП, которые пишутся неделю. Аналогично и наоборот: запрос из 10 строк с группировками, сложным суммированием, подзапросами(пишем за 5-7мин) может быть аналогичен нескольким сотням строк плохочитаемого кода приложения, кот. пишутся за 2-3 дня. Про производительность и бешенный Ethernet-трафик (иногда очень важно) - отдельная тема. Ваяние же SQL-кода внутри приложения ничем не отличается от ваяния ХП. С той лишь разницей, что ХП проще хранить в VSS/ST/CVS. десятки и сотни тысяч строк? тоже клиет будет делать? Ща начнется холивар про 3-звенки У нас все строго на ХП. Используется работа по неширокому VPN (менее 2Мб/с). 1С наверно бы умерла не своей смертью. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 14:40 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Voland_de_mortНе даром 1С используется как вариант "из коробки" и для не больших контор. Серьезные вынуждены разрабатывать свои системы учета, которые будут оптимизированы под конкретные задачи. Почему-то еще не встречал серьезных бизнес решений с высокими требованиями по производительности которая бы использовала БД как свалку таблиця встречал "серьезные бизнес-решения для больших контор" на 1с (правда на 8-ке, 7-ка тяжело тянула...), не из коробки, которые разрабатывались и оптимизировались под конкретные задачи зы. правда и 1с не относится к БД как к свалке таблиц, и я БД свалкой таблиц не считаю :) зыы. тут еще вопрос, что считать серьезным решением, и что считать большой конторой... Евросеть, насколько знаю, 8-ку юзала, это большая контора? :) Voland_de_mortничего подобного, звенья цепочки теже самые.ничего подобного - не те же в нашем примере добавляется "прог БД" (либо же "слой БД", куда мы пихаем бизнес-логику) Voland_de_mortЕсли человек считает, что БД - груда хлама из данных - то я не вижу смысла таким использовать клиент-сервеные БД - юзайте файловые, что в лоб, что полбунаоборот, таким как раз и надо юзать сервера БД, которые сделают работу, ни о чем и никого не спрашивая :) Voland_de_mortЕсли человек не знает, как это реализовать, то это не значит, что это такой подход не правильный.согласен Voland_de_mortChop а как на счет производительности обработки массивов данных? десятки и сотни тысяч строк? тоже клиет будет делать?смотря какая и чего обработка смотря на чем написан клиент смотря какие политики безопасности в общем случае, учитывая предыдущий опыт и с-но привычки, я бы, скорее всего, пихал SQL-запрос и из под 1с, вероятно, тоже прямой SQL-запрос, если критична производительность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 14:53 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
в нашем примере добавляется "прог БД" (либо же "слой БД", куда мы пихаем бизнес-логику)А ну да... Большинство 1С-ников даже никогда не слышали слово SQL. Не даром же появилось мнение, что 1С-ник - не программист. Конфиг.. дальше сами знаете Кстати массивные обработки для 1С (например супермаркеты) часто делают именно на SQL. Извне. Много всяких обработок. Не знаете почему ?... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 15:03 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
LSVавторесли ты 1с пишешь конфигурацию за два часа, и она делает то же самое, что и ХП, которые пишутся неделю.Аналогично и наоборот: запрос из 10 строк с группировками, сложным суммированием, подзапросами(пишем за 5-7мин) может быть аналогичен нескольким сотням строк плохочитаемого кода приложения, кот. пишутся за 2-3 дня. трудно такое представить... в общем случае программирование на каком-либо языке программирования гибче, чем на чистом SQL читабельность кода сюда тоже никаким боком, все дело в плечах - на плечах должна быть голова, и из них должны расти руки тем более, если ты приводишь в пример 1С, которая работает с метаданными и в которой документ "договор", так и называется Документ.Договор, а не "таблица dc000035 с полем priznak=586" :) как минимум пропадает необходимость документировать, что такое dc000035 и что такое priznak=586 рискуем скатиться в религиозный холивар и тогда вы меня потеряете :) суть же в том, что ты согласился - это не является доказательством ни одной точки зрения, ни другой :) LSVПро производительность и бешенный Ethernet-трафик (иногда очень важно) - отдельная тема. да, трафик можно сделать любой, как в первом случае, так и во втором LSVВаяние же SQL-кода внутри приложения ничем не отличается от ваяния ХП. С той лишь разницей, что ХП проще хранить в VSS/ST/CVS. я изначально писал "размазывание бизнес-логики по слоям" с этой точки зрения - отличается и, может дело привычки, но мне удобней логически связанные блоки хранить в одном месте в БД код приложения не запихаешь, а вот SQL-код в код приложения - лехко ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 15:11 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
LSVА ну да... Большинство 1С-ников даже никогда не слышали слово SQL. те которые решают задачки, которые ты задаешь, очень даже слышали :) LSVНе даром же появилось мнение, что 1С-ник - не программист. Конфиг.. дальше сами знаете я так подозреваю, что ты меня причисляешь к славному племени конфигурастов? могу сообщить - с 1с не работаю уже скоко лет, как-то так сложилось как раз сейчас занимаюсь SQL-запросам с редкими вставками xBase-а хотя сделать то же самое на 1с (пусть даже с использованием прямых запросов) было существенно проще и быстрее, но увы и ах - у нас 1с-а нет даже для бухии :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 15:16 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Chopи, может дело привычки, но мне удобней логически связанные блоки хранить в одном месте в БД код приложения не запихаешь, а вот SQL-код в код приложения - лехко мы уже давно ушли в религиозный спор 1. что касается проще хранить: в БД хранится не только сама ХП, но и ее план выполнения. В случае SQL запроса извне - план оптимизатор будет делать при каждом вызове 2. для того, что бы получить сумму товаротранспортной накладной ( сотсоящей из 100 накладных, в которых по 100 наименований.) после переоценки товара - будете все тащить на клиент и там считать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 15:25 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
в общем случае, учитывая предыдущий опыт и с-но привычки, я бы, скорее всего, пихал SQL-запрос и из под 1с, вероятно, тоже прямой SQL-запросИ ..для этого нанимаем отдельного "БД-прогера" ? Да ? :) Разве это не встраивание того самого "лишнего слоя", но внутрь приложения ? Причем еще и ущербное встраивание: * Проверка будет только при работе приложения. * Одинаковый SQL-код нужно будет дублировать со всем вытекающими. А использование функций и ХП это уже вообще будет полный отказ от вожделенной "работы только в одном слое". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 15:34 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Voland_de_mort1. что касается проще хранить: в БД хранится не только сама ХП, но и ее план выполнения. В случае SQL запроса извне - план оптимизатор будет делать при каждом вызовене все БД занимаются оптимизацией запросов... а сопровождать? считать надо, стоит ли оно того... в каждом конкретном случае Voland_de_mort2. для того, что бы получить сумму товаротранспортной накладной ( сотсоящей из 100 накладных, в которых по 100 наименований.) после переоценки товара - будете все тащить на клиент и там считать?в 1с, пока не припечет, даже не буду задумываться что и куда она тянет :) не в 1с, ес-но, сумму я запихаю в простенький запрос и потяну одно число :) зы. кстати, не понял, зачем пересчитывать накладную после переоценки товара... зыы. сумма по 100 докам по 100 наименований - фигня вопрос, никакой оптимизации не надо, ИМХО ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 15:43 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Chopне в 1с, ес-но, сумму я запихаю в простенький запрос и потяну одно число :) зы. кстати, не понял, зачем пересчитывать накладную после переоценки товара... зыы. сумма по 100 докам по 100 наименований - фигня вопрос , никакой оптимизации не надо, ИМХО1. В смысле не Вы, а "дополнительный БД-прог" (с) ? Запрос к БД как никак.... 2. А если по 50 магазинам по 50тыс. товаров (обычное дело) ? Тут без SQL никак не обойтись. Вводим лишний слой ???? Выходит, что решение задач получается то 1 слой, то 2 в зависимости от задачи ? Низачот ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 15:51 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
LSVИ ..для этого нанимаем отдельного "БД-прогера" ? Да ? :)ес-но нет :) LSVРазве это не встраивание того самого "лишнего слоя", но внутрь приложения ?похоже у нас разное понимание термина "слой" :) "людоеды они как лук, у них есть слои .." (с) Шрек код приложения тоже может и зачастую должен делиться на слои :) но мне больше нравится иметь дело с одной луковицей, чем с несколькими :) LSV* Проверка будет только при работе приложения.ты о юнит-тестах? или о чем? о том, что его нельзя выполнить при неработающем приложении? зачастую можно зачастую не нужно LSV* Одинаковый SQL-код нужно будет дублировать со всем вытекающими.не нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 15:53 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Chopне все БД занимаются оптимизацией запросов... а сопровождать? считать надо, стоит ли оно того... в каждом конкретном случае В студию те БД, которые не занимаются оптимизацией запросов Chopв 1с, пока не припечет, даже не буду задумываться что и куда она тянет :) не в 1с, ес-но, сумму я запихаю в простенький запрос и потяну одно число :) зы. кстати, не понял, зачем пересчитывать накладную после переоценки товара... зыы. сумма по 100 докам по 100 наименований - фигня вопрос , никакой оптимизации не надо, ИМХО не такой то уж и простенький) надо взять последнюю переоценку по последнему нужному региону(то же документ) переоценка 1-2 раза в месяц. в переоценке 30-60 тыс наименований АП (асортиментный перечень) = 50тыс в таблицах, отвечающих за тело документа общее кол-во строк свыше 4млрд бд за 10 лет так как теперь для "фигня вопроса" буде SQL писать?)) но дело даже не в этом.. как будете оптимизировать? как планы хранить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 16:07 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
LSV1. В смысле не Вы, а "дополнительный БД-прог" (с) ? Запрос к БД как никак....в смысле - я я же тебе написал, SQL знают даже конфигурасты, которые решают предложенные тобой задачи а уж тру-прогам по жизни положено :) LSV2. А если по 50 магазинам по 50тыс. товаров (обычное дело) ?что "по 50 магазинам по 50 тыс.товаров в каждом"? сумму выручки посчитать за год посчитать? так даже 1с при всей своей неоптимальности не будет считывать 50х50000х(?) записей... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 16:13 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Voland_de_mortВ студию те БД, которые не занимаются оптимизацией запросов (с) не мойя всегда, где можно стараюсь делать джоины во всяком случае на майкрософте он работает на порядок быстрее под фиребёрдом - подзапросы вообще п...[цезоред] он всегда подзапросы честно выполняет, вообще без никаких оптимизаций мы с ... офигели ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 16:16 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Voland_de_mortВ студию те БД, которые не занимаются оптимизацией запросов Advantage Database Server - может и делает, но в доке я пока этого нигде не увидел и по скромному субъективному мнению - на практике не увидел никакой оптимизации ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 16:20 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Voland_de_mortне такой то уж и простенький) надо взять последнюю переоценку по последнему нужному региону(то же документ) переоценка 1-2 раза в месяц. в переоценке 30-60 тыс наименований АП (асортиментный перечень) = 50тыс в таблицах, отвечающих за тело документа общее кол-во строк свыше 4млрд бд за 10 лет так как теперь для "фигня вопроса" буде SQL писать?)) но дело даже не в этом.. как будете оптимизировать? как планы хранить? задачу не понял я говорил о сумме накладной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 16:23 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
ChopVoland_de_mortВ студию те БД, которые не занимаются оптимизацией запросов Advantage Database Server - может и делает, но в доке я пока этого нигде не увидел и по скромному субъективному мнению - на практике не увидел никакой оптимизации У Sybase есть оптимизатор, и довольно не плохой. То, что запросы плохо выполняются - это кривой код) про отсутствие оптимизации Table(id int not null, name varchar(255) not null, type_id int not null) PK id unique index name index type_id, name какой из них будет использован при запросе select * from table where id = 1 и select * from table where name = "name" и select * from table where type_id = 1 and name = "name" кому прикажете решать, если нет оптимизатора? fullscan наше все? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 16:31 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
ChopVoland_de_mortне такой то уж и простенький) надо взять последнюю переоценку по последнему нужному региону(то же документ) переоценка 1-2 раза в месяц. в переоценке 30-60 тыс наименований АП (асортиментный перечень) = 50тыс в таблицах, отвечающих за тело документа общее кол-во строк свыше 4млрд бд за 10 лет так как теперь для "фигня вопроса" буде SQL писать?)) но дело даже не в этом.. как будете оптимизировать? как планы хранить? задачу не понял я говорил о сумме накладной а задача не менялась - все та же сумма накладной. только тут надо не меньше 10 join-ов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 16:33 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Voland_de_mortУ Sybase есть оптимизатор, и довольно не плохой. сцилку в студию было бы неплохо :) можешь ткнуть пальцем, где об этом написано в доке? тынц Voland_de_mortа задача не менялась - все та же сумма накладной. только тут надо не меньше 10 join-ов давай структуру БД зачем там может понадобиться 10 джоинов? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 16:40 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Chopсцилку в студию было бы неплохо :) можешь ткнуть пальцем, где об этом написано в доке? тынц тынц надеюсь объяснять суть prepared не надо Voland_de_mortа задача не менялась - все та же сумма накладной. только тут надо не меньше 10 join-ов давай структуру БД зачем там может понадобиться 10 джоинов? структура примерно следующая. нет времени долго расписывать: таблица документов (заголовки) (id, date) таблица заголовка накладной (id, pecep_id, doc_type_id) таблица содержания накладной (id, id_doc, tov_id, price) таблица заголовков переоценок (id_doc, doc_type_id) таблица переоценок (id, id_doc, tov_id, price) таблица заголовков ТТН(id_doc, doc_type_id) таблица содержания ТТН(id, id_doc) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 16:51 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
авторв смысле - я я же тебе написал, SQL знают даже конфигурасты, которые решают предложенные тобой задачи а уж тру-прогам по жизни положено :)Хм... Разве парой страниц назад не шла речь о "лишнем слое", для которого нужен "дополнительный БД-прог" ? Кажется это был основной аргумент против SQL-кодирования. Не ? Выходит как ни крути, но в подавляющем большинстве случаев "лишний слой" все таки используется. Тогда зачем его избегать ? А сравнение с 1С неудачное. Там отдельная специфическая среда разработки с высоким уровнем абстракции от реалий СУБД. Подобных систем немного (обычно это западные ERP). Избежать "лишнего слоя" в общем случае невозможно для прочих сред. Тогда о чем спор ??? зы: Ни в одной отрасли человеческой деятельности нет универсального инструмента. Даже у дворника. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 16:57 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Voland_de_mort тынц принял т.е. оптимизация проводится и без хранения запроса в БД, а и при отправлении оного из пехапы :) Voland_de_mortструктура примерно следующая.не до конца понятно, чем накладная отличается от ТТН... не до конца понятно, зачем в содержании накладной хранить price, если его все-равно приходится пересчитывать (тоже не до конца понятно зачем) ну джоины... в чем сложность и крутизна запроса? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 17:03 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
Chopпринял т.е. оптимизация проводится и без хранения запроса в БД, а и при отправлении оного из пехапы :) мы говорили про то что хранмится план запроса на сервере для хп я не отрицал работу оптимизатора для всех выполняемых запросов, просто для ХП он будет единоразов, а для пыхпы - для каждого препаре/или запроса Chopне до конца понятно, чем накладная отличается от ТТН... не до конца понятно, зачем в содержании накладной хранить price, если его все-равно приходится пересчитывать (тоже не до конца понятно зачем) ну джоины... в чем сложность и крутизна запроса? всего лишь в объемах данных, которые обрабатываются и в размерах таблиц. (от 500мб до 30Гб на таблицу) и тут без оптимизации и хп не обойтись ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 17:16 |
|
||
|
linq2sql vs хранимые процедуры
|
|||
|---|---|---|---|
|
#18+
LSVРазве парой страниц назад не шла речь о "лишнем слое", для которого нужен "дополнительный БД-прог" ? Кажется это был основной аргумент против SQL-кодирования. Не ? так, стоп... дополнительный прог БД у нас появился в контексте того, что прог.приложений - криворукий :) и раз уж он появился, то должен чем-то занимацца? :) речь шла не о лишнем слое, а о переносе бизнес-логики в "слой БД" в коей я смысла особого не вижу вижу дополнительные неудобства LSVВыходит как ни крути, но в подавляющем большинстве случаев "лишний слой" все таки используется. Тогда зачем его избегать ? Избежать "лишнего слоя" в общем случае невозможно для прочих сред. Тогда о чем спор ??? я же написал... не избегать и не "лишний слой", а хранить логически связанные блоки функционала в одном месте мне так удобней редкие случаи, когда требуется чрезвычайно высокая производительность, на то и редкие случаи, зачем из-за них менять все? LSVА сравнение с 1С неудачное. Там отдельная специфическая среда разработки с высоким уровнем абстракции от реалий СУБД. Подобных систем немного (обычно это западные ERP). почему неудачное? тот же линк позволяет писать подобные системы "с высоким уровнем абстракции от реалий СУБД" кстати, с этого тема и началась :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2011, 17:17 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=37111957&tid=1542319]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
158ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
64ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 468ms |

| 0 / 0 |
