Стоит ли переносить часть бизнес логики на БД?

Поддержание данных и их взаимосвязей Обеспечение целостности Принимая дорогостоящие операции, такие как циклы и синтаксический анализ строк, и сохраняя их в своем уровне приложения, вы можете горизонтально масштабировать свое приложение, чтобы получить лучшую производительность. Добавление нескольких серверов приложений за балансировщик нагрузки обычно намного дешевле, чем настройка репликации базы данных. Вы правы, однако, что он отделяет вашу бизнес-логику от языка программирования вашего приложения, но я не понимаю, почему это преимущество. Если у вас есть приложение , у вас есть приложение . Преобразование кучи кода в хранимые процедуры не изменяет того факта, что у вас есть -приложение. Мое предпочтение состоит в том, чтобы сохранить код базы данных, ориентированный на постоянство. Как создать новый виджет? Вы должны вставить три таблицы, и они должны быть в транзакции. Это принадлежит хранимой процедуре.

Бизнес-логика в

Именно в них и будет содержаться большая чать бизнес-логики. А что такое бизнес-правило? Бизнес-правило — это положение, определяющее или ограничивающее какие-либо стороны бизнеса предметной области. Его назначение — защитить структуру бизнеса, контролировать или влиять на его операции.

Уровень данных содержит таблицы базы данных, файлы XML и . архитектуре, так как он содержит всю бизнес-логику программы.

Кроме того на том же хабре есть переводы статей о переложении этого подхода на : Но все это разбивается о реальную жизнь, транзакции, переиспользование кода, протомонолит и прочие проблемы. Но обо всём по порядку. Всё описанное является сугубо моим мнением, основанным на некотором количестве боли, испытываемой в работе, особенно с циклическими импортами. При использовании этого подхода придётся писать очень много шаблонного кода, который особо даже и не сгенерируешь. ; Что же такое чистая архитектура?

Одно место для размещения всей бизнес-логики Возможно, более быстрые приложения, поскольку несколько запросов и т. Для настройки производительности потребуется . -код не так выразителен и, следовательно, сложнее писать при освещении концепций более высокого уровня, которые не связаны с данными Намного больше ненужной нагрузки на базу данных Теперь, практически, только дурак будет иметь всю бизнес-логику в базе данных. Очень немногие разработчики смогут создать согласованный интерфейс хранимых процедур, который легко работает в приложениях.

Обычно это происходит из-за того, что сделаны определенные предположения о вызывающем приложении То же самое относится к документированию всех этих хранимых процедур. Серверы баз данных, как правило, достаточно узки, как есть.

S>Какие аргументы есть _против_ размещения бизнес логики на к базе данных, а работает только с объектами бизнес-логики.

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

Если вы находитесь в крупной компании по разработке программного обеспечения, у вас может быть достаточно специализированных людей, которые знают обе стороны программирование базы данных и кодирование , но в противном случае сложно найти людей, которые могут манипулировать между двумя мирами и, самое главное, кто сделать правильный компромисс, когда речь заходит о том, какая часть логики должна быть на каком языке. Лично я считаю языки программирования очень примитивными, а инструменты разработки для них еще хуже.

Бизнес-логика

Поместите достаточную бизнес-логику в базу данных, чтобы убедиться, что данные согласованы и правильны. Но не бойтесь дублировать часть этой логики на другом уровне, чтобы улучшить работу пользователя. Интегрированные средства отладки и более мощные обычно упрощают сохранение кода среднего уровня, чем тот же код в хранимой процедуре. Однако, когда вы приходите к отчетности и интеллектуальному анализу данных, поиск хранимых процедур часто может быть лучшим выбором.

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

Универсальные и специализированные базы данных . Бизнес-логика приложения реализована на основе определенного класса.

Добавлено дата 6, 0 Проработав долгое время с различными компаниями и их системами данных, со временем я начал замечать явный прогресс в их решениях анализа и отчетности. В первое время запросы выполнялись непосредственно к базам данных оперативной обработки транзакций , однако этот подход конфликтовал с повседневным использованием баз и обычно в значительной мере ограничивал доступ ввиду ограничений безопасности. Часто следующим этапом было ежедневное создание копии базы данных .

Структуры данных оптимизированы для разовых, атомарных транзакций, в то время как системы оптимизированы для работы с крупными массивами данных. Таким образом, выполнение запросов было мучительно долгим. Структуры данных понятны ограниченному кругу экспертов в компании, в то время как базы наиболее эффективны для представления информации широкой аудитории. Наиболее распространенным подходом к созданию баз данных , доступных для запросов анализа, было внедрение таблиц сводных данных.

При надлежащем проектировании такой подход был способен решить ряд проблем быстродействия и наличия исторических данных. В то же время он все равно оставался понятным достаточно узкому кругу лиц. Целостность интерпретации также представляла проблему, так как сводные таблицы создавались в разное время и для разных целей.

Разработка интернет-магазинов с собственной бизнес-логикой и учетной системой

В этом случае функции сервера ограничены поддержкой собственно базы данных. Вся информация обрабатывается локально, что освобождает ресурсы сервера. Достоинства"интеллектуальных" клиентов: Недостатки"интеллектуальных" клиентов:

