Проектирование баз данных Базы данных и приложения Проектирование БД или приложения? • Подход, ориентированный на данные: – Централизация хранения необходима для совместного использования данных – Независимость данных – Гарантии целостности и т.п. • Подход, ориентированный на приложения – Своя база данных для каждого приложения – Обмен данными вместо совместного использования БД - Проектирование http://WWW.math.spbu.ru/user/boris novikov/courses/ 2 Объектные расширения реляционной/табличной модели БД • Объектные возможности расширяют реляционную модель данных • Различные типы коллекций: множества (отношения), сумки (таблицы), упорядоченные списки и массивы • Элементы коллекций могут содержать коллекции в качестве атрибутов • Скалярные типы данных, определяемые администратором БД (домены) • Объектные указатели и пути доступа в сложных объектах (навигация) БД - Проектирование http://WWW.math.spbu.ru/user/boris novikov/courses/ 3 Несовместимость объектной и реляционной моделей • Проблема ``несоответствия импеданса'' impedance mismatch. • Идентификация: объекты-константы и объекты с состоянием. Языки запросов работают только с константами. • Методы объектов плохо учитываются оптимизатором • Декларативность языка запросов плохо совместима с изменяемостью объектов БД - Проектирование http://WWW.math.spbu.ru/user/boris novikov/courses/ 4 Объектно-реляционные отображения • Попытки устранить проблему несоответствия импеданса • Определяют отображение типов данных языка программирования на типы данных СУБД • Отображение иерархий наследования: – В одной таблице с пустыми значениями атрибутов – В разных таблицах • С копированием атрибутов суперкласса • Без копирования атрибутов суперкласса (как ER) БД - Проектирование http://WWW.math.spbu.ru/user/boris novikov/courses/ 5 Наследование в ORM: одна таблица Create table t_person ( Person_id, Person_first_name, Person_last_name, Person_passport, Student_creditbook, Student_dept, Employee_no, Employee_dept_id, Employee_title, Manager_dept_id ) БД - Проектирование http://WWW.math.spbu.ru/user/boris novikov/courses/ 6 Наследование в ORM: отдельные таблицы с копированием атрибутов Create table t_person ( Person_id, Person_first_name, Person_last_name, Person_passport ) Create table t_student ( Person_id, Person_first_name, Person_last_name, Person_passport, Student_creditbook, Student_dept, ) Create table t_employee( Person_id, Person_first_name, Person_last_name, Person_passport, БД - Проектирование Employee_no, Employee_dept_id, Employee_title, Employee_dept_id ) Create table t_manager( Person_id, Person_first_name, Person_last_name, Person_passport, Employee_no, Employee_dept_id, Employee_title, Manager_dept_id ) http://WWW.math.spbu.ru/user/boris novikov/courses/ 7 Наследование в ORM: разные таблицы без дублирования атрибутов Create table t_person ( Person_id, Person_first_name, Person_last_name, Person_passport ) Create table t_student ( Person_id, sport, Student_creditbook, Student_dept, ) Create table t_employee( Person_id, Employee_no, БД - Проектирование Employee_dept_id, Employee_title, Employee_dept_id ) Create table t_manager( Person_id, Manager_dept_id ) http://WWW.math.spbu.ru/user/boris novikov/courses/ 8 Проблемы использования ORM • Возникают и остро проявляются при непродуманном использовании • Решают проблему несоответствия импеданса, игнорируя основную функциональность СУБД • Провоцируют недостаточное использование возможностей языка запросов • Дублирование функций обработчика запросов в приложении • Дублирование схемы базы данных в приложении (отказ от принципа независимости данных и программ) • Вместо монолитных СУБД --- монолитные приложения БД - Проектирование http://WWW.math.spbu.ru/user/boris novikov/courses/ 9 Возможно ли разумное решение? • Баланс между языком программирования и языком запросов • Перенос функциональности приложения в объекты базы данных • Интеграция языка запросов в язык программирования • Доминирующие технические решения почти никогда не выбираются оптимальным образом БД - Проектирование http://WWW.math.spbu.ru/user/boris novikov/courses/ 10 Сервисы данных • Обеспечивают семантически насыщенное представление определенного типа объектов • Высокоуровневый язык запросов • Решают все вопросы, связанные с – Производительностью – Масштабируемостью – Надежностью и доступностью – Распределенностью и паралеллизмом БД - Проектирование http://WWW.math.spbu.ru/user/boris novikov/courses/ 11 Архитектура amazon.com • Быстро растущие объемы вызывали полную замену архитектуры каждые полтора года • Трехслойная архитектура не обеспечивает достаточную масштабируемость • Архитектура, основанная на сервисах – Сервисы данных – агрегирующие сервисы • Ограниченные требования к согласованности БД - Проектирование http://WWW.math.spbu.ru/user/boris novikov/courses/ 12 Администрирование БД • • • • • • Планирование емкости Управление структурами хранения Анализ производительности Настройка сервера БД Настройка структуры хранения БД Настройка запросов БД - Проектирование http://WWW.math.spbu.ru/user/boris novikov/courses/ 13