Проектирование баз данных

advertisement
Проектирование баз данных
Базы данных и приложения
Проектирование БД или
приложения?
• Подход, ориентированный на данные:
– Централизация хранения необходима для
совместного использования данных
– Независимость данных
– Гарантии целостности и т.п.
• Подход, ориентированный на приложения
– Своя база данных для каждого приложения
– Обмен данными вместо совместного
использования
БД - Проектирование
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
Download