Волк В. К., Осеев В. Ю., Черепанов О. С.
Книга охватывает широкий круг вопросов, связанных с технологиями хранения и управления данными, основное внимание уделено прикладным технологическим аспектам и практическому освоению инструментальных средств, используемых при проектировании, программировании, управлении производительностью и безопасностью баз данных. Рассматриваются как классические реляционные системы, так и постреляционные NoSQL-решения, а также объектно-реляционные отображения, используемые для взаимодействия объектно-ориентированных приложений с базами данных. Для IT-студентов, а также для специалистов, самостоятельно осваивающих новые для себя разделы этой широкой и динамично развивающейся области, и будет полезна преподавателям при формировании учебно-методического обеспечения соответствующих профильных дисциплин. Структура и содержание книги позволяют использовать ее в качестве базового учебника и сборника задач при подготовке и проведении лекционных и практических занятий, а также при разработке многовариантных контрольных и аттестационных заданий, формировании тематики курсовых проектов и работ.
Предисловие 7
Часть 1. Моделирование и проектирование баз данных 9
Глава 1. Данные как объект моделирования и управления 10
1.1 Данные, информация, знание и понимание – модель DIKW 10
1.2 Управление данными 15
1.3 Классификация данных 23
1.4 Автономность данных 29
1.5 Модели данных 32
1.6 Контрольные вопросы 35
1.7 Практические задания 36
Глава 2. Концептуальная модель данных 40
2.1 Сущности и атрибуты сущностей 40
2.2 Связи между сущностями 43
2.3 Слабые сущности 48
2.4 Моделирование таксономий 51
2.5 Контрольные вопросы 55
2.6 Практические задания 56
Глава 3. Логические модели данных 63
3.1 Иерархическая модель данных 63
3.2 Сетевая модель данных CODASYL 65
3.3 Реляционная модель данных 69
3.4 Объектные и объектно-реляционные модели данных 72
3.5 Контрольные вопросы 74
3.6 Практические задания 75
Глава 4. Реляционная модель данных 77
4.1 Структуры данных 78
4.2 Ограничения целостности 78
4.3 Методы обработки данных 83
4.4 Преобразование ER-модели в исходную R-схему базы данных 88
4.5 Нормализация исходной R-схемы базы данных 94
4.6 Контрольные вопросы 110
4.7 Практические задания 113
Глава 5. Основы SQL 120
5.1 Структура языка и базовые синтаксические конструкции 120
5.2 Стандарты и диалекты языка SQL 137
5.3 Контрольные вопросы 144
5.4 Практические задания 146
Глава 6. Многомерные модели данных 152
6.1 OLAP- и OLTP-системы 152
6.2 Концептуальное представление многомерной модели 153
6.3 Операции многомерной обработки данных 154
6.4 Логические представления многомерной модели данных 156
6.5 Контрольные вопросы 158
6.6 Практические задания 158
Часть 2. Реляционные СУБД. Производительность 159
Глава 7. Физическая модель данных 160
7.1 Файловая структура базы данных 160
7.2 Структура data-файла 164
7.3 Примеры анализа структуры data-файлов 172
7.4 Контрольные вопросы 176
7.5 Практические задания 178
Глава 8. Индексы 181
8.1 Доступ к неупорядоченным данным 181
8.2 Линейные индексы 183
8.3 Иерархические B+tree-индексы 185
8.4 Хеш-индексы 206
8.5 Контрольные вопросы 211
8.6 Практические задания 214
Глава 9. Процедурные планы SQL-запросов 218
9.1 Алгоритм трансляции SQL-запроса 218
9.2 Исполнение процедурного плана SQL-запроса 224
9.3 Визуализация процедурных планов исполнения SQL-запросов 224
9.4 Средства просмотра статистических данных 228
9.5 Контрольные вопросы 230
9.6 Практические задания 231
Глава 10. Управление транзакциями 239
10.1 Свойства транзакций 239
10.2 Конфликты между транзакциями 240
10.3 Уровни изолированности транзакций 242
10.4 Управление блокировками 244
10.5 Примеры SQL-команд 253
10.6 Контрольные вопросы 258
10.7 Практические задания 260
Часть 3. Реляционные СУБД. Защита данных 287
Глава 11. Целостность данных и управление доступом 288
11.1 Целостность данных 288
11.2 Модели управления доступом к данным 292
11.3 Требования к защищенности информационных систем 298
11.4 Архитектура системы дискреционного управления доступом 299
11.5 Примеры SQL-команд управления доступом 301
11.6 Безопасность уровня строк таблиц (RLS) 306
11.7 Контрольные вопросы 312
11.8 Практические задания 314
Глава 12. Динамическое маскирование данных 318
12.1 Примеры использования функций маскирования данных 318
12.2 Контрольные вопросы 319
12.3 Практические задания 320
Глава 13. Шифрование данных 321
13.1 Управление шифрованием 321
13.2 Примеры шифрования данных 322
13.3 Контрольные вопросы 323
13.4 Практические задания 324
Часть 4. NoSQL базы данных 325
Глава 14. Концепции NoSQL-подхода 327
14.1 Достоинства и недостатки NoSQL моделей данных 327
14.2 Классификация NoSQL баз данных 328
Глава 15. СУБД Redis 332
15.1 Данные в Redis 332
15.2 Установка Redis и инструментов 336
15.3 Команды Redis 337
15.4 Кэширование в Redis 346
15.5 Система обмена сообщениями в Redis 347
15.6 Безопасность в Redis 353
15.7 Нагрузочное тестирование и производительность 355
15.8 Проектирование кеш-хранилища 356
15.9 Практические задания 361
15.10 Контрольные задания. Проектирование кеш-хранилища 390
Глава 16. MongoDB – документо-ориентированная СУБД 396
16.1 Структура базы данных MongoDB 396
16.2 Формат данных документа 398
16.3 Основы MQL. Примеры операций обработки данных 402
16.4 Агрегация данных 408
16.5 Индексация документов и планы исполнения запросов 410
16.6 Логическая модель (схема) базы данных MongoDB 416
16.7 Контрольные вопросы 437
16.8 Практические задания 442
Глава 17. CASSANDRA – колоночная СУБД 451
17.1 Модель данных 451
17.2 Примеры реализации 451
17.3 Практическое задание 453
Часть 5. Средства взаимодействия прикладных программ с базами данных 455
Глава 18. Объектно-реляционное отображение 455
18.1 Паттерны взаимодействия с реляционными базами данных 455
18.2 Введение в SQLALchemy 458
18.3 SQLAlchemy Core 460
18.4 SQLAlchemy ORM 489
18.5 Контрольные задания 526
Список использованных источников 540