Именно здесь неизбежно должно произойти встреча умов, то есть умов разработчиков (DV) и администраторов баз данных. Работа с бизнес-логикой (BL) и ее хранение в базе данных может оказать влияние, которое может либо прославить, либо ужаснуть ее реализацией.
Для некоторых продуктов СУБД существуют превосходные библиотеки / инструменты / API для бизнес-логики и объектной инфраструктуры, которые можно быстро освоить и использовать в их приложениях. Для других СУБД нет библиотек / инструментов / API.
В прошлом приложения клиент-сервер делали мост в BL с помощью хранимых процедур (SP). Для таких продуктов, как Oracle и SQL Server, это было сделано рано. С появлением баз данных с открытым исходным кодом, таких как PostgreSQL и MySQL, те, кто их использует, рискуют выйти на новый уровень с помощью хранимых процедур в BL. PostgreSQL очень быстро стал зрелым, так как были реализованы не только хранимые процедуры, но и возможность создавать языки клиентов. MySQL в основном прекратил развиваться в мире хранимых процедур и появился в урезанной форме языка со многими ограничениями. Таким образом, когда дело доходит до BL, вы полностью зависите от MySQL и его языка хранимых процедур.
На самом деле остается только один вопрос: независимо от СУБД, BL должен полностью или частично находиться в базе данных?
Подумайте о разработчике. Когда в приложении что-то идет не так, процесс отладки будет заставлять разработчика входить и выходить из базы данных, чтобы следовать изменениям данных, которые могут быть или не быть правильными с перерывами. Это похоже на кодирование приложения C ++ и вызов кода ассемблера в середине. Вы должны переключиться с исходного кода, классов и структур на прерывания, регистры и смещения И НАЗАД !!! Это выводит отладку на тот же уровень.
Разработчики могут создать высокоскоростной метод выполнения BL в сочетании с языковыми конфигурациями (флаги компилятора для C ++, различные настройки для PHP / Python и т. Д.) С помощью бизнес-объектов, находящихся в памяти, а не в базе данных. Некоторые пытались объединить эту идеологию для более быстрого выполнения кода в базе данных, написав библиотеки, в которых отладка хранимых процедур и триггеров хорошо интегрирована в базу данных и кажется бесполезной для использования.
Таким образом, перед разработчиком стоит задача разработать, отладить и поддерживать исходный код и BL в двух языках.
Теперь подумайте о DBA. Администратор базы данных хочет сохранить базу данных максимально доступной и иметь в виду хранимые процедуры. Администратор базы данных может рассматривать BL как нечто внешнее по отношению к базе данных. Тем не менее, когда SQL запрашивает данные, необходимые для BL, SQL должен быть скудным и средним.
Теперь для встречи умов !!!
Разработчик кодирует SP и использует итеративные методы. DBA смотрит на SP. DBA определяет, что один оператор SQL может заменить итеративные методы, написанные разработчиком. Разработчик видит, что оператор SQL, предложенный администратором базы данных, требует вызова другого кода, связанного с BL, или SQL, который не соответствует обычным планам выполнения оператора SQL.
В свете этого конфигурация, настройка производительности и SP-кодирование становятся функцией глубины и интенсивности данных BL для поиска данных. Чем больше глубина и интенсивность использования данных BL, тем больше разработчиков и администраторов баз данных должны находиться на одной странице для объема данных и вычислительной мощности, предоставляемых базе данных.
ЗАКЛЮЧЕНИЕ
Способ извлечения данных должен всегда включать в себя как лагеря разработчиков, так и базы данных. Всегда следует идти на уступки в отношении того, какие методы кодирования и парадигмы поиска данных могут работать вместе, как для скорости, так и для эффективности. Если подготовка данных для обработки исходного кода выполняется только один раз, прежде чем код получит данные, администратор БД должен продиктовать использование бережливого и среднего SQL. Если BL - это то, с чем DBA не согласен, то бразды правления находятся в руках разработчика. Вот почему администратор базы данных должен видеть себя и часть команды проекта, а не остров для себя, а разработчик должен позволить администратору базы данных выполнить точную настройку SQL, если он этого требует.