Я пытаюсь серьезно ограничить свою бизнес-логику в БД только процессами , которые должны выполнять много запросов и обновлений для.

Вместо должно быть . Или я чего-то не понимаю? Но обычно под подразумевают именно часть приложения, в которой логика предметной области изложена в виде кода. А не просто какие-то абстрактные правила, которые существуют в голове у экспертов в предметной области. Допустим, вы программируете софт для приюта животных и для детского приюта.

По бизнес-логике приюта для животных, предположим, котика, которого за неделю не забрали новые хозяева, надо усыпить. А до этого его надо кормить, поить и спать укладывать. По бизнес-логике детского приюта - ребенка надо кормить, поить и спать укладывать. В него нельзя втыкать шприц со смертельной дозой морфия. При этом все структуры данных, алгоритмы и т.

Кроме вот этой маленькой детали. Не важно, бизнес это, расчет конфигурации молекул, приют или управление кораблем. Бизнес-логика - это та самая часть, которая в итоге должна работать правильно и надежно, та, результатов которой ждет заказчик котенок, ребенок Если не отделять, допустим интерфейс от бизнес-логики, то вместо нажатия кнопки"отдать ребенка новым родителям" или"усыпить котенка", на двух аккуратных - почти похожих - пультах управления интерфейсах вы будете бегать туда-сюда, пытаясь понять, кого утопить, кого усыпить, кого отдать новым родителям и почему ничего не работает.

Сложная бизнес-логика. Как всё учесть?

Проектирование и рефакторинг В этой статье я попробую сам разобраться в себе и в своих аргументах. Для начала попробую оппонировать автору статьи, перевод которой нашел на хабре Где наша бизнес-логика, сынок? Её писал такой же идеалист, которым я был еще лет 10 назад. Поэтому по сути в этой статье я буду спорить сам с собой.

В этом посте мы рассмотрим то, как перенести бизнес-логику из Можно хранить их в HTTP-сессии, либо в базе данных.

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

Основное преимущество динамических -выражений в том, что зачастую они считаются более гибкими, чем хранимые процедуры, и могут обеспечить более быструю обработку. Выбирая между хранимыми процедурами и динамическим , руководствуйтесь следующими рекомендациями: Для небольшого приложения с единственным клиентом и несколькими бизнес-правилами динамический часто является лучшим выбором. Для большого приложения с множеством клиентов продумайте, как обеспечить необходимую абстракцию.

Примите решение, где эта абстракция должна находиться: Хранимые процедуры позволяют осуществлять операции с использованием большого количества данных ближе к данным, что может улучшить производительность. Использование хранимых процедур для доступа к базе данных позволит максимально сократить зависимость кода приложения от изменений схемы базы данных.

Логическая модель РБД. Бизнес-логика файл-серверной, клиент-серверной и -уровневой архитектуры

Оригинал доступен по ссылке ниже: Если вы рассматриваете архитектуру , не забудьте взвесить эту дополнительную проблему в сравнении с преимуществами пользователя, которые вы получите. В традиционном веб-приложении, независимо от платформы вашего веб-сервера, среды и т. Если вы хотите добавить редактор например, для вашего приложения, вам нужно добавить несколько таблиц базы данных уровень данных и некоторый код, который создает и обрабатывает формы, когда пользователи вносят изменения уровень веб-сервера.

В вы, очевидно, все еще будете иметь уровень данных, у вас будет уровень веб-сервера, который предоставляет данные через веб-службы или , и, наконец, у вас будет уровень браузера с кодом на основе , который представляет данные для пользователей и обрабатывает обновления.

Первый уровень не должен иметь прямых связей с базой данных (по требованиям безопасности), быть нагруженным основной бизнес-логикой ( по.

Это понятие больше"из жизни", из той предметной области, которую ты хочешь описать в своем приложении. Бизнес-логика - это описание отношений, поведения между элементами предметной области, процессов, происходящих в той сфере, которая реализуется в приложении, и правил, по которым эти процессы происходят. В первую очередь в твоем приложении реализуются уже на языке программирования основные понятия системы: А затем уже реализуется бизнес-логика, то есть процессы и правила. Есть ли в модели бизнес-логика?

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

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

Может ли эта бизнес-логика быть принудительно привязана к условной базе данных?

Модель сервера баз данных Модель сервера баз данных Для того чтобы избавиться от недостатков модели удаленного доступа, должны быть соблюдены следующие условия: Необходимо, чтобы БД в каждый момент отражала текущее состояние предметной области, которое определяется не только собственно данными, но и связями между объектами данных. То есть данные, которые хранятся в БД, в каждый момент времени должны быть непротиворечивыми. БД должна отражать некоторые правила предметной области, законы, по которым она функционирует .

давайте четко определим: что же такое бизнес логика. Сервер базы данных – это уровень хранения. Базы данных разработаны для.

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

Оптимизатор запросов в субд решает! Можно использовать этот костыль, когда это оправдано. Но его использование лишает смысла"слоя-приложения". Почему бы и нет. Но для меня не очень удобно. И выходит, что даже если я буду подобные запросы хранить в модели в виде , то я всё равно получаю привязку к вендорам, так как нужно этот писать под каждую базу.

Сервис Groupon: разбираем бизнес-логику и делаем структуру бд на Django.