Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Основы технологий баз данных

Покупка
Артикул: 745419.02.99
Доступ онлайн
999 ₽
В корзину
Материал первой части учебного пособия составляет основу для базового курса и содержит краткий обзор требований и критериев оценки СУБД и баз данных, теоретическую реляционную модель данных, основные конструкции языка запросов SQL, организацию доступа к базе данных PostgreSOL, вопросы проектирования приложений и основные расширения, доступные в системе PostgreSOL. Вторая часть, добавленная в настоящем издании, содержит материал, который будет полезен разработчикам баз данных и СУБД. В ней подробно рассматриваются структуры хранения, методы выполнения и оптимизации запросов, дополнительные возможности языка SQL, средства поддержки согласованности и надежности. Рассмотрены средства программирования серверов баз данных, средства расширения функциональности PostgreSOL, вопросы создания систем с репликацией, параллельных и распределенных систем баз данных.
Новиков, Б. А. Основы технологий баз данных : учебное пособие / Б. А. Новиков, Е. А. Горшкова, Н. Г. Графеева ; под ред. Е. В. Рогова. — 2-е изд. — Москва : ДМК Пресс, 2020. - 582 с. - ISBN 978-5-97060-841-8. - Текст : электронный. - URL: https://znanium.com/catalog/product/1210665 (дата обращения: 28.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов
Компания Postgres Professional

Б. А. Новиков,

Е. А. Горшкова, Н. Г. Графеева

Основы технологий
баз данных

Второе издание

Москва, 2020

УДК 004.65
ББК 32.972.134
Н73

Новиков Б. А.

Н73
Основы технологий баз данных: учебное пособие / Б. А. Новиков,
Е. А. Горшкова, Н. Г. Графеева; под ред. Е. В. Рогова. — 2-е изд. — М.:
ДМК Пресс, 2020. — 582 с.

ISBN 978-5-97060-841-8

Материал первой части учебного пособия составляет основу для базового курса и содержит краткий обзор требований и критериев
оценки СУБД и баз данных, теоретическую реляционную модель
данных, основные конструкции языка запросов SQL, организацию
доступа к базе данных PostgreSQL, вопросы проектирования приложений и основные расширения, доступные в системе PostgreSQL.

Вторая часть, добавленная в настоящем издании, содержит материал, который будет полезен разработчикам баз данных и СУБД. В ней
подробно рассматриваются структуры хранения, методы выполнения и оптимизации запросов, дополнительные возможности языка
SQL, средства поддержки согласованности и надежности. Рассмотрены средства программирования серверов баз данных, средства расширения функциональности PostgreSQL, вопросы создания систем
с репликацией, параллельных и распределенных систем баз данных.

Сайт книги: https://postgrespro.ru/education/books/dbtech.

Для программистов и студентов
УДК 004.655
ББК 32.973.134

ISBN 978-5-6041193-5-8
© Текст, оформление, ООО «ППГ», 2019, 2020
ISBN 978-5-97060-841-8
© Издание, ДМК Пресс, 2020

Оглавление

О курсе
13

На кого ориентирован курс . . . . . . . . . . . . . . . . . . . . . . . . . .
13

Какие знания будут получены . . . . . . . . . . . . . . . . . . . . . . . . .
13

Структура курса . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
14

Программные средства, используемые в курсе . . . . . . . . . . . . . . .
14

Благодарности . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
15

Часть I. От теории к практике
17

Глава 1. Введение
19

1.1. Базы данных и СУБД . . . . . . . . . . . . . . . . . . . . . . . . . . .
19

1.2. Требования к СУБД . . . . . . . . . . . . . . . . . . . . . . . . . . . .
20

1.3. Разделение данных и программ
. . . . . . . . . . . . . . . . . . . .
23

1.4. Языки запросов . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
26

1.5. Целостность и согласованность . . . . . . . . . . . . . . . . . . . . .
26

1.6. Отказоустойчивость
. . . . . . . . . . . . . . . . . . . . . . . . . . .
28

1.7. Безопасность и разграничение доступа . . . . . . . . . . . . . . . .
29

1.8. Производительность . . . . . . . . . . . . . . . . . . . . . . . . . . .
29

