Джо Рис | Мэтт Хоусли

Основы инженерии данных

Планирование и построение надёжных систем данных


(Fundamentals of Data Engineering)

Предисловие
Как появилась эта книга? Её происхождение уходит корнями в наше путешествие из науки о данных в инженерию данных. Мы часто в шутку называем себя выздоравливающими учёными по данным. Мы оба имели опыт работы над проектами по обработке и анализу данных, которые с трудом выполняли из-за отсутствия надлежащих основ. Наш путь в инженерию данных начался с того, что мы взялись за решение задач по созданию основы и инфраструктуры.


С развитием науки о данных компании стали активно тратиться на таланты в этой области, надеясь получить щедрые плоды. Очень часто учёные по данным сталкивались с базовыми проблемами, которые не затрагивали во время предыдущего опыта и подготовки: сбор, очистка, доступ к данным, преобразование и инфраструктура данных. Именно эти проблемы инженерия данных призвана решить.
Чего не будет в книге
Прежде чем мы расскажем, о чём эта книга и что вы из неё извлечёте, давайте кратко о том, чего в ней не будет. Эта книга не об инженерии данных с использованием какого-то конкретного инструмента, технологии или платформы. Хотя многие замечательные книги рассматривают технологии инженерии данных с этой точки зрения, они имеют короткий «срок годности». Вместо этого мы сосредоточимся на фундаментальных концепциях, лежащих в основе инженерии данных.
О чём эта книга
Эта книга призвана заполнить пробел в современном контенте и материалах по инженерии данных.

Хотя нет недостатка в технических ресурсах, посвященных конкретным инструментам и технологиям инженерии данных, людям трудно понять, как собрать эти компоненты в единое целое, применимое в реальном мире. Эта книга соединяет точки сквозного жизненного цикла данных. Она покажет вам, как объединить различные технологии, чтобы удовлетворить потребности последующих потребителей данных, таких как аналитики, специалисты по изучению данных и инженеры машинного обучения. Эта книга служит дополнением к книгам О’Райли, в которых подробно рассматриваются конкретные технологии, платформы и языки программирования.

В основе книги лежит жизненный цикл инженерии данных: создание, хранение, ввод, преобразование и предоставление данных. С момента появления данных мы видели взлёт и падение бесчисленного количества конкретных технологий и поставщиков продуктов, но этапы жизненного цикла инженерии данных оставались практически неизменными. Используя эту схему, читатель получит глубокое понимание того, как применять технологии для решения реальных бизнес-задач.

Наша цель — наметить принципы в двух направлениях. Во-первых, мы хотим свести инженерию данных к принципам, которые смогут охватить любую релевантную технологию. Во-вторых, мы хотим сформулировать принципы, которые выдержат испытание временем. Мы надеемся, что эти идеи отражают уроки, извлечённые из потрясений в области технологий данных за последние двадцать лет, и что наша ментальная структура останется полезной в течение не одного десятилетия.

Отметим ещё один момент: мы безоговорочно придерживаемся подхода «облако — в первую очередь» (cloud-first). Мы рассматриваем облачные технологии как фундаментально преобразующее улучшение, которое выдержит несколько десятков лет, и считаем, что большинство локальных систем данных и рабочих нагрузок со временем перейдут на облачный хостинг. Мы исходим из того, что инфраструктура и системы эфемерны и масштабируемы, и что инженеры по обработке данных будут склоняться к развёртыванию управляемых сервисов в облаке. При этом большинство концепций, изложенных в этой книге, применимы и к необлачным средам.
Кому полезно прочитать эту книгу
Наша основная целевая аудитория — технические специалисты-практики, инженеры-программисты среднего и высшего звена, специалисты по обработке данных или аналитики, заинтересованные в переходе на новые технологии; или инженеры данных, работающие с конкретными технологиями, но желающие получить более полное представление о них. Наша вторичная целевая аудитория состоит из стейкхолдеров, которые работают с техническими специалистами-практиками — например, руководитель с техническим образованием, контролирующий работу группы инженеров по данным, или директор по хранению данных, желающий перейти от локальной технологий на облачные решения.

