От автора....14
Часть I. Классификация баз данных....20
Глава 1. Модели данных....22
Реляционные БД....22
Исторический экскурс....22
Реляционная алгебра....24
Ограничения целостности....28
Вспомогательные структуры данных....30
Диаграммы «сущность—связь»....31
Нормальные формы....34
Хранилища «ключ—значение»....39
Java caching API....39
Документоориентированные БД....40
Форматы хранения документов....44
Хранилища семейств колонок....51
БД временны́х рядов....53
Другие модели данных....54
Объектные БД....54
Графовые БД....56
Сравнение моделей данных....58
Литература....60
Глава 2. Другие методы классификации баз данных....62
Аналитические и транзакционные БД....62
Монолитные и распределённые БД....64
БД на диске и в памяти....67
Карта баз данных....69
Литература....72
Часть II. Доступ к данным....74
Глава 3. Структуры хранения данных....76
Общая информация о дисковых структурах....76
Изменяемые и неизменяемые структуры....76
Эффективность операций....78
Изменяемые структуры....80
Неупорядоченная таблица....80
Сжатие данных....84
B-дерево....86
Другие страничные структуры....91
Буферный кеш....94
Неизменяемые структуры....97
LSM-дерево....97
Фильтр Блума....101
Механизмы хранения на основе LSM-деревьев....103
Прочие неизменяемые структуры....104
Колоночное хранение....105
Концепция и история....105
Оптимизация доступа....108
Обновление данных....112
Локализация данных....116
Секционирование....116
Шардирование....123
СУБД в памяти....133
IMDG и IMDB....133
Обеспечение надёжного хранения....135
Примеры СУБД в памяти....137
Литература....146
Глава 4. Обработка данных....150
Поиск данных....150
Поиск данных в структурах на основе LSM-дерева....150
Поиск в неупорядоченной таблице....151
Индексирование....154
Поиск в B-дереве....158
Самый быстрый способ поиска....162
Операции реляционной алгебры....163
Соединение вложенными циклами (nested loops)....165
Соединение слиянием (merge join)....166
Соединение хешированием (hash join)....167
Самый быстрый способ соединения....169
Оптимизация запросов....171
План выполнения запроса....172
Эвристическая оптимизация....175
Оптимизация, основанная на стоимости....176
Кеширование запросов и планов....185
Оптимизация параметризованных запросов....187
Ручное управление планами....191
Реализация бизнес-логики....193
Клиентские модули....193
ORM....198
Хранимый код....201
Литература....207
Часть III. Архитектура СУБД....210
Глава 5. Гарантии корректности данных....212
Транзакции....212
Атомарность....213
Согласованность....214
Изоляция....215
Долговечность (надёжность)....221
Журналирование....222
Назначение журнала....222
Работа с журналом....223
Устройство журнала....227
Структуры без журналирования....229
Общий алгоритм выполнения транзакции....232
Блокировки....233
Классификация блокировок....233
Управление блокировками....240
Конкурентные транзакции без блокировок....244
Версионирование данных....245
Обработка данных без версионирования....245
Версионирование в страничных хранилищах....246
Версионирование в хранилищах на основе LSM-деревьев....251
Версионирование в СУБД в памяти....253
Литература....254
Глава 6. Устройство СУБД....258
Экземпляр....258
Структура экземпляра....258
Общая память экземпляра....259
Пользовательские процессы....264
Служебные процессы....267
База данных....268
Связь базы данных и экземпляра....268
Состав базы данных....269
Литература....272
Часть IV. Распределённые базы данных....274
Глава 7. Компромиссы распределённых баз данных....276
CAP-теорема....276
Формулировка CAP-теоремы....277
Критика CAP-теоремы....279
Системы CP и AP и классификация PACELC....280
Исторический экскурс: CA-системы....283
Oracle RAC....284
IBM PureData System for Transactions....286
HPE NonStop....288
SAP HANA....290
Согласованность в распределённых системах....292
Линеаризация изменений....292
Причинная согласованность....297
Топология кластера....300
Статическая топология....300
Протоколы сплетен....303
Литература....308
Глава 8. Изменение данных в распределённых системах....310
Основные понятия....310
Отказоустойчивый кластер с репликацией....312
Распределённый консенсус....315
Paxos....316
Multi-paxos....319
Raft....320
Zookeeper Atomic Broadcast....324
Другие алгоритмы распределённого консенсуса....325
Распределённые транзакции....327
Протокол двухфазной фиксации....327
Детерминированные транзакции (Calvin transactions)....329
Сага....334
Компенсация несогласованности....337
Нестрогий кворум и направленная передача....337
Восстановление данных и дерево Меркла....338
Версионирование объектов....339
Безопасные типы данных....343
Счётчик (counter)....344
Множество (set)....345
Архитектура распределённых платформ....346
Приложение как координатор транзакции....346
Буквальная реализация спецификации X/Open....347
Выделенный координатор транзакций....347
«Настоящее горизонтальное масштабирование»....349
Google Spanner....350
CockroachDB....351
FoundationDB....353
Независимые узлы — участники саги....355
Литература....356
Часть V. Восстановление при сбоях....360
Глава 9. Репликация....362
Блочная репликация....362
Физическая репликация....365
Логическая репликация....368
Репликация триггерами....371
Репликация с помощью журналов СУБД....372
Репликация с помощью CDC....372
Прикладная репликация....373
Так что же лучше?....374
Литература....376
Глава 10. Резервное копирование....378
Выгрузка данных....379
Холодное сохранение файлов БД....380
Горячее сохранение файлов БД....381
Восстановление на точку....384
Инкрементальное резервное копирование....385
Литература....389
Часть VI. Эксплуатация баз данных....390
Глава 11. Управление базой данных....392
Механизмы управления....392
Мониторинг и журналирование....392
Несколько слов о мониторинге....394
Мониторинг баз данных....396
Мониторинг доступности экземпляра....396
Мониторинг сервера....396
Мониторинг состояния экземпляра....398
Настройка производительности....399
Использование динамических представлений....399
Другие методы настройки производительности....400
Литература....403
Глава 12. Оборудование....404
Серверы....404
Мейнфреймы....404
Мини-ЭВМ....405
Открытые системы....406
Семейство x86....408
Что дальше?....411
Системы хранения данных....412
Дисковый массив или локальные диски?....412
Протоколы сетевого доступа к дискам....414
Hi-end или mid-range?....415
Отказоустойчивость дисковых массивов....416
Литература....419
Глава 13. Коммерческие вопросы эксплуатации....420
Надёжность и производительность....420
Тестирование производительности баз данных....420
Влияние оборудования на производительность БД....423
Обеспечение надёжности баз данных....425
Классификация информационных систем....429
Базы данных в облаке....435
Монолитные транзакционные платформы....436
Распределённые платформы....438
Процедура выбора платформы....440
Формирование списка....440
Оценка стоимости....442
Оценка возможностей....443
Результат....445
Литература....446
Часть VII. Безопасность баз данных....448
Глава 14. Разграничение доступа....450
Ролевая модель доступа....450
Субъекты и объекты....450
Полномочия....453
Ограничение доступа на уровне строк....455
Фильтры строк....455
Доступ на основе меток (label security)....457
Модель доступа для транзакционных приложений....459
Литература....461
Глава 15. Защита от внутренних угроз....462
Принятие решения о защите....462
Классификация данных....462
Принципы защиты данных....464
Модель угроз....465
Средства защиты данных....466
Шифрование....466
Настройка совмещения ролей....469
Аудит....470
Маскирование данных....473
Литература....475
Послесловие....476
Предметно-именной указатель....482
Книга рассказывает об архитектурных принципах, на которых базируются все современные системы управления базами данных, а также об алгоритмах и структурах данных, которые в них используются. Особое внимание уделено сравнению реализаций одних и тех же подходов в близких по функциональности платформах. Кроме того, предлагается оригинальная классификация СУБД, рассматриваются вопросы эксплуатации и обеспечения безопасности.
Для широкого круга ИТ-специалистов и студентов профильных вузов.