1.9. Создание приложений, взаимодействующих с базой данных . . .
33

1.10.Итоги главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
34

1.11.Контрольные вопросы . . . . . . . . . . . . . . . . . . . . . . . . . .
35

Глава 2. Теоретические основы БД
37

2.1. Модели данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
37

2.1.1. Идентификация и изменяемость . . . . . . . . . . . . . . . .
38

2.1.2. Навигация и поиск по значениям
. . . . . . . . . . . . . . .
40

2.1.3. Объекты и коллекции объектов . . . . . . . . . . . . . . . . .
41

2.1.4. Свойства моделей данных . . . . . . . . . . . . . . . . . . . .
41

2.2. Реляционная модель данных . . . . . . . . . . . . . . . . . . . . . .
42

2.2.1. Основные понятия реляционной модели данных . . . . . .
43

2.2.2. Реляционная алгебра . . . . . . . . . . . . . . . . . . . . . . .
47

2.2.3. Другие языки запросов
. . . . . . . . . . . . . . . . . . . . .
54

2.2.4. Особенности реляционной модели данных . . . . . . . . . .
56

2.2.5. Нормальные формы
. . . . . . . . . . . . . . . . . . . . . . .
57

2.2.6. Практические варианты реляционной модели данных . . .
61

3

Оглавление

2.3. Средства концептуального моделирования . . . . . . . . . . . . . .
63

2.3.1. Модель данных «сущность — связь» . . . . . . . . . . . . . .
64

2.3.2. Концептуальные объектные модели . . . . . . . . . . . . . .
70

2.4. Объектные и объектно-реляционные модели данных . . . . . . . .
71

2.5. Другие модели данных . . . . . . . . . . . . . . . . . . . . . . . . . .
73

2.5.1. Слабоструктурированные модели данных
. . . . . . . . . .
73

2.5.2. Модели для представления знаний
. . . . . . . . . . . . . .
74

2.5.3. Ключ — значение . . . . . . . . . . . . . . . . . . . . . . . . .
74

2.5.4. Устаревшие модели данных . . . . . . . . . . . . . . . . . . .
75

2.6. Примеры проектирования схемы в модели «сущность — связь» . .
75

2.7. Библиографические комментарии . . . . . . . . . . . . . . . . . . .
81

2.8. Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83

Глава 3. Знакомимся с базой данных
85

3.1. Установка базы данных
. . . . . . . . . . . . . . . . . . . . . . . . .
85

3.2. Подключение к серверу базы данных
. . . . . . . . . . . . . . . . .
85

3.3. Простой клиент: psql . . . . . . . . . . . . . . . . . . . . . . . . . . .
87

3.4. Итоги главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90

3.5. Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
90

Глава 4. Введение в SQL
91

4.1. Назначение языка SQL . . . . . . . . . . . . . . . . . . . . . . . . . .
91

4.2. Быстрый старт . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
92

4.2.1. Простые типы данных . . . . . . . . . . . . . . . . . . . . . .
92

4.2.2. Основные конструкции и синтаксис . . . . . . . . . . . . . .
95

4.2.3. Описание данных: отношения . . . . . . . . . . . . . . . . .
95

4.2.4. Заполнение таблиц . . . . . . . . . . . . . . . . . . . . . . . .
99

4.2.5. Чтение данных
. . . . . . . . . . . . . . . . . . . . . . . . . . 101

4.2.6. Модификация данных . . . . . . . . . . . . . . . . . . . . . . 103

4.3. Запросы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

4.3.1. Фильтрация и проекция . . . . . . . . . . . . . . . . . . . . . 105
4.3.2. Произведение и соединение
. . . . . . . . . . . . . . . . . . 106

4.3.3. Псевдонимы для таблиц . . . . . . . . . . . . . . . . . . . . . 111
4.3.4. Вложенные подзапросы . . . . . . . . . . . . . . . . . . . . . 112
4.3.5. Упорядочивание результата . . . . . . . . . . . . . . . . . . . 116
4.3.6. Агрегирование и группировка
. . . . . . . . . . . . . . . . . 117

4.3.7.
Теоретико-множественные операции . . . . . . . . . . . . . 119

