Ось де неминуче має відбутися зустріч розумів, тобто розуму розробників (DV) та DBA. Робота з Business Logic (BL) та зберігання таких у базі даних може мати вплив, який може як прославити, так і жахнути її реалізацію.
Для деяких продуктів RDBMS існує чудові бібліотеки / інструменти / API для бізнес-логіки та об’єктних інфраструктур, які можна швидко вивчити та використовувати у своїх програмах. Для інших RDBMS відсутні бібліотеки / інструменти / API.
Раніше клієнтські серверні програми перетворювали міст в BL за допомогою зберіганих процедур (SP). Для таких продуктів, як Oracle і SQL Server, це було зроблено рано. По мірі створення баз даних з відкритим кодом, таких як PostgreSQL та MySQL, ті, хто їх використовує, ризикують зламати нову основу із збереженими процедурами в BL. PostgreSQL дуже швидко визрівав у цьому, оскільки були впроваджені не тільки збережені процедури, але і можливість розробки мов клієнтів. MySQL в основному припинив розвиватися у світі збережених процедур і прийшов у вичерпаній формі мови з багатьма обмеженнями. Таким чином, якщо мова заходить про BL, ви повністю перебуваєте на милі MySQL та мови його збереженої процедури.
Залишається лише одне питання: Незалежно від RDBMS, чи повинен BL проживати повністю або частково в базі даних?
Подумайте про розробника. Коли в програмі все не вдається, процес налагодження дозволить розробнику скачувати та виходити з бази даних, щоб слідкувати за ланцюжками даних, які можуть або не можуть бути виправними. Це як кодування програми C ++ та виклик коду Assembler посередині. Ви повинні перейти з вихідного коду, класів і структур на переривання, регістри та зсуви І НАЗАД !!! Це налагодження на тому самому рівні.
Розробники можуть мати можливість створити високошвидкісний метод виконання BL у поєднанні з мовними конфігураціями (прапори компілятора для C ++, різні налаштування для PHP / Python тощо) через бізнес-об'єкти, що сидять у пам'яті, а не в базі даних. Деякі намагаються перенести цю ідеологію для швидшого запуску коду в базу даних, написавши бібліотеки, де налагодження збережених процедур і тригерів добре інтегровано в базу даних і, здавалося б, корисно.
Таким чином, розробнику поставлено завдання розробляти, налагоджувати та підтримувати вихідний код та BL у двох мовах.
А тепер подумайте про DBA. База даних Бази даних хоче зберегти СУБД максимально вираженою та значущою у царині збережених процедур. DBA може сприймати BL як щось зовнішнє до Бази даних. Тим не менш, коли SQL вимагає даних, необхідних для BL, SQL має бути худорлявим і середнім.
Тепер на зустріч умів !!!
Розробник кодує SP та використовує ітерактивні методи. DBA дивиться на SP. DBA визначає, що один оператор SQL може замінити ітерактивні методи, написані розробником. Розробник бачить, що оператор SQL, запропонований DBA, вимагає викликати інший BL-код або SQL, який не відповідає нормальним планам виконання оператора SQL.
Зважаючи на це, конфігурація, налаштування продуктивності та кодування SP стає функцією глибини та інтенсивності даних BL для пошуку даних. Чим більша глибина та інтенсивність даних BL, тим більше розробників та DBA повинні знаходитись на одній сторінці для кількості даних та потужності обробки, наданої Базі даних.
ВИСНОВОК
Спосіб пошуку даних повинен завжди включати і розробники, і табори DBA. Завжди слід робити концесії щодо того, які методи кодування та парадигми пошуку даних можуть працювати разом, як для швидкості, так і для ефективності. Якщо підготовка даних до вихідного коду для обробки виконується лише один раз до того, як код отримає дані, DBA повинен продиктувати використання низької та середньої SQL. Якщо BL - це те, з чим DBA не співзвучне, то лейці знаходяться в руках розробника. Ось чому DBA повинен бачити себе та частину команди проекту, а не острів для себе, тоді як розробник повинен дозволити DBA здійснювати тонку настройку SQL, якщо він цього вимагає.