В идеале вы любопытны и хотите учиться — иначе зачем бы вы читали эту книгу? Вы следите за технологиями и тенденциям, читая книги и статьи по хранению и озёрам данных, пакетным и потоковым системам, оркестрации, моделированию, управлению, анализу, развитию облачных технологий и т. д. Эта книга поможет сложить все прочитанное в целостную картину проектирования данных для различных технологий и парадигм.
Необходимая база
Мы предполагаем, что вы хорошо знакомы с типами систем данных, встречающихся в корпоративной среде. Кроме того, мы считаем, что читатели имеют некоторое представление о SQL и Python (или другом языке программирования), а также опыт работы с облачными сервисами.

Начинающим инженерам по обработке данных доступны многочисленные ресурсы для практического освоения Python и SQL. Бесплатных онлайн-ресурсов очень много (записи в блогах, обучающие сайты, видео на YouTube), а также каждый год выходит множество новых книг по Python.

Облако предоставляет беспрецедентные возможности для получения практического опыта работы с инструментами обработки данных. Мы советуем начинающим инженерам по данным завести аккаунты в облачных сервисах таких как AWS, Azure, Google Cloud Platform, Snowflake, Databricks и др. Обратите внимание, что многие из этих платформ имеют бесплатные уровни, но читателям следует внимательно следить за расходами и работать с небольшими объёмами данных и одноузловыми кластерами в процессе обучения.

Знакомство с корпоративными системами данных вне корпоративной среды по-прежнему затруднено, и это создаёт определённые барьеры для начинающих инженеров по данным, которым ещё предстоит получить свою первую работу. Эта книга может помочь. Мы предлагаем новичкам в области данных прочитать её для ознакомления с основными идеями, а затем изучить материалы в разделе «Дополнительные ресурсы» в конце каждой главы. При повторном прочтении обратите внимание на все незнакомые термины и технологии. Вы можете использовать Google, Википедию, записи в блогах, видеоролики на YouTube и сайты поставщиков, чтобы познакомиться с новыми терминами и заполнить пробелы в понимании.
Что вы узнаете и как это улучшит ваши способности
Цель этой книги — помочь вам заложить прочный фундамент для решения реальных задач инженерии данных.

К её концу вы поймёте:
  • Как инженерия данных влияет на вашу текущую роль (специалист по исследованию данных, инженер-программист или руководитель отдела данных);
  • Как пробиться сквозь маркетинговую шумиху и выбрать правильные технологии, архитектуру данных и процессы;
  • Как использовать жизненный цикл инженерии данных для проектирования и создания надежной архитектуры;
  • Лучшие практики для каждого этапа жизненного цикла данных.
И вы сможете:
  • Применять принципы инженерии данных в своей текущей роли (специалист по изучению данных, аналитик, инженер-программист, руководитель отдела данных и т. д.);
  • Объединять различные облачные технологии для удовлетворения потребностей последующих потребителей данных;
  • Оценивать проблемы инженерии данных с помощью сквозной системы лучших практик;
  • Внедрять управление данными и безопасность в жизненный цикл инжиниринга данных.
Навигация по книге
Эта книга состоит из четырёх частей:
  • Часть I, «Основа и структурные элементы»
  • Часть II, «Жизненный цикл инженерии данных в деталях»
  • Часть III, «Безопасность, конфиденциальность и будущее инженерии данных»
  • Приложения A и B посвящены сериализации и сжатию данных, а также облачным сетям.
В первой части мы начнём с определения понятия «инженерия данных» в главе 1, затем опишем жизненный цикл инженерии данных в главе 2. В главе 3 мы обсудим, какой должна быть хорошая архитектура. В главе 4 рассмотрим схему выбора правильной технологии — хотя мы часто видим, что технологии и архитектура смешиваются, на самом деле это совершенно разные темы.

Часть II опирается на главу 2 и подробно рассматривает жизненный цикл инженерии данных; каждому этапу жизненного цикла — созданию, хранению, получению, преобразованию и обслуживанию данных — посвящена отдельная глава. Часть II — это, пожалуй, сердце книги, а остальные главы существуют для поддержки основных идей, изложенных в этой части.