4.3.8. Вывод результатов после модификации данных . . . . . . . 121
4.3.9. Последовательности . . . . . . . . . . . . . . . . . . . . . . . 122
4.3.10. Представления
. . . . . . . . . . . . . . . . . . . . . . . . . . 124

4

Оглавление

4.4. Структуры хранения . . . . . . . . . . . . . . . . . . . . . . . . . . . 126
4.5. Логическая организация данных . . . . . . . . . . . . . . . . . . . . 132
4.6. Итоги главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135
4.7. Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 135

Глава 5. Управление доступом в базах данных
139

5.1. Модели защиты и разграничения доступа
. . . . . . . . . . . . . . 139

5.2. Пользователи и роли в СУБД
. . . . . . . . . . . . . . . . . . . . . . 141

5.3. Объекты и привилегии . . . . . . . . . . . . . . . . . . . . . . . . . . 143
5.4. Итоги главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145
5.5. Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

Глава 6. Транзакции и согласованность базы данных
147

6.1. Определение и основные требования к транзакциям . . . . . . . . 148
6.2. Аномалии конкурентного выполнения
. . . . . . . . . . . . . . . . 150

6.3. Восстановимость
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153

6.4. Диспетчеры и протоколы
. . . . . . . . . . . . . . . . . . . . . . . . 154

6.5. Использование транзакций в приложениях . . . . . . . . . . . . . . 155
6.6. Уровни изоляции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 158
6.7. Точки сохранения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
6.8. Долговечность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 162
6.9. Итоги главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163
6.10.Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

Глава 7. Разработка приложений СУБД
167

7.1. Проектирование схемы базы данных
. . . . . . . . . . . . . . . . . 169

7.2. Объектно-реляционная потеря соответствия . . . . . . . . . . . . . 172
7.3. Использование каркасов объектно-реляционных отображений . . 174

7.3.1.
Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

7.3.2.
Запросы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

7.3.3.
Когда применять каркасы?
. . . . . . . . . . . . . . . . . . . 179

7.4. Кеширование данных
. . . . . . . . . . . . . . . . . . . . . . . . . . 180

7.5. Взаимодействие с базой данных . . . . . . . . . . . . . . . . . . . . 183

7.5.1.
Параметры запросов . . . . . . . . . . . . . . . . . . . . . . . 183

7.5.2.
Унифицированные средства взаимодействия
. . . . . . . . 185

7.5.3.
Интерфейс PostgreSQL для приложений . . . . . . . . . . . . 186

7.6. Некоторые общие задачи
. . . . . . . . . . . . . . . . . . . . . . . . 187

7.6.1.
Ограничение доступа к данным
. . . . . . . . . . . . . . . . 187

7.6.2.
Поддержка многоязычности
. . . . . . . . . . . . . . . . . . 189

7.7.
Настройка
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

5

Оглавление

7.8. Проектирование декларативных запросов . . . . . . . . . . . . . . 194
7.9. Итоги главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 195
7.10. Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

Глава 8. Расширения реляционной модели
197

8.1. Ограниченность реализаций SQL . . . . . . . . . . . . . . . . . . . . 197
8.2. Реализация объектных расширений в PostgreSQL . . . . . . . . . . 200

8.2.1. Наследование . . . . . . . . . . . . . . . . . . . . . . . . . . . 200
8.2.2. Определение типов данных . . . . . . . . . . . . . . . . . . . 201
8.2.3. Домены . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
8.2.4. Коллекции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202
8.2.5. Указатели
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

8.3. Функции . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204
8.4. Слабоструктурированные данные: JSON
. . . . . . . . . . . . . . . 205

8.5. Слабоструктурированные данные: XML . . . . . . . . . . . . . . . . 209
8.6. Активные базы данных
. . . . . . . . . . . . . . . . . . . . . . . . . 213

8.7. Итоги главы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218
8.8. Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 218

Глава 9. Разновидности СУБД
221

9.1. Классы приложений БД
. . . . . . . . . . . . . . . . . . . . . . . . . 221

9.2. Структуры хранения . . . . . . . . . . . . . . . . . . . . . . . . . . . 223
9.3. Архитектуры связи с приложениями . . . . . . . . . . . . . . . . . . 224
9.4. Оборудование . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

