|
|
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
Kimelmad_nazgul, Хорошо, я объясню зачем нужен этот запрос. Если кратко, то он реализует алгоритм FIFO то есть по количеству товара в заказе и позициям, ищет нужные партии с которых он спишет этот товар (само с собой на вход я ему даю весь заказ (например 150 позиций разных товаров, а на выход получаю >= 150 строк (потому, что если партия заканчиваться, то ищется следующая партия и так пока вся позиция не спишется))) которые нужно update . На процедурном языке реализация занимает намного больше строк чем на sql. IMHO если это можно сделать только с помощью SQL, без использования императивных расширений (типа plsql или tsql) То почему бы и нет. Т.е. данные спроектированы так, что данная задача хорошо ложится на РМД. Хотя алгоритм FIFO не плохо ложится в OLAP. Ну тут я могу ошибаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 12:16 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
mad_nazgulОпять же повторю ХП-это костыль, т.к. РМД очень ограниченная модель. Можно использовать этот костыль, когда это оправдано. Но его использование лишает смысла "слоя-приложения". Т.е. проще будет сделать клиента (отображение), который будет напрямую работать с БД ч/з ХП. Ыыы .. ну один бред за другим.... И РМД ему ограничена, и ХП это костыль, и костыли у него кривые... Может руки/ноги кривые, а не костыли ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 12:16 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
Костыль хп-шныйmad_nazgulОпять же повторю ХП-это костыль ХП - это средство расширения функциональных возможностей СУБД, вплоть до наличия в БД встроенного сервера приложений (PL/SQL-машина в Oracle), а костыль - у вас из головы торчит... Кстати OEBS вполне себе крутая КИС, вся полностью на оракле и pl/sql написана. ничего, иногда даже SAP-ы всякие теснит с рынков. Пример как раз подхода "вся логика в БД". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 12:18 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
mad_nazgul IMHO если это можно сделать только с помощью SQL, без использования императивных расширений (типа plsql или tsql) То почему бы и нет. Т.е. данные спроектированы так, что данная задача хорошо ложится на РМД. Хотя алгоритм FIFO не плохо ложится в OLAP. Ну тут я могу ошибаться. FIFO и OLAP ? Нуну... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 12:20 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
dvimKimel,Я думаю, он имел ввиду, что при разработке erp лучше не жертвовать кроссплатформенностью Для небольших коллективов поддержание кратковременности по СУБД - банально дорого. И ненужно. Глубокое имхо. Ну, вполне себе правильное и обоснованное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 12:21 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
MasterZivЫыы .. ну один бред за другим.... И РМД ему ограничена, и ХП это костыль, и костыли у него кривые... Может руки/ноги кривые, а не костыли ? О "свидетели Oracle" подтянулись. :-) Реляционная модель данных ограничена, по определению. Т.к. это модель. У любой модели есть границы применимости. Т.е. не все можно выразить в РМД. Что такое SQL - это декларативный ЯП основанный на РМД. Т.е. мы говорим что хотим получить, а система нам выдает ответ. РМД это простая модель, поэтому SQL получился практичным, т.е. применимым на реальных задачах. Но т.к. не все можно представить в РМД, то были придуманы разные императивные расширения. У Oracle это plsql, у MS это TSQL и FoxPro (по правде говоря для FoxPro скорее наоборот в императивный ЯП xBase добавили немного "деклартивщины"). Так вот эти "расширения" костыли. Чтобы эти костыли работали, придумывают новые костыли. По поводу Oracle. Т.к. plsql это костыль, то по мере "роста запросов" у клиентов приходится к этому костылю добавлять кучу всякой фигни, которая может понадобится. Т.е. это стратегия bloatware. (С MS чуть получше, т.к. там все таки сразу был возможность разных DCOM и прочего, хотя туда все равно напихали всякого.) Поэтому для работы Oracle нужно еще куча сертифицированных специалистов, чтобы оно хоть как-то работало. Вообще Oracle - это мощный vendor lock. Где появляется БД Oracle, там, все БЛ перекочевывает в БД. Ничего плохого в этом не вижу. Oracle коммерческая организация, а не благотворительная :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 12:42 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
авторНо т.к. не все можно представить в РМД, то были придуманы разные императивные расширения. У Oracle это plsql, у MS это TSQL и FoxPro (по правде говоря для FoxPro скорее наоборот в императивный ЯП xBase добавили немного "деклартивщины"). Так вот эти "расширения" костыли. Чтобы эти костыли работали, придумывают новые костыли. Предлагаю спуститься с сияющих высот теории на землю практики и конкретно озвучить претензии к PL/SQL, T-SQL и прочим SPL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 12:57 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
По правде я не нацелен на кроссплатформенность между бд. Я уже выбрал в качестве бд Postgre так как она самая мощная и бесплатная. У меня был опыт использования mssql и это урок на всю жизнь - маздай зло, раньше не верил, но теперь всё ясно. Мой стек - linux+postgre+node.js (хотя можно linux заменить на windows, но какой в этом смысл, если windows в качестве сервера не даёт мне никаких преимуществ) Можно вместо orm использовать драйвер, это избавит меня от кэширования и объектной модели, но тогда к разработке моделей придётся подходить тщательнее и большинство БЛ будет на субд. Как вам такое: если большинство БЛ будет храниться в СУБД, то трафик между субд и сервером приложения снизится и их можно будет безболезненно географически разносить. Это лишь догадка, не знаю как оно будет на практике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 12:58 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
xenixПредлагаю спуститься с сияющих высот теории на землю практики и конкретно озвучить претензии к PL/SQL, T-SQL и прочим SPL Претензия только одна, что они "возвращают" меня ко временам FoxPro. Когда код превращался в спаггети из SQL вызовов и операторов циклов и условных переходов. Писать конечно удобно, но сопровождать... Так скажем ЯП общего назначения более удобные для программирования БЛ, чем PL/SQL и T-SQL. Это конечно все вкусовщина... :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 14:44 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
KimelКак вам такое: если большинство БЛ будет храниться в СУБД, то трафик между субд и сервером приложения снизится и их можно будет безболезненно географически разносить. Это лишь догадка, не знаю как оно будет на практике. На практике для PostgreSQL это будет "боль и страдания". Возможности plpgsql очень скудны. К тому же с 9 версии у PostgreSQL ввели более строгую типизацию результирующего кортежа ничего не дав в замен. А так попробуйте. Будет опыт. ;-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 14:54 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
Kimel, однозначного ответа нет, так как orm не умеет писать эффективные сложные запросы, мало того можно моск сломать, пока заставишь ее запросить то, что тебе нужно - проще руками состряпать sql и отправить в orm на выполнение, получить dto, а потом как-нибудь подружить с orm-сущностями (кстати тоже не всегда возможно) варианты: 1. все делашеь через orm, сложные запросы разбиваешь на мелкие, которые сможет переварить orm в одной транзакции 2. если разбить не получается - комбинируешь, встает проблема дублирования бизнес-логики, решаешь по пути - например используется enum, его придеться складывать в базу, придумываешь как написать код и объяснить другим программистам, что ты тут накуралесил, и в каких местах еще надо править 3. если решишься все делать через ручной sql - orm выкидываешь нафик, лишний код, лишнее время разработки, так как все запросы всё равно будешь писать руками, но при разработке крупных систем, думаю проще сразу убится об стену 4. пишешь свою orm, которая будет уметь то, что тебе нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 14:54 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
авторРеляционная модель данных ограничена, по определению. Так любая модель ограничена, по определению. авторНо т.к. не все можно представить в РМД, то были придуманы разные императивные расширения. Это -- твои фантазии. SQL - декларативный язык, это правда. Т.е. не Тьюринг-полный, на нём нельзя писать программы. Вот чтобы было можно -- и придуманы императивные расширения. Это -- единственная причина их существования. РМД тут ни при чём. Далее идёт ещё более невообразимый бред, который даже комментировать не интересно. авторТак вот эти "расширения" костыли. Чтобы эти костыли работали, придумывают новые костыли. По поводу Oracle. Т.к. plsql это костыль, то по мере "роста запросов" у клиентов приходится к этому костылю добавлять кучу всякой фигни, которая может понадобится. Т.е. это стратегия bloatware. ... вроде бред закончился. авторВообще Oracle - это мощный vendor lock. Где появляется БД Oracle, там, все БЛ перекочевывает в БД. Любая СУБД -- это vendor lock. Увы. Будешь работать вообще без СУБД ? Придумаешь ещё более тяжёлый vendor lock -- на себя самого. С какой-то точки зрения это даже хорошо... авторНичего плохого в этом не вижу. Oracle коммерческая организация, а не благотворительная :-) А что ж писал тогда, раз ничего плохого не видишь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 14:54 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
xenixавторНо т.к. не все можно представить в РМД, то были придуманы разные императивные расширения. У Oracle это plsql, у MS это TSQL и FoxPro (по правде говоря для FoxPro скорее наоборот в императивный ЯП xBase добавили немного "деклартивщины"). Так вот эти "расширения" костыли. Чтобы эти костыли работали, придумывают новые костыли. Предлагаю спуститься с сияющих высот теории на землю практики и конкретно озвучить претензии к PL/SQL, T-SQL и прочим SPL Стоит ли тратить время и силы на это ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 14:55 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
KimelПо правде я не нацелен на кроссплатформенность между бд. Я уже выбрал в качестве бд Postgre так как она самая мощная и бесплатная. У меня был опыт использования mssql и это урок на всю жизнь - маздай зло, раньше не верил, но теперь всё ясно. Зря, MSSQL -- замечательная СУБД, да и кроссплатформенность в мире СУБД фактически умерла, т.е. при условии, что MSSQL продаётся, кроссплатформенность ей не нужна. KimelКак вам такое: если большинство БЛ будет храниться в СУБД, то трафик между субд и сервером приложения снизится и их можно будет безболезненно географически разносить. это заблуждение. Трафик там будет всё равно космический. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 14:57 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
авторСтоит ли тратить время и силы на это ? Мне просто было всегда любопытно, откуда появились такие мысли. Грубо говоря (без уточнений и претензий), во времена младшего Дельфи и Визуал Бейсик 6 писали себе товарищи хранимые процедуры на сервере БД, дергали их из клиента и жили, а потом понеслось - появились Ява и прочий .НЕТ и начали на любой чих лепить "сервера приложений" и держать на них "бизнес-логику", которой прекрасно жилось и живется в БД ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:01 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
Kimel, что сможет orm: * одиночная CRUD операция * если у тебя несколько CRUD операций с несколькими таблицами - делаешь несколько обращение через orm, промежуточные результат сохраняешь в переменных, и все это оборачиваешь транзакцией что сможет orm, но будут проблемы: * сложная выборка данных в dto (допустим с колонкой количества, которое считается по какой-то другой таблице) + пейджинг + сортировка + фильтр на это дело одновременно * выборки данных для отчетов что orm не сможет: * специфические операции с данными, типа обработки иерархических таблиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:02 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
авторТак скажем ЯП общего назначения более удобные для программирования БЛ, чем PL/SQL и T-SQL.ппц. И чем же они удобнее ? Не представляю, как сделать сложный многоколоночный отчет-датасет, используя кучу мелких запросов и обычный ЯП. Точнее представляю этот дикий геморой. :) На языке БД это вполне компактный читабельный код, кот. может быть использован ЛЮБЫМ ПРИЛОЖЕНИЕМ. ХП будут работать с любым приложением ОДИНАКОВО. Б/Логика в приложении это привязка к конкретному приложению и технологии. Как получить сложный отчет-датасет в другом приложении (допустим есть такое требование) ? Никак. Только повторив в нем всю логику, кот. нужна в этом датасете. А это может быть просто эпическая мегажесть. А если таких датасетов 10-20-50 ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:09 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
xenixавторСтоит ли тратить время и силы на это ? Мне просто было всегда любопытно, откуда появились такие мысли. Я тебе сказу в двух словах, съэкономлю твоё время, и может быть других: от невежества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:09 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
17-77Kimel, что сможет orm: * одиночная CRUD операция * если у тебя несколько CRUD операций с несколькими таблицами - делаешь несколько обращение через orm, промежуточные результат сохраняешь в переменных, и все это оборачиваешь транзакцией Ещё ORM -- это ещё один хороший кэш данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:13 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
MasterZiv17-77Kimel, что сможет orm: * одиночная CRUD операция * если у тебя несколько CRUD операций с несколькими таблицами - делаешь несколько обращение через orm, промежуточные результат сохраняешь в переменных, и все это оборачиваешь транзакцией Ещё ORM -- это ещё один хороший кэш данных. Ээ, хороший ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:24 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
кроссплатформенность на практике означает отсутствие хорошей оптимизации под субд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:31 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
Ivan Durakкроссплатформенность на практике означает отсутствие хорошей оптимизации под субд. не очень понятно с orm вообще не приходится говорить о хорошей оптимизации под субд а если пишешь хранимки - то внутри можно использовать специфичные вещи, главное иметь одниковую сигнатуру хранимок, чтобы код вызова для разных субд был одинаковый (точно могу сказать за ms sql и oracle - я так делал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:39 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
MasterZivЕщё ORM -- это ещё один хороший кэш данных. мне он не нравится: * в веб-приложениях/веб-службах с моделью "на запрос" (я с такими имел дело) - кеш не используется * приходиться дописывать костыли для юнит-тестов, например EF любит падать с ошибкой - сущность с таким entity key уже существует именно для юнит тестов при определенных условиях, хотя в реальном приложенгии все работает ништяк * если делаешь масштабируемую систему с параллельной обработкой данных - тоже вопрос как этот кеш себя будет вести, я лучше его либо ограничу его в рамках одного потока, либо уберу совсем ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 15:50 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
Помню в навике "написал" отчет (про "писание" отчетов там - это отдельная песТня). Запустил - 30 минут. Отчет - реально простой. Задумался. Переписал в лоб на SQL (не думая ни о индексах, ни о хинтах и др.оптимизации) с выводом в Excel - 15 секунд. Разница - два порядка . Но, проблемы. Для того, что бы так сделать надо 1) знать SQL 2) знать схему данных в БД (и иметь к ним доступ, но здесь не об этом). Последнее КМК труднее, чем первое. Работая с навиком или с 1С мы, волей-неволей, бизнес-пользователь (пусть он даже программист C-AL или 1С) думаем в терминах созданной бизнес-модели ("сущности", "объекты-документы", "справочники" и т.п.), но здесь надо знать, как эта модель соотносится с таблицами. В навике это еще более-менее прозрачно (хотя и там есть некоторые непонятки), а в 1С я, помню, увидел названия таблиц типа "Справочник#001" и совсем загрустил, хотя SQL вроде бы знаю. Вообще, если думать глобально, то КМК закономерности и алгоритмы, используемые в предметной области есть такие же данные о ней, как и значения, описывающие ее состояние.Например в 1С, модель целиком возникает и существует в апп.сервере. (данные именно там встерчаются с бизнес-логикой). Апп.сервер реализуем метафору персистентной модели, пытаясь скрыть низлежашее взамиодейтсве с СУБД. Пользователь реализует логику в терминах такой персистентной сложной модель, ему в этом плане легко, только ждать долго, ибо по факту данные хранятся в другом месте. Вплоть до того, что тормоза и локи могут возникнуть при загрузке "конфигурации", т.е. описания модели и бизнес логики. А, реализуя логику на стороне сервера в терминах таблиц, мы, по факту создает в этих терминах бизнес-модель (она же - схема данных). К сожалению, существующие реализации РМД дают только такие термины, что, чаще всего, очень неудобно. Поэтому КМК универсального ответа на вопрос нет. Если речь идет о простой модели близкой к схеме БД, то бизнес-логика на сервере - легко. Если что-то особенное, замороченное, да еще криво и невнятно отображенное в таблицы - будет сложно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 16:16 |
|
||
|
Стоит ли переносить часть бизнес логики на БД?
|
|||
|---|---|---|---|
|
#18+
LSVавторТак скажем ЯП общего назначения более удобные для программирования БЛ, чем PL/SQL и T-SQL.ппц. И чем же они удобнее ? Не представляю, как сделать сложный многоколоночный отчет-датасет, используя кучу мелких запросов и обычный ЯП. Точнее представляю этот дикий геморой. :) На языке БД это вполне компактный читабельный код, кот. может быть использован ЛЮБЫМ ПРИЛОЖЕНИЕМ. ХП будут работать с любым приложением ОДИНАКОВО. Б/Логика в приложении это привязка к конкретному приложению и технологии. Как получить сложный отчет-датасет в другом приложении (допустим есть такое требование) ? Никак. Только повторив в нем всю логику, кот. нужна в этом датасете. А это может быть просто эпическая мегажесть. А если таких датасетов 10-20-50 ? эпическая мегажесть - это настолько кривое проектирование что выборка требует десятков датасетов, чтобы вы под этим термином не подразумевали. нет никаких проблем с получением сложных отчетов без логики в ХП. И нет никаких проблем сделать несколько простых запросов. Еще раз - именно так работает весь ентерпрайз. Бизнес логика на сервере приложений и множество простых линейных запросов к БД, большинство из которых генерятся автоматически. Так работают J2EE сервера, так работают современные решения на .NET с помощью Entity Framework. Только мастера наколенных поделок на Делфи (при всем уважении к этому продукту) до сих пор ваяют логику в БД. . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2015, 16:25 |
|
||
|
|

start [/forum/topic.php?fid=32&msg=39030652&tid=1540490]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
45ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 11ms |
| total: | 141ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...