В части III рассматриваются дополнительные темы. В главе 10 мы обсуждаем вопросы безопасности и конфиденциальности. Хотя безопасность всегда была важной частью профессии инженера данных, она приобрела критическое значение с ростом числа хакерских атак с целью получения прибыли и кибератак, спонсируемых государством. А что можно сказать о конфиденциальности? Эпоха корпоративного нигилизма в вопросах конфиденциальности закончилась — ни одна компания не хочет видеть своё название в заголовке статьи о несоблюдении политики конфиденциальности. Небрежное обращение с персональными данными также может иметь существенные юридические последствия с появлением GDPR, CCPA и других нормативных актов. Иными словами, безопасность и конфиденциальность должны быть главными приоритетами в любой работе с данными.

В процессе работы в области инженерии данных, проведения исследований для этой книги и интервью с многочисленными экспертами, мы много размышляли о том, куда движется эта область в ближайшей и долгосрочной перспективе. В главе 11 изложены наши умозрительные представления о будущем инженерии данных. По своей природе будущее — вещь скользкая. Время покажет, насколько верны некоторые из наших идей. Мы будем рады услышать от наших читателей, насколько их видение будущего совпадает или отличается от нашего.

В приложениях мы рассмотрим несколько технических тем, которые чрезвычайно важны для повседневной практики инженерии данных, но не вошли в основную часть текста. В частности, инженерам необходимо понимать, что такое сериализация и сжатие (см. Приложение A), как для непосредственной работы с файлами, так и для оценки производительности в системах данных, а также облачные сети (см. Приложение B) — важнейшую тему в процессе перехода инженерии данных в облако.
Условные обозначения
В этой книге используются следующие условные обозначения:

Курсив
  • Указывает на новые термины, URL-адреса, адреса электронной почты, имена файлов и расширения файлов.
Моноширинный шрифт
  • Используется для перечисления программ, а также внутри абзацев для обозначения таких элементов программы, как имена переменных или функций, баз данных, типов данных, переменных среды, операторов и ключевых слов.
  • Этот элемент обозначает подсказку или совет.
  • Этот элемент обозначает общее примечание.
  • Этот элемент указывает на предупреждение или предостережение.
Как с нами связаться
Пожалуйста, направляйте комментарии и вопросы, касающиеся этой книги, издателю:
O'Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
800-998-9938 (в США или Канаде)
707-829-0515 (международный или местный)
707-829-0104 (факс)

У нас есть веб-страница для этой книги, где мы размещаем исправления, примеры и любую дополнительную информацию. Вы можете получить доступ к этой странице по адресу https://oreil.ly/fundamentals-of-data

Пишите по электронной почте bookquestions@oreilly.com, чтобы оставить комментарий или задать технические вопросы по этой книге.

Для получения новостей и информации о наших книгах и курсах посетите сайт https://oreilly.com

Найдите нас в LinkedIn: https://linkedin.com/company/oreilly-media
Следите за нами в Twitter: https://twitter.com/oreillymedia
Смотрите нас на YouTube: https://www.youtube.com/oreillymedia
Благодарности
Когда мы начали писать эту книгу, многие предупреждали, что перед нами стоит непростая задача. У такой книги много изменяющихся частей, и из-за всеобъемлющего взгляда на область инженерии данных она потребовала тонны исследований, интервью, обсуждений и глубоких размышлений. Мы не будем утверждать, что нам удалось охватить все нюансы инженерии данных, но надеемся, что результаты найдут отклик у вас. Множество людей внесли свой вклад, и мы благодарны за поддержку, которую мы получили от многих экспертов.

Во-первых, спасибо нашей замечательной команде технических рецензентов. Они выдержали множество вычиток и дали бесценные (и часто безжалостно жесткие) отзывы. Эта книга без их усилий была бы лишь малой частью той, что вы читаете сейчас. Без особого порядка мы выражаем бесконечную признательность Биллу Инмону, Энди Петреллу, Мэтту Шарпу, Тоду Хансману, Крису Таббу, Дэнни Лебзиону, Мартину Клеппману, Скотту Лоримору, Нику Шроку, Лизе Штекман, Веронике Дургин и Алексу Вулфорду.