9.4.1. Носители данных . . . . . . . . . . . . . . . . . . . . . . . . . 226
9.4.2. Вычислительные ресурсы . . . . . . . . . . . . . . . . . . . . 228

9.5. Хранилища данных . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

9.5.1. Агрегатно-ориентированные базы данных . . . . . . . . . . 232
9.5.2. Базы данных на основе графов . . . . . . . . . . . . . . . . . 233

9.6. Выбор СУБД для построения информационных систем . . . . . . . 233
9.7. Итоги главы и первой части . . . . . . . . . . . . . . . . . . . . . . . 236
9.8. Упражнения . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

Часть II. От практики к мастерству
239

Глава 10. Архитектура СУБД
241

10.1. Интерфейс приложений
. . . . . . . . . . . . . . . . . . . . . . . . 242

10.2. Обеспечение согласованности и отказоустойчивости . . . . . . . 243
10.3. Выполнение запросов . . . . . . . . . . . . . . . . . . . . . . . . . . 244

6

Оглавление

10.4. Организация хранения данных . . . . . . . . . . . . . . . . . . . . 246
10.5. Управление процессами и оперативной памятью
. . . . . . . . . 248

10.6. Параллельные и распределенные базы данных . . . . . . . . . . . 249
10.7.
Расширения и расширяемость . . . . . . . . . . . . . . . . . . . . . 251

10.8. Безопасность . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252
10.9. Итоги главы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

10.10. Упражнения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252

Глава 11. Структуры хранения и основные алгоритмы СУБД
255

11.1. Хранение объектов логического уровня . . . . . . . . . . . . . . . 255

11.1.1.
Размещение коллекций объектов . . . . . . . . . . . . . . . 256

11.1.2.
Размещение данных на страницах . . . . . . . . . . . . . . 260

11.1.3.
Хранение больших объектов . . . . . . . . . . . . . . . . . . 263

11.1.4.
Строки или колонки? . . . . . . . . . . . . . . . . . . . . . . 264

11.2. Индексы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265

11.2.1.
Одномерные индексы
. . . . . . . . . . . . . . . . . . . . . 267

11.2.2.
Пространственные индексы . . . . . . . . . . . . . . . . . . 275

11.2.3.
Инвертированные индексные структуры . . . . . . . . . . 280

11.2.4.
Разреженные индексы . . . . . . . . . . . . . . . . . . . . . 282

11.2.5.
Сигнатурные индексы
. . . . . . . . . . . . . . . . . . . . . 282

11.2.6.
Особенности реализации индексов в PostgreSQL . . . . . . 284

11.3. Выполнение алгебраических операций
. . . . . . . . . . . . . . . 286

11.3.1.
Алгебраические операции и алгоритмы . . . . . . . . . . . 286

11.3.2.
Операции выборки данных . . . . . . . . . . . . . . . . . . 287

11.3.3.
Сортировка . . . . . . . . . . . . . . . . . . . . . . . . . . . . 289

11.3.4.
Алгоритм вложенных циклов . . . . . . . . . . . . . . . . . 291

11.3.5.
Алгоритм соединения на основе сортировки и слияния
. 294

11.3.6.
Соединение на основе хеширования . . . . . . . . . . . . . 297

11.3.7.
Многопотоковое соединение
. . . . . . . . . . . . . . . . . 299

11.4. Итоги главы и библиографические комментарии
. . . . . . . . . 300

11.5. Упражнения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 301

Глава 12. Выполнение и оптимизация запросов
303

12.1. Стадии обработки запроса . . . . . . . . . . . . . . . . . . . . . . . 303
12.2. Подготовка и выполнение . . . . . . . . . . . . . . . . . . . . . . . 306
12.3. Оптимизация запросов . . . . . . . . . . . . . . . . . . . . . . . . . 308

12.3.1.
Задача оптимизации . . . . . . . . . . . . . . . . . . . . . . 308

12.3.2.
Сокращение пространства планов . . . . . . . . . . . . . . 310

12.3.3.
Алгоритмы оптимизации
. . . . . . . . . . . . . . . . . . . 311

7

Оглавление

12.4. Модели стоимости . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

12.4.1.
Функции и модели стоимости . . . . . . . . . . . . . . . . . 321

12.4.2.
Модели стоимости для алгоритмов бинарных операций . 322

