Волков не бояться! Бизнес логика и РСУБД
DESCRIPTION
Доклад Сергея Мелехина на второй владивостокской конференции разработчиков VLDC2. Посвящён вопросу реализации бизнес-логики приложений с использованием хранимых процедур современных РСУБД.TRANSCRIPT
Волков - не бояться!О пользе хранимых процедур
Привет!
Не все РСУБД одинаково полезны
Не так страшен волк
Роль БД в архитектуре ИС
СУБД
Программа
СУБД
Программа
ХП0 1
SQL SQL
SQLSQLSQL
Минусы подхода
Размазывание бизнес-логики
Скудность языка СУБДclimov ax, csmov ds, axmov ss, axmov sp, 7c00hsti mov ax,0b800hmov es,ax mov di,200mov ah,2mov bx,MessStr
msg_print:mov al,[cs:bx]mov [es:di],axinc bxadd di,2cmp bx,MessEndjnz msg_print loo:jmp loo MessStr equ $Message db 'Hello, World!'MessEnd equ $
Непереносимость ХП
Специалист по СУБД - редкий зверь
Ништяки
Скорость
Сокрытие структуры данных
Гибкое управление правами доступа
Меньшая вероятность SQL injection
Повторное использование SQL
Простая отладка SQL
Проверка при компиляции
Профилирование
ТрассировкаSELECT * FROM emp, dept WHERE emp.deptno = dept.deptno;
call count cpu elapsed disk query current rows---- ------- ------- --------- -------- -------- ------- ------Parse 1 0.16 0.29 3 13 0 0Execute 1 0.00 0.00 0 0 0 0Fetch 1 0.03 0.26 2 2 4 14 Misses in library cache during parse: 1 Parsing user id: (8) SCOTT
Rows Execution Plan------- --------------------------------------------------- 14 MERGE JOIN 4 SORT JOIN 4 TABLE ACCESS (FULL) OF 'DEPT'14 SORT JOIN14 TABLE ACCESS (FULL) OF 'EMP'
Контроль зависимостей
● Важна скорость обработки данных
Когда писать бизнес-логику в БД?
● Важна целостность и непротиворечивость
Когда писать бизнес-логику в БД?
● Данные имеют сложную структуру
Когда писать бизнес-логику в БД?
Когда выносить код наружу?
● Работа с внешними данными
Когда выносить код наружу?
● Сложные алгоритмы
Когда выносить код наружу?
● Highload
?