Во-вторых, у нас была уникальная возможность пообщаться с ведущими экспертами в области данных в наших прямых эфирах, подкастах, встречах и бесконечных личных звонках. Их идеи помогли сформировать эту книгу. Слишком много людей, чтобы называть их по отдельности, но мы хотели бы мы хотели бы поблагодарить Джордана Тигани, Жамака Дехгани, Ананта Паккилдурая, Шрути Бхат, Эрика Тшеттера, Бенна Стэнсила, Кевина Ху, Михаила Рогова, Райана Райта, Ади Полака, Синдзи Кима, Андреаса Кретца, Егора Грязнова, Чада Сандерсона, Джули Прайс, Мэтта Тёрка, Монику Рогати, Марса Лэна, Пардху Ганнама, Брайана Сука, Барра Мозеса, Лиор Гавиша, Бруно Азиза, Джана Мерлино, ДеВариса Брауна, Тодда Бошена, Тудора Гирбу, Скотта Тейлора, Ори Рафаэля, Ли Эдвардса, Брайана Оффатта, Олли Хьюза, Гилберта Эйкелена-Бума, Криса Берга, Фабиана Клементе, Андреаса Кретца, Ори Решефа, Ника Сингха, Марка Балкененде, Кентена Данаса, Брайана Ольсена, Лиора Гавиша, Рагху Мурти, Грега Кокильо, Дэвида Апонте, Деметриоса Бринкманна, Сару Катанзаро, Мишель Трико, Леви Дэвиса, Теда Уокера, Карлоса Кемени, Джоша Бенамрама, Чанина Нантасенамата, Джорджа Фирикана, Джордана Голдмейра, Минхаджа Рехмама, Луиджи Патруно, Вина Вашисту, Дэнни Ма, Джесси Андерсона, Алессия Виснича, Вишала Сингха, Дэйва Лангера, Роя Хассона, Тодда Одесса, Че Шарма, Скотта Брайтенотера, Бена Тейлора, Тома Айвза, Джона Томпсона, Брента Дайкса, Джоша Тобина, Марка Косибу, Тайлера Пуглизе, Дуве Маана, Мартина Траверсо, Кертиса Ковальски, Боба Дэвиса, Ку Пинг Шунга, Эда Ченарда, Мэтта Шиорму, Тайлера Фолкмана, Джеффа Бэрда, Теджаса Манохара, Пола Сингмана, Кевина Штумпфа, Виллема Пинеара и Майка Дель Бальсо из компании Tecton, Эмму Даль, Харприта Сахоту, Кена Джи, Скотта Тейлора, Кейт Страчный, Кристен Керер, Тейлора Миллера, Эйба Гонга, Бена Каслтона, Бена Рогояна, Дэвида Мерца, Эммануэля Раджа, Эндрю Джонса, Эйвери Смита, Брока Купера, Джеффа Ларсона, Джона Кинга, Холдена Акермана, Мэрайю Петерсон, Фелипе Хоффа, Дэвида Гонсалеса, Ричарда Веллмана, Сьюзен Уолш, Равита Джайна, Лорена Балика, Микико Бейзли, Марка Фримана, Майка Уиммера, Алексея Щедрина, Мэри Клэр Томпсон, Джули Барроуз, Джейсона Педли, Фредди Дреннана, Джейсона Педли, Келли и Мэтта Филлиппс, Брайана Кэмпбелла, Фариса Чебиба, Дилана Грегерсона, Кена Майерса, Джейка Картера, Сета Пола, Итана Аарона и многих других.

Если вас не упомянули, не принимайте это близко к сердцу. Вы знаете, кто вы. Дайте нам знать, и мы включим вас в следующий выпуск.

Мы также хотели бы поблагодарить команду Ternary Data (Коллина МакОли, Майка Уэллса, Патрика Даля, Патрика Уэллса, Аарона Хансакера и других), наших студентов и бесчисленное количество людей по всему миру, которые поддерживали нас. Это отличное напоминание о том, что мир очень тесен.

Работать с командой О’Райли было потрясающе! Отдельное спасибо Джесс Хаберман за доверие к нам во время процесса подготовки книжного предложения, нашим замечательным и чрезвычайно терпеливым редакторам Николь Таше и Мишель Кронин за бесценное редактирование, отзывы и поддержку. Спасибо также превосходной команде издательства О’Райли (Грегу и команде).

Джо хотел бы поблагодарить свою семью — Кэсси, Майло и Итана — за то, что они позволили ему написать книгу. Им пришлось многое пережить, и Джо обещает больше никогда не писать книг. ;)

Мэтт хотел бы поблагодарить своих друзей и семью за их неизменное терпение и поддержку. Он все ещё надеется, что Сенека соизволит оставить пятизвездочный отзыв после долгих трудов и пропущенных семейных праздников.

Глава 1