12.4.3.
Оценки селективности . . . . . . . . . . . . . . . . . . . . . 325

12.4.4.
Статистические характеристики данных
. . . . . . . . . . 326

12.5. Другие подходы к оптимизации запросов . . . . . . . . . . . . . . 328

12.5.1.
Адаптивное выполнение запросов . . . . . . . . . . . . . . 329

12.5.2.
Параметрическая оптимизация . . . . . . . . . . . . . . . . 332

12.5.3.
Семантическая оптимизация . . . . . . . . . . . . . . . . . 333

12.5.4.
Многокритериальная оптимизация
. . . . . . . . . . . . . 333

12.6. Итоги главы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

12.7.
Упражнения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 334

Глава 13. Управление транзакциями
337

13.1. Критерии корректности конкурентного выполнения . . . . . . . 338

13.1.1.
Формальные модели корректности . . . . . . . . . . . . . . 338

13.1.2.
Изоляция мгновенных снимков . . . . . . . . . . . . . . . . 347

13.1.3.
Расписания с множественными версиями данных . . . . . 351

13.1.4.
Восстановимость
. . . . . . . . . . . . . . . . . . . . . . . . 354

13.1.5.
Дополнительные свойства классов расписаний
. . . . . . 357

13.2. Диспетчеры и протоколы . . . . . . . . . . . . . . . . . . . . . . . . 357

13.2.1.
Требования и критерии оценки . . . . . . . . . . . . . . . . 358

13.2.2.
Блокировки
. . . . . . . . . . . . . . . . . . . . . . . . . . . 360

13.2.3.
Двухфазные протоколы, использующие блокировки
. . . 362

13.2.4.
Тупики
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 364

13.2.5.
Другие протоколы на основе блокирования . . . . . . . . . 366

13.2.6.
Протокол на основе меток времени
. . . . . . . . . . . . . 367

13.2.7.
Реализации протокола SI . . . . . . . . . . . . . . . . . . . . 369

13.2.8.
Многоверсионные протоколы . . . . . . . . . . . . . . . . . 370

13.2.9.
Блокировки или метки времени? . . . . . . . . . . . . . . . 372

13.3. Ослабленные критерии корректности: уровни изоляции в SQL
. 372

13.4. Итоги главы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

13.5. Упражнения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

Глава 14. Надежность баз данных
377

14.1. Восстановление после отказов
. . . . . . . . . . . . . . . . . . . . 377

14.2. Отказы сервера баз данных
. . . . . . . . . . . . . . . . . . . . . . 378

14.2.1.
Журнал транзакций . . . . . . . . . . . . . . . . . . . . . . . 378

14.2.2.
Рестарт сервера
. . . . . . . . . . . . . . . . . . . . . . . . . 382

14.2.3.
Контрольные точки . . . . . . . . . . . . . . . . . . . . . . . 384

8

Оглавление

14.3. Разрушение носителя . . . . . . . . . . . . . . . . . . . . . . . . . . 385

14.3.1.
Экспорт и импорт . . . . . . . . . . . . . . . . . . . . . . . . 387

14.3.2.
Копирование с восстановлением по журналам . . . . . . . 387

14.3.3.
Резервные серверы баз данных . . . . . . . . . . . . . . . . 390

14.4. Итоги главы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

14.5. Упражнения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

Глава 15. Дополнительные возможности SQL
393

15.1. Дополнительные средства SQL
. . . . . . . . . . . . . . . . . . . . 393

15.1.1.
Общие табличные выражения . . . . . . . . . . . . . . . . . 393

15.1.2.
Рекурсивные запросы . . . . . . . . . . . . . . . . . . . . . . 397

15.1.3.
Аналитические и оконные функции . . . . . . . . . . . . . 401

15.2. Избыточные структуры хранения . . . . . . . . . . . . . . . . . . . 405

15.2.1.
Материализованные представления . . . . . . . . . . . . . 405

15.2.2.
Индексы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 408

15.3. Итоги главы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

15.4. Упражнения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 417

Глава 16. Функции и процедуры в базе данных
419

16.1. Хранимые подпрограммы . . . . . . . . . . . . . . . . . . . . . . . 419
16.2. Процедурный язык PL/pgSQL
. . . . . . . . . . . . . . . . . . . . . 426

