
Базовая книга по инженерии данных. Рассмотрены все аспекты проектирования и эксплуатации различных архитектур данных, а также полный жизненный цикл работы с данными: подготовка, поглощение, преобразование, очистка, сочетание, оркестрация, конвейеризация. Особое внимание уделено облачным технологиям, распределению нагрузки и безопасному хранению данных. Разобраны приёмы формирования запросов, работы с базами данных и отслеживания потоков данных. Книга даёт исчерпывающее представление о проектировании систем для обработки разнородных данных, поддержании этих систем в упорядоченном и доступном виде и о тенденциях развития современной индустрии данных.
Последнее десятилетие инженерия данных бурно развивается, поэтому среди программистов, исследователей и аналитиков данных растёт запрос на комплексное рассмотрение инженерии данных как цельной парадигмы.
Из книги вы узнаете, как проектировать и создавать enterprise-системы для обработкпи данных. Книга помогает оценить разнообразные технологии, доступные в рамках инженерии данных, понять жизненный цикл данных как продукта.
Авторы демонстрируют все тонкости инженерии данных в динамике, рассказывают, как объединять и сочетать различные облачные технологии обработки данных для максимального удовлетворения интересов пользователя. Показано, как организовать генерацию, поглощение, оркестрацию, преобразование, хранение и конвейеризацию данных и управление ими в любой среде, независимо от того, на основе какой базовой технологии она построена.
В этой книге:
- Краткий обзор технологического ландшафта современной инженерии данных
- Решение задач по инженерии данных с применением наилучших практик
- Подбор технологий, выстраивание архитектуры данных, налаживание бизнес-процессов
- Внедрение практик управления данными и обеспечения безопасности процессов в рамках всего жизненного цикла инженерии данных
Сегодня мир данных активно развивается. Сначала их проектировали, затем укладывали в базах данных. Затем ими занялись шефы. Потом появились архитекторы данных. Эта книга открывает новый этап на пути к зрелости всей индустрии данных. Абсолютно необходимый материал для всех, кто всерьёз желает делать карьеру в области работы с данными.
Билл Инмон, основоположник технологии хранилищ данных
Эта книга — отличное введение в темы передачи, обработки и преобразования данных. Исключительно рекомендую её всем, кто желает быстрее развиваться в инженерии или анализе данных, а также практикующим специалистам, которым требуется заполнить пробелы в знаниях.
Джордан Тигани, основатель и генеральный директор сайта MotherDuck, основатель и соавтор проекта BigQuery
Книгу “Основы инженерии данных: как создавать надёжные системы обработки данных“ можно купить со скидкой в интернет-магазине издательства “БХВ“.
Отзывы о книге……………………………………………………………………………………… 17
Предисловие…………………………………………………………………………………………… 20
О чем не расскажет эта книга…………………………………………………………………………………………………… 20
О чем расскажет эта книга………………………………………………………………………………………………………… 20
Для кого предназначена эта книга…………………………………………………………………………………………… 21
Предварительные требования………………………………………………………………………………………………….. 22
Что вы узнаете и как улучшите свои способности…………………………………………………………………. 22
Структура книги………………………………………………………………………………………………………………………… 23
Условные обозначения……………………………………………………………………………………………………………… 24
Благодарности…………………………………………………………………………………………………………………………… 24
Часть I. Основы и компоненты………………………………………………… 27
Глава 1. Понятие инженерии данных…………………………………………………….. 29
Что такое инженерия данных?………………………………………………………………………………………………….. 29
Определение понятия «инженерия данных»………………………………………………………………… 30
Жизненный цикл инженерии данных……………………………………………………………………………. 31
Эволюция инженерии данных……………………………………………………………………………………….. 32
Ранние годы: 1980–2000гг., от хранилищ данных до Интернета……………………… 32
Начало 2000-х годов: Рождение современной инженерии данных…………………… 32
2000–2010-е годы: Инженерия больших данных………………………………………………… 34
2020-е годы: Инженерия жизненного цикла данных…………………………………………… 36
Инженерия данных и наука о данных………………………………………………………………………….. 37
Навыки и деятельность в области инженерии данных…………………………………………………………… 39
Зрелость данных и инженер данных…………………………………………………………………………….. 40
Этап 1. Начало работы с данными………………………………………………………………………. 41
Этап 2. Масштабирование на основе данных…………………………………………………….. 42
Этап 3. Управление на основе данных………………………………………………………………… 43
Подготовка и навыки инженера данных………………………………………………………………………. 44
Деловые обязанности…………………………………………………………………………………………………….. 45
Технические обязанности………………………………………………………………………………………………. 46
Континуум ролей инженеров данных от A до B………………………………………………………….. 49
Инженеры данных в организации…………………………………………………………………………………………….. 50
Инженеры данных, ориентированные на внутренних и внешних потребителей……… 50
Инженеры данных и другие технические специалисты……………………………………………… 51
Заинтересованные стороны выше по потоку обработки……………………………………. 52
Заинтересованные стороны ниже по потоку обработки……………………………………. 53
Инженеры данных и руководство компании……………………………………………………………….. 56
Данные в высшем руководстве……………………………………………………………………………… 56
Инженеры данных и менеджеры проектов…………………………………………………………… 58
Инженеры данных и менеджеры продуктов………………………………………………………… 59
Инженеры данных и другие руководящие должности……………………………………….. 59
Заключение………………………………………………………………………………………………………………………………… 59
Дополнительные ресурсы…………………………………………………………………………………………………………. 60
Глава 2. Жизненный цикл инженерии данных………………………………………. 62
Что такое жизненный цикл инженерии данных?…………………………………………………………………….. 62
Жизненный цикл данных в сравнении с жизненным циклом инженерии данных…….. 63
Генерация: исходные системы………………………………………………………………………………………. 64
Оценка исходных систем: ключевые технические особенности……………………….. 65
Хранение…………………………………………………………………………………………………………………………. 66
Оценка систем хранения данных: ключевые технические особенности…………… 67
О частоте доступа к данным…………………………………………………………………………………. 68
Выбор системы хранения данных………………………………………………………………………… 68
Поглощение…………………………………………………………………………………………………………………….. 69
Ключевые инженерные особенности для фазы поглощения……………………………… 69
Пакетная передача в сравнении с потоковой………………………………………………………. 70
Ключевые особенности пакетного и потокового поглощения данных…………….. 70
Модели Push и Pull………………………………………………………………………………………………….. 71
Преобразование……………………………………………………………………………………………………………… 72
Ключевые особенности этапа трансформации…………………………………………………… 72
Предоставление данных………………………………………………………………………………………………… 74
Аналитика……………………………………………………………………………………………………………….. 74
Машинное обучение………………………………………………………………………………………………. 76
Обратный ETL………………………………………………………………………………………………………… 77
Основные фоновые процессы жизненного цикла инженерии данных………………………………….. 78
Безопасность…………………………………………………………………………………………………………………… 79
Управление данными……………………………………………………………………………………………………… 80
Руководство данными……………………………………………………………………………………………. 81
Качество данных……………………………………………………………………………………………………. 86
Моделирование и проектирование данных…………………………………………………………. 87
Происхождение данных………………………………………………………………………………………… 88
Интеграция данных и совместимость…………………………………………………………………… 88
Управление жизненным циклом данных……………………………………………………………… 89
Этика и конфиденциальность……………………………………………………………………………….. 90
DataOps……………………………………………………………………………………………………………………………. 90
Автоматизация……………………………………………………………………………………………………….. 92
Наблюдаемость и мониторинг……………………………………………………………………………… 93
Реакция на инциденты……………………………………………………………………………………………. 94
Резюмируем DataOps……………………………………………………………………………………………… 95
Архитектура данных……………………………………………………………………………………………………… 95
Оркестровка…………………………………………………………………………………………………………………….. 96
Программная инженерия……………………………………………………………………………………………….. 97
Основной код обработки данных…………………………………………………………………………. 98
Разработка фреймворков с открытым исходным кодом…………………………………….. 98
Потоковая передача данных…………………………………………………………………………………. 99
Инфраструктура как код……………………………………………………………………………………….. 99
Конвейеры как код…………………………………………………………………………………………………. 99
Решение задач общего назначения…………………………………………………………………….. 100
Заключение………………………………………………………………………………………………………………………………. 100
Дополнительные ресурсы……………………………………………………………………………………………………….. 101
Глава 3. Проектирование качественной архитектуры данных…………….. 102
Что такое архитектура данных?…………………………………………………………………………………………….. 102
Определение архитектуры предприятия……………………………………………………………………. 102
Определение из TOGAF……………………………………………………………………………………….. 103
Определение от Gartner……………………………………………………………………………………….. 103
Определение из EABOK……………………………………………………………………………………….. 104
Наше определение……………………………………………………………………………………………….. 104
Определение архитектуры данных…………………………………………………………………………….. 106
Определение из TOGAF……………………………………………………………………………………….. 106
Определение из DAMA………………………………………………………………………………………… 106
Наше определение……………………………………………………………………………………………….. 106
«Качественная» архитектура данных………………………………………………………………………… 107
Принципы качественной архитектуры данных…………………………………………………………………….. 108
Принцип 1: Грамотный выбор общих компонентов………………………………………………….. 109
Принцип 2: Планирование на случай неудачи………………………………………………………….. 110
Принцип 3: Архитектура для обеспечения масштабируемости………………………………. 111
Принцип 4: Архитектура лидерства…………………………………………………………………………… 111
Принцип 5: Всегда заниматься архитектурой…………………………………………………………… 112
Принцип 6: Построение слабосвязанных систем………………………………………………………. 113
Принцип 7: Принимать обратимые решения……………………………………………………………… 114
Принцип 8: Приоритет отдается безопасности…………………………………………………………. 115
Модели безопасности с усиленным периметром и нулевым доверием…………… 115
Модель разделения ответственности…………………………………………………………………. 116
Инженеры данных как инженеры по безопасности………………………………………….. 116
Принцип 9: Освоение FinOps……………………………………………………………………………………….. 117
Основные понятия архитектуры…………………………………………………………………………………………….. 119
Домены и сервисы………………………………………………………………………………………………………… 119
Распределенные системы, масштабируемость и проектирование
с учетом отказов…………………………………………………………………………………………………………… 120
Слабая связанность в сравнении с сильной: уровни, монолиты и микросервисы….. 122
Уровни архитектуры……………………………………………………………………………………………. 122
Монолиты……………………………………………………………………………………………………………… 124
Микросервисы………………………………………………………………………………………………………. 125
Особенности архитектуры данных…………………………………………………………………….. 126
Доступ пользователей: отдельный и мультиарендный подходы…………………………….. 127
Событийно-ориентированная архитектура………………………………………………………………. 127
Сравнение проектов типа Brownfield и Greenfield……………………………………………………… 128
Проекты Brownfield………………………………………………………………………………………………. 128
Проекты Greenfield……………………………………………………………………………………………….. 129
Примеры и типы архитектуры данных………………………………………………………………………………….. 130
Хранилище данных………………………………………………………………………………………………………. 130
Облачное хранилище данных…………………………………………………………………………….. 133
Витрины данных………………………………………………………………………………………………….. 133
Озеро данных………………………………………………………………………………………………………………… 134
Совмещение, озера данных нового поколения и платформы данных…………………….. 135
Современный стек обработки данных……………………………………………………………………….. 136
Лямбда-архитектура……………………………………………………………………………………………………. 137
Каппа-архитектура………………………………………………………………………………………………………. 138
Модель потока данных и унифицированные пакетная и потоковая обработка……. 139
Архитектура для IoT……………………………………………………………………………………………………. 140
Устройства……………………………………………………………………………………………………………. 140
Взаимодействие с устройствами………………………………………………………………………… 141
Поверхностное рассмотрение IoT………………………………………………………………………. 142
Сеть данных………………………………………………………………………………………………………………….. 143
Другие примеры архитектур данных…………………………………………………………………………. 143
Кто участвует в проектировании архитектуры данных?…………………………………………………….. 144
Заключение………………………………………………………………………………………………………………………………. 145
Дополнительные ресурсы……………………………………………………………………………………………………….. 145
Глава 4. Выбор технологий в рамках жизненного цикла
инженерии данных………………………………………………………………………………. 150
Размер и возможности команды……………………………………………………………………………………………… 151
Скорость выхода на рынок…………………………………………………………………………………………………….. 152
Совместимость…………………………………………………………………………………………………………………………. 152
Оптимизация затрат и ценность для бизнеса………………………………………………………………………… 153
Совокупная стоимость владения………………………………………………………………………………… 153
Совокупные альтернативные издержки владения…………………………………………………….. 154
FinOps…………………………………………………………………………………………………………………………….. 155
Сегодняшний день и будущее: неизменяемые и временные технологии……………………………. 156
Наши рекомендации…………………………………………………………………………………………………….. 158
Местоположение……………………………………………………………………………………………………………………… 158
Локально……………………………………………………………………………………………………………………….. 159
В облаке………………………………………………………………………………………………………………………… 159
Гибридное облако………………………………………………………………………………………………………… 163
Мультиоблако………………………………………………………………………………………………………………. 164
Децентрализация: блокчейн и периферия………………………………………………………………….. 165
Наши рекомендации…………………………………………………………………………………………………….. 165
Выбирайте технологии для настоящего, но смотрите в будущее……………………. 166
Аргументы в пользу облачной репатриации……………………………………………………………… 167
Вы — не Dropbox и не Cloudflare………………………………………………………………………… 167
Создание или покупка…………………………………………………………………………………………………………….. 169
Программное обеспечение с открытым исходным кодом………………………………………… 170
OSS под управлением сообщества разработчиков…………………………………………… 171
Коммерческие OSS……………………………………………………………………………………………….. 172
Запатентованные «огороженные сады»…………………………………………………………………….. 174
Независимые предложения…………………………………………………………………………………. 174
Запатентованные сервисные предложения для облачных платформ…………….. 175
Наши рекомендации…………………………………………………………………………………………………….. 175
Монолит или модульная система…………………………………………………………………………………………… 176
Монолит………………………………………………………………………………………………………………………… 176
Модульная система……………………………………………………………………………………………………… 177
Модель распределенного монолита…………………………………………………………………………… 179
Наши рекомендации…………………………………………………………………………………………………….. 179
Серверы или бессерверные вычисления………………………………………………………………………………… 180
Бессерверный подход…………………………………………………………………………………………………… 180
Контейнеры…………………………………………………………………………………………………………………… 181
Как оценивать серверные и бессерверные решения………………………………………………….. 182
Наши рекомендации…………………………………………………………………………………………………….. 183
Оптимизация, производительность и войны бенчмарков…………………………………………………….. 184
Большие данные… для 1990-х годов…………………………………………………………………………… 185
Бессмысленные сравнения затрат………………………………………………………………………………. 185
Асимметричная оптимизация………………………………………………………………………………………. 186
Caveat Emptor, или Будьте бдительны!……………………………………………………………………… 186
Фоновые процессы и их влияние на выбор технологий……………………………………………………….. 186
Управление данными…………………………………………………………………………………………………… 186
DataOps………………………………………………………………………………………………………………………….. 187
Архитектура данных……………………………………………………………………………………………………. 187
Пример оркестровки: Airflow……………………………………………………………………………………….. 187
Программная инженерия……………………………………………………………………………………………… 188
Заключение………………………………………………………………………………………………………………………………. 189
Дополнительные ресурсы……………………………………………………………………………………………………….. 189
Часть II. Жизненный цикл инженерии данных в деталях 191
Глава 5. Генерация данных в исходных системах………………………………… 193
Источники данных: как формируются данные?……………………………………………………………………. 194
Исходные системы: основные идеи……………………………………………………………………………………….. 194
Файлы и неструктурированные данные…………………………………………………………………….. 194
API………………………………………………………………………………………………………………………………….. 195
Базы данных приложений (OLTP-системы)……………………………………………………………….. 195
ACID-транзакции…………………………………………………………………………………………………. 196
Атомарные транзакции……………………………………………………………………………………….. 196
OLTP и аналитика………………………………………………………………………………………………… 197
Системы интерактивной аналитической обработки…………………………………………………. 197
Захват изменения данных……………………………………………………………………………………………. 198
Журналы……………………………………………………………………………………………………………………….. 198
Кодирование журнала…………………………………………………………………………………………. 199
Разрешение журнала……………………………………………………………………………………………. 199
Задержка записи в журнал: пакетный режим
или режим реального времени…………………………………………………………………………….. 199
Журналы базы данных………………………………………………………………………………………………… 199
CRUD……………………………………………………………………………………………………………………………… 200
Только вставка……………………………………………………………………………………………………………… 201
Сообщения и потоки…………………………………………………………………………………………………….. 201
Типы времени………………………………………………………………………………………………………………… 203
Исходные системы: практические сведения………………………………………………………………………….. 203
Базы данных…………………………………………………………………………………………………………………. 204
Основные соображения для понимания технологий баз данных……………………. 204
Реляционные базы данных………………………………………………………………………………….. 205
Нереляционные базы данных: NoSQL……………………………………………………………….. 206
API………………………………………………………………………………………………………………………………….. 213
REST………………………………………………………………………………………………………………………. 213
GraphQL………………………………………………………………………………………………………………… 214
Веб-хуки………………………………………………………………………………………………………………… 214
RPC и gRPC…………………………………………………………………………………………………………… 215
Совместное использование данных……………………………………………………………………………. 215
Сторонние источники данных…………………………………………………………………………………….. 216
Очереди сообщений и платформы потоковой передачи событий…………………………… 217
Очереди сообщений……………………………………………………………………………………………… 217
Платформы потоковой передачи событий………………………………………………………… 219
С кем вам предстоит работать……………………………………………………………………………………………….. 221
Фоновые процессы и их влияние на исходные системы………………………………………………………. 222
Безопасность…………………………………………………………………………………………………………………. 223
Управление данными…………………………………………………………………………………………………… 223
DataOps………………………………………………………………………………………………………………………….. 224
Архитектура данных……………………………………………………………………………………………………. 225
Оркестровка………………………………………………………………………………………………………………….. 226
Программная инженерия……………………………………………………………………………………………… 226
Заключение………………………………………………………………………………………………………………………………. 227
Дополнительные ресурсы……………………………………………………………………………………………………….. 227
Глава 6. Хранение………………………………………………………………………………… 229
Базовые компоненты для хранения данных………………………………………………………………………….. 231
Накопитель на жестких магнитных дисках (HDD)……………………………………………………. 231
Твердотельный накопитель…………………………………………………………………………………………. 233
Оперативная память и оперативное запоминающее устройство (ОЗУ)………………….. 234
Сети и центральный процессор…………………………………………………………………………………… 235
Сериализация……………………………………………………………………………………………………………….. 236
Сжатие…………………………………………………………………………………………………………………………… 237
Кеширование………………………………………………………………………………………………………………… 237
Системы хранения данных……………………………………………………………………………………………………… 238
Хранилище на одной машине в сравнении с распределенным хранилищем…………. 238
Согласованность в конечном счете в сравнении с сильной согласованностью…….. 239
Файловое хранилище…………………………………………………………………………………………………… 240
Локальное дисковое хранилище…………………………………………………………………………. 241
Сетевое хранилище……………………………………………………………………………………………… 242
Сервисы облачных файловых систем………………………………………………………………… 242
Блочное хранилище……………………………………………………………………………………………………… 243
Приложения блочного хранения данных…………………………………………………………… 243
RAID………………………………………………………………………………………………………………………. 243
Сеть хранения данных…………………………………………………………………………………………. 244
Облачное виртуализированное блочное хранилище……………………………………….. 244
Локальные экземпляры томов…………………………………………………………………………….. 245
Объектное хранилище………………………………………………………………………………………………….. 246
Объектные хранилища для приложений инженерии данных………………………….. 248
Поиск объектов…………………………………………………………………………………………………….. 249
Согласованность и версии объектов………………………………………………………………….. 250
Классы и уровни хранения данных……………………………………………………………………. 251
Файловые системы с хранилищем объектов……………………………………………………… 252
Системы хранения данных на основе памяти и кеша……………………………………………….. 253
Пример: Memcached и легкое кеширование объектов……………………………………… 253
Пример: Redis, кеширование памяти с дополнительной персистентностью….. 253
Распределенная файловая система Hadoop (HDFS)…………………………………………………. 253
Hadoop мертв. Да здравствует Hadoop!…………………………………………………………….. 254
Потоковое хранилище………………………………………………………………………………………………….. 254
Индексы, разбиение и кластеризация…………………………………………………………………………. 255
Эволюция от строк к столбцам…………………………………………………………………………… 255
От индексов к разделам и кластеризации………………………………………………………….. 256
Пример: Микроразбиение Snowflake…………………………………………………………………. 256
Абстракции хранения в инженерии данных………………………………………………………………………….. 257
Хранилище данных………………………………………………………………………………………………………. 258
Озеро данных………………………………………………………………………………………………………………… 258
Хранилище Data Lakehouse………………………………………………………………………………………… 259
Платформы данных……………………………………………………………………………………………………… 259
Архитектура потоково-пакетного хранения данных………………………………………………… 260
Выдающиеся идеи и тенденции в области хранения данных……………………………………………… 260
Каталог данных……………………………………………………………………………………………………………. 261
Интеграция приложения и каталога…………………………………………………………………… 261
Автоматизированное сканирование…………………………………………………………………… 261
Портал данных и социальный уровень……………………………………………………………… 261
Варианты использования каталога данных……………………………………………………… 261
Совместное использование данных……………………………………………………………………………. 262
Схема…………………………………………………………………………………………………………………………….. 262
Разделение вычислений и хранения……………………………………………………………………………. 263
Колокация вычислительных систем и хранения данных…………………………………. 263
Разделение вычислений и хранения данных……………………………………………………… 263
Гибридный подход к разделению и колокации…………………………………………………. 264
Клонирование с нулевым копированием…………………………………………………………… 266
Жизненный цикл хранения данных и их сохранность……………………………………………… 267
Горячие, теплые и холодные данные…………………………………………………………………. 267
Сохранность данных…………………………………………………………………………………………… 269
Одноарендные и мультиарендные системы хранения данных………………………………… 270
С кем вам предстоит работать……………………………………………………………………………………………….. 272
Фоновые процессы…………………………………………………………………………………………………………………… 272
Безопасность…………………………………………………………………………………………………………………. 272
Управление данными…………………………………………………………………………………………………… 273
Каталоги данных и управление метаданными…………………………………………………. 273
Версии данных в объектном хранилище……………………………………………………………. 273
Конфиденциальность…………………………………………………………………………………………… 273
DataOps………………………………………………………………………………………………………………………….. 274
Мониторинг систем……………………………………………………………………………………………… 274
Наблюдаемость и мониторинг данных……………………………………………………………… 274
Архитектура данных……………………………………………………………………………………………………. 274
Оркестровка………………………………………………………………………………………………………………….. 275
Программная инженерия……………………………………………………………………………………………… 275
Заключение………………………………………………………………………………………………………………………………. 275
Дополнительные ресурсы……………………………………………………………………………………………………….. 275
Глава 7. Поглощение данных………………………………………………………………. 277
Что такое поглощение данных?……………………………………………………………………………………………… 277
Ключевые инженерные особенности фазы поглощения………………………………………………………. 279
Ограниченность и неограниченность данных…………………………………………………………… 279
Частота………………………………………………………………………………………………………………………….. 280
Синхронное и асинхронное поглощение……………………………………………………………………. 282
Сериализация и десериализация………………………………………………………………………………… 283
Пропускная способность и масштабируемость………………………………………………………… 283
Надежность и устойчивость………………………………………………………………………………………… 284
Полезная нагрузка………………………………………………………………………………………………………… 285
Род…………………………………………………………………………………………………………………………. 285
Форма……………………………………………………………………………………………………………………. 285
Размер……………………………………………………………………………………………………………………. 286
Схема и типы данных………………………………………………………………………………………….. 286
Метаданные………………………………………………………………………………………………………….. 287
Модели Push, Pull и Poll………………………………………………………………………………………………… 288
Особенности пакетного поглощения данных……………………………………………………………………….. 289
Мгновенные снимки или дифференциальное извлечение…………………………………………. 290
Экспорт и поглощение данных на основе файлов…………………………………………………….. 290
ETL в сравнении с ELT…………………………………………………………………………………………………. 290
Вставки, обновления и размер пакета………………………………………………………………………… 291
Миграция данных…………………………………………………………………………………………………………. 291
Особенности поглощения сообщений и потоков………………………………………………………………….. 292
Эволюция схем……………………………………………………………………………………………………………… 292
Данные, поступающие с задержкой……………………………………………………………………………. 292
Порядок и многократная доставка……………………………………………………………………………… 293
Воспроизведение………………………………………………………………………………………………………….. 293
Время жизни………………………………………………………………………………………………………………….. 293
Размер сообщения………………………………………………………………………………………………………… 294
Обработка ошибок и очереди недоставленных сообщений…………………………………….. 294
Pull и Push для потребителей……………………………………………………………………………………….. 294
Местоположение………………………………………………………………………………………………………….. 295
Способы поглощения данных………………………………………………………………………………………………… 295
Прямое подключение к базе данных…………………………………………………………………………… 295
Захват изменения данных……………………………………………………………………………………………. 297
Пакетно-ориентированный CDC………………………………………………………………………… 297
Непрерывный CDC………………………………………………………………………………………………. 297
CDC и репликация баз данных……………………………………………………………………………. 298
Особенности CDC………………………………………………………………………………………………… 298
API………………………………………………………………………………………………………………………………….. 299
Очереди сообщений и платформы потоковой передачи событий…………………………… 300
Управляемые коннекторы данных……………………………………………………………………………… 301
Перемещение данных с помощью объектного хранилища………………………………………. 302
EDI…………………………………………………………………………………………………………………………………. 302
Базы данных и экспорт файлов…………………………………………………………………………………… 302
Практические вопросы, связанные с распространенными форматами файлов……… 303
Оболочка……………………………………………………………………………………………………………………….. 304
SSH…………………………………………………………………………………………………………………………………. 304
SFTP и SCP…………………………………………………………………………………………………………………….. 305
Веб-хуки………………………………………………………………………………………………………………………… 305
Веб-интерфейс………………………………………………………………………………………………………………. 306
Веб-скрейпинг……………………………………………………………………………………………………………….. 306
Устройства переноса для миграции данных……………………………………………………………… 307
Совместное использование данных……………………………………………………………………………. 308
С кем вам предстоит работать……………………………………………………………………………………………….. 308
Заинтересованные стороны выше по потоку обработки………………………………………….. 308
Заинтересованные стороны ниже по потоку обработки………………………………………….. 309
Фоновые процессы…………………………………………………………………………………………………………………… 309
Безопасность…………………………………………………………………………………………………………………. 310
Управление данными…………………………………………………………………………………………………… 310
Изменения схемы………………………………………………………………………………………………….. 310
Этика работы с данными, конфиденциальность и соответствие
нормативным требованиям…………………………………………………………………………………. 311
DataOps………………………………………………………………………………………………………………………….. 312
Проверка качества данных…………………………………………………………………………………. 313
Оркестровка………………………………………………………………………………………………………………….. 314
Программная инженерия……………………………………………………………………………………………… 315
Заключение………………………………………………………………………………………………………………………………. 315
Дополнительные ресурсы……………………………………………………………………………………………………….. 316
Глава 8. Запросы, моделирование и преобразование……………………………. 317
Запросы…………………………………………………………………………………………………………………………………….. 318
Что такое запрос?…………………………………………………………………………………………………………. 318
DDL. Язык описания данных………………………………………………………………………………. 319
DML. Язык манипулирования данными…………………………………………………………….. 319
DCL. Язык управления данными………………………………………………………………………… 319
TCL. Язык управления транзакциями………………………………………………………………… 320
Жизненный цикл запроса…………………………………………………………………………………………….. 320
Оптимизатор запросов…………………………………………………………………………………………………. 321
Повышение производительности запросов………………………………………………………………… 321
Оптимизируйте стратегию и схему соединения………………………………………………… 321
Планируйте выполнение и разберитесь в производительности запроса………… 323
Избегайте полного сканирования таблиц………………………………………………………….. 323
Изучите, как ваша база данных обрабатывает фиксации……………………………….. 324
Очистите базу данных от «мертвых» записей…………………………………………………… 326
Кешируйте результаты запросов……………………………………………………………………….. 327
Запросы к потоковым данным…………………………………………………………………………………….. 327
Основные шаблоны запросов к потокам……………………………………………………………. 328
Окна, триггеры, выдаваемая статистика и данные,
поступающие с задержкой………………………………………………………………………………….. 329
Объединение потоков с другими данными………………………………………………………… 332
Моделирование данных………………………………………………………………………………………………………….. 334
Что такое модель данных?…………………………………………………………………………………………… 335
Концептуальная, логическая и физическая модели данных…………………………………….. 336
Нормализация………………………………………………………………………………………………………………. 337
Методы моделирования пакетных аналитических данных…………………………………….. 341
Подход Инмона…………………………………………………………………………………………………….. 341
Подход Кимбалла………………………………………………………………………………………………… 344
Модель Data Vault……………………………………………………………………………………………….. 348
Широкие денормализованные таблицы…………………………………………………………….. 352
Моделирование потоковых данных…………………………………………………………………………… 354
Преобразования……………………………………………………………………………………………………………………….. 356
Пакетные преобразования…………………………………………………………………………………………… 357
Распределенные соединения……………………………………………………………………………….. 357
ETL, ELT и конвейеры обработки данных…………………………………………………………. 359
Средства преобразования на основе SQL и кода……………………………………………… 360
Шаблоны обновлений………………………………………………………………………………………….. 363
Изменения схемы………………………………………………………………………………………………….. 366
Выпас данных………………………………………………………………………………………………………. 367
Пример: Преобразование данных в Spark…………………………………………………………. 368
Бизнес-логика и производные данные……………………………………………………………….. 368
Модель MapReduce……………………………………………………………………………………………… 370
После MapReduce………………………………………………………………………………………………… 371
Материализованные представления, федерация и виртуализация запросов…………. 372
Представления……………………………………………………………………………………………………… 372
Материализованные представления………………………………………………………………….. 372
Составные материализованные представления……………………………………………….. 373
Федеративные запросы……………………………………………………………………………………….. 373
Виртуализация данных……………………………………………………………………………………….. 374
Потоковые преобразования и обработка…………………………………………………………………… 375
Основы…………………………………………………………………………………………………………………… 375
Преобразования и запросы представляют собой континуум………………………….. 376
Потоковые DAG……………………………………………………………………………………………………. 376
Микропакетный и истинно потоковый подходы………………………………………………. 377
С кем вам предстоит работать……………………………………………………………………………………………….. 378
Заинтересованные стороны выше по потоку обработки………………………………………….. 378
Заинтересованные стороны ниже по потоку обработки………………………………………….. 379
Фоновые процессы…………………………………………………………………………………………………………………… 379
Безопасность…………………………………………………………………………………………………………………. 379
Управление данными…………………………………………………………………………………………………… 380
DataOps………………………………………………………………………………………………………………………….. 381
Архитектура данных……………………………………………………………………………………………………. 381
Оркестровка………………………………………………………………………………………………………………….. 382
Программная инженерия……………………………………………………………………………………………… 382
Заключение………………………………………………………………………………………………………………………………. 383
Дополнительные ресурсы……………………………………………………………………………………………………….. 384
Глава 9. Предоставление данных для аналитики, машинного обучения и обратного ETL 386
Общие рекомендации по предоставлению данных………………………………………………………………. 387
Доверие………………………………………………………………………………………………………………………….. 387
Каков сценарий использования и кто будет пользователем?…………………………………… 388
Информационные продукты………………………………………………………………………………………… 389
Самостоятельная работа или нет?……………………………………………………………………………… 390
Описание данных и логика………………………………………………………………………………………….. 392
Сеть данных………………………………………………………………………………………………………………….. 393
Аналитика………………………………………………………………………………………………………………………………… 393
Бизнес-аналитика…………………………………………………………………………………………………………. 394
Операционная аналитика……………………………………………………………………………………………. 396
Встроенная аналитика…………………………………………………………………………………………………. 398
Машинное обучение……………………………………………………………………………………………………………….. 399
Что должен знать инженер данных о машинном обучении…………………………………………………. 400
Способы предоставления данных для аналитики и машинного обучения………………………… 401
Обмен файлами…………………………………………………………………………………………………………….. 402
Базы данных…………………………………………………………………………………………………………………. 403
Потоковые системы………………………………………………………………………………………………………. 404
Федеративные запросы………………………………………………………………………………………………… 404
Совместное использование данных……………………………………………………………………………. 405
Семантические и метрические слои……………………………………………………………………………. 406
Предоставление данных в блокнотах………………………………………………………………………… 407
Обратный ETL………………………………………………………………………………………………………………………….. 409
С кем вам предстоит работать……………………………………………………………………………………………….. 411
Фоновые процессы…………………………………………………………………………………………………………………… 412
Безопасность…………………………………………………………………………………………………………………. 412
Управление данными…………………………………………………………………………………………………… 413
DataOps………………………………………………………………………………………………………………………….. 414
Архитектура данных……………………………………………………………………………………………………. 415
Оркестровка………………………………………………………………………………………………………………….. 415
Программная инженерия……………………………………………………………………………………………… 416
Заключение………………………………………………………………………………………………………………………………. 416
Дополнительные ресурсы……………………………………………………………………………………………………….. 417
Часть III. Безопасность, конфиденциальность
и будущее инженерии данных……………………………………………….. 419
Глава 10. Безопасность и конфиденциальность……………………………………. 421
Люди…………………………………………………………………………………………………………………………………………. 422
Сила негативного мышления………………………………………………………………………………………. 422
Всегда будьте параноиками………………………………………………………………………………………… 423
Процессы………………………………………………………………………………………………………………………………….. 423
Театр безопасности или привычки соблюдения безопасности……………………………….. 423
Активная безопасность………………………………………………………………………………………………… 424
Принцип наименьших привилегий………………………………………………………………………………. 424
Разделение ответственности в облаке………………………………………………………………………… 425
Всегда создавайте резервные копии данных…………………………………………………………….. 425
Пример политики безопасности………………………………………………………………………………….. 425
Технологии……………………………………………………………………………………………………………………………….. 427
Системы исправлений и обновлений………………………………………………………………………….. 427
Шифрование………………………………………………………………………………………………………………….. 427
Шифрование в состоянии покоя………………………………………………………………………….. 427
Шифрование при передаче по сети…………………………………………………………………….. 427
Ведение журнала, мониторинг и оповещение……………………………………………………………. 428
Доступ к сети………………………………………………………………………………………………………………… 429
Безопасность при низкоуровневой инженерии данных……………………………………………. 430
Исследование вопросов внутренней безопасности…………………………………………… 430
Заключение………………………………………………………………………………………………………………………………. 431
Дополнительные ресурсы……………………………………………………………………………………………………….. 431
Глава 11. Будущее инженерии данных…………………………………………………. 432
Жизненный цикл инженерии данных никуда не денется……………………………………………………… 432
Снижение сложности и подъем простых в использовании инструментов обработки данных 433
Облачная ОС данных и улучшение взаимодействия……………………………………………………………. 434
«Корпоративная» инженерия данных……………………………………………………………………………………. 436
Названия и обязанности будут меняться………………………………………………………………………………. 437
Переход от современного стека данных к потоковому………………………………………………………… 438
Потоковый стек данных……………………………………………………………………………………………….. 439
Потоковые конвейеры и аналитические базы данных реального времени…………….. 439
Объединение данных и приложений…………………………………………………………………………… 441
Сильная обратная связь между приложениями и машинным обучением……………….. 441
Темная материя в сфере данных и восход… электронных таблиц?!………………………… 442
Заключение………………………………………………………………………………………………………………………………. 442
Приложение А. Технические детали сериализации и сжатия……………….. 444
Форматы сериализации…………………………………………………………………………………………………………… 444
Сериализация на основе строк……………………………………………………………………………………. 444
CSV: Нестандартный стандарт………………………………………………………………………….. 444
XML……………………………………………………………………………………………………………………….. 445
JSON и JSONL……………………………………………………………………………………………………….. 445
Avro……………………………………………………………………………………………………………………….. 445
Сериализация столбцов……………………………………………………………………………………………….. 445
Parquet…………………………………………………………………………………………………………………… 446
ORC……………………………………………………………………………………………………………………….. 447
Apache Arrow или сериализация в памяти…………………………………………………………. 447
Гибридная сериализация…………………………………………………………………………………………….. 448
Hudi……………………………………………………………………………………………………………………….. 448
Iceberg……………………………………………………………………………………………………………………. 449
Подсистема хранения базы данных………………………………………………………………………………………. 449
Сжатие: gzip, bzip2, Snappy и т. д…………………………………………………………………………………………… 449
Приложение Б. Облачные сети…………………………………………………………….. 451
Топология облачных сетей…………………………………………………………………………………………………….. 451
Плата за извлечение данных……………………………………………………………………………………….. 451
Зоны доступности………………………………………………………………………………………………………… 451
Регионы………………………………………………………………………………………………………………………….. 452
Специфические для GCP сети и мультирегиональное резервирование…………………… 453
Прямые сетевые подключения к облачным сервисам……………………………………………….. 454
CDN…………………………………………………………………………………………………………………………………………… 454
Будущее платы за извлечение данных………………………………………………………………………………….. 454
Предметный указатель…………………………………………………………………………. 456
Об авторах……………………………………………………………………………………………. 462
Об изображении на обложке………………………………………………………………… 463

Джо Рис (Joe Reis) — специалист по инженерии и архитектуре данных для enterprise-задач

Мэтт Хоусли (Matt Housley) — консультант по инженерии данных и облачным технологиям