16.2.1.
Структурные конструкции языка PL/pgSQL . . . . . . . . . 427

16.2.2.
Работа с объектами базы данных . . . . . . . . . . . . . . . 430

16.2.3.
Динамический SQL . . . . . . . . . . . . . . . . . . . . . . . 434

16.2.4.
Обработка исключительных ситуаций . . . . . . . . . . . . 436

16.3. Функции и процедуры на языке SQL . . . . . . . . . . . . . . . . . 440
16.4. Итоги главы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

16.5. Упражнения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 442

Глава 17. Расширяемость PostgreSQL
443

17.1.
Пользовательские агрегаты
. . . . . . . . . . . . . . . . . . . . . . 443

17.2.
Типы данных, операторы и классы операторов . . . . . . . . . . . 446

17.3.
Индексы . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 450

17.4.
Другие инструменты расширения
. . . . . . . . . . . . . . . . . . 452

17.4.1.
Модули расширения
. . . . . . . . . . . . . . . . . . . . . . 453

17.4.2.
Обертки сторонних данных . . . . . . . . . . . . . . . . . . 454

17.4.3.
Подключение новых процедурных языков
. . . . . . . . . 455

17.5.
Итоги главы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 455

17.6.
Упражнения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 456

9

Оглавление

Глава 18. Полнотекстовый поиск
457

18.1. Модели информационного поиска . . . . . . . . . . . . . . . . . . 457

18.1.1.
Предварительная обработка текста . . . . . . . . . . . . . . 459

18.1.2.
Булева модель информационного поиска . . . . . . . . . . 459

18.1.3.
Векторные модели информационного поиска . . . . . . . 462

18.2. Средства полнотекстового поиска в PostgreSQL
. . . . . . . . . . 465

18.3. Поддержка нечеткого поиска в PostgreSQL
. . . . . . . . . . . . . 467

18.3.1.
Триграммный поиск
. . . . . . . . . . . . . . . . . . . . . . 467

18.3.2.
Фонетический поиск . . . . . . . . . . . . . . . . . . . . . . 469

18.4. Итоги главы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 470

18.5. Упражнения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 471

Глава 19. Безопасность данных
473

19.1. Безопасность и разграничение доступа . . . . . . . . . . . . . . . 473
19.2. Основные понятия и модели
. . . . . . . . . . . . . . . . . . . . . 474

19.3. Особенности ролей в PostgreSQL
. . . . . . . . . . . . . . . . . . . 475

19.4. Привилегии
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 476

19.5. Права доступа при выполнении хранимых функций
. . . . . . . 477

19.6. Разграничение доступа на уровне строк таблиц
. . . . . . . . . . 479

19.7.
Регистрация событий и изменений . . . . . . . . . . . . . . . . . . 483

19.8. Итоги главы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

19.9. Упражнения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

Глава 20. Администрирование баз данных
487

20.1. Планирование конфигурации сервисов хранения данных
. . . . 489

20.2. Безопасность и разграничение доступа . . . . . . . . . . . . . . . 492
20.3. Конфигурация баз данных . . . . . . . . . . . . . . . . . . . . . . . 492
20.4. Мониторинг баз данных . . . . . . . . . . . . . . . . . . . . . . . . 494
20.5. Настройка производительности . . . . . . . . . . . . . . . . . . . . 497

20.5.1.
Настройка серверов баз данных . . . . . . . . . . . . . . . . 500

20.5.2.
Настройка схемы базы данных . . . . . . . . . . . . . . . . 503

20.5.3.
Настройка запросов . . . . . . . . . . . . . . . . . . . . . . . 507

20.5.4.
Целостная настройка приложений . . . . . . . . . . . . . . 509

20.6. Надежность и доступность . . . . . . . . . . . . . . . . . . . . . . . 509
20.7.
Техническое обслуживание базы данных
. . . . . . . . . . . . . . 512

20.8. Итоги главы
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513

20.9. Упражнения
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 513

Глава 21. Репликация баз данных
515

21.1. Множественные копии данных . . . . . . . . . . . . . . . . . . . . 515

10

Доступ онлайн
999 ₽
В корзину