Часть 1, Изучение земли

Выход из зоны комфорта

Приятно иметь зону комфорта. Зона комфорта дает вам место, куда можно укрыться во времена неприятностей и неопределенности. Это ваше убежище и место, куда вы можете пойти, когда вам нужно подумать, поразмыслить и спланировать. Но, как и большинство вещей, он также обладает не только солнечной стороной янь, но и более темным аспектом инь.

Темная сторона вашей зоны комфорта вступает в игру, когда она используется как укрытие, а не как убежище. Проведение там слишком большого количества времени тормозит как духовный, так и интеллектуальный рост. Учитывая широту, глубину и скорость изменений в экосистеме Javascript, для веб-разработчиков особенно важно выйти из зоны комфорта в рамках своей стратегии обучения.

«Только те, кто рискнет зайти слишком далеко, могут понять, как далеко можно зайти». - Т. С. Эллиот

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

Постановка нашей цели растяжения

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

Требование для фронтенд-разработчиков и императив для бэкэнд-разработчиков - понимать подводные камни и методы, связанные с обработкой больших объемов информации. Это верно не только для производительности, но и для достижения надежности, доступности и удобства обслуживания (RAS).

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

Одно из решений - разработать процесс извлечения, преобразования и загрузки (ETL), который добавляет необработанные данные в промежуточную область, такую ​​как база данных MongoDB, независимо от качества данных или их взаимосвязей. Попав в промежуточную область, данные можно просмотреть и очистить перед перемещением в постоянный дом, например, в базу данных Postgres SQL. Эта стратегия может быть реализована, чтобы охватить два различных процесса загрузки - начальную однократную массовую загрузку и периодическую загрузку новых данных.

Понимание источника и формата необработанных данных

Прежде чем начать, важно уделить время пониманию необработанных данных, которые необходимо подготовить, преобразовать и загрузить.

«Неоправданная поспешность - прямой путь к ошибке». - Мольер

В этом проекте будут использоваться данные из набора данных Global Historical Climatology Network - Daily (GHCND), предоставленного США. Национальное управление океанических и атмосферных исследований »(NOAA). Эти данные были выбраны из-за их объема (28 ГБ), а не содержания. Цель состоит не в том, чтобы использовать эти данные, а только в изучении методов эффективной обработки больших объемов данных.

GHCND объединяет ежедневные наблюдения за погодой из 30 различных источников, охватывающих 90 000 наземных станций по всему миру, в единый источник данных. Большинство этих наблюдений представляют собой измерения осадков, но могут также включать максимальную и минимальную дневную температуру, температуру во время наблюдения, снегопад и высоту снежного покрова.

Формат и взаимосвязь формата данных о погоде в следующих ниже файлах задокументированы в readme.txt файле, который их сопровождает.

  • ghcnd-all.tar.gz: Файлы ежедневных наблюдений. Каждый файл содержит измерения с одной станции наблюдения.
  • ghcnd-countries.txt: Список кодов стран (FIPS) и названий
  • ghcnd-inventory.txt: Файл со списком периодов записи для каждой станции и элемента
  • ghcnd-stations.txt: Список станций и их метаданные (например, координаты)
  • ghcnd-states.txt: Список кодов штатов США и провинций Канады.

Анализ структуры и формата необработанных данных позволяет создать диаграмму отношений сущностей, отображающую различные группы информации и их отношения друг с другом. Имейте в виду, что на данный момент это НЕ проект базы данных. Это просто инструмент для понимания различных элементов данных, их атрибутов и отношений друг с другом.

Ежедневные наблюдения содержат идентификационный номер, определяемый как совокупное поле, состоящее из кода страны, сетевого кода, идентифицирующего систему нумерации, используемую станцией наблюдений, и идентификатора станции. Это поле используется для связи станции с ее наблюдениями.

Год и месяц измерения, а также тип элемента используются для квалификации каждого наблюдения. Типы элементов помогают описать объект наблюдения - осадки, снегопад, температуру и т. Д.

Массив из 31 элемента содержит наблюдения, по одному на каждый день месяца. Наблюдения состоят из следующих компонентов:

  • Число, представляющее день месяца
  • Флаг измерения описывает значение измерения (например, общее количество осадков, полученное из двух 12-часовых сумм).
  • Флаг качества определяет, было ли измерение выполнено успешно, а если нет, то обнаружена ошибка (например, неудачная проверка дубликатов).
  • флаг источника, определяющий источник наблюдения (например, Автоматизированная система наземных наблюдений США)
  • значение, содержащее измерение

Масштабы проблемы становятся очевидными, потому что наблюдения за погодой в настоящее время содержатся в более чем 108 КБ уникальных файлов. Уже одно это подчеркивает необходимость тщательного анализа и проектирования процесса загрузки данных.

Может быть, а может и не быть очевидным, что, помимо файлов ежедневных наблюдений за погодой, другие файлы содержат метаданные, описывающие различные атрибуты наблюдений и станций. Например, ghcnd-countries.txt определяет коды стран и их соответствующие названия.

В наблюдениях также есть данные, для которых нет формального определения. В частности, файл `readme.txt` определяет значения типа элемента, а также значения для флагов измерения, качества и источника, но не существует машиночитаемого определения этих кодов.

Подход

«Планы не имеют большого значения, но планирование необходимо». - Уинстон Черчилль

Этот проект разделен на шесть этапов высокого уровня, как показано ниже, каждый из которых содержит подробные задачи, которые также должны быть выполнены, чтобы этап считался завершенным. Как и в любом проекте, результат и уроки, извлеченные из этапа высокого уровня, будут использоваться для уточнения его преемников.

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

«Феникс должен гореть, чтобы появиться»

Джанет Фитч, должно быть, хорошо понимала необходимость расширить границы своей зоны комфорта, чтобы сказать: Феникс должен гореть, чтобы появиться. Сделать ставку на то, чтобы выйти за пределы ваших границ, - необходимый шаг в непрерывном процессе личного развития. Независимо от выбранной вами профессии, будь то Оператор вафельного станка или веб-разработчик, важно использовать такие инструменты, как сложные задачи, чтобы расширить свои знания, расширить свой опыт и двигаться вперед.

«Неудача должна быть нашим учителем, а не гробовщиком. Неудача - это промедление, а не поражение. Это временный обходной путь, а не тупик. Неудачи - это то, чего мы можем избежать, только ничего не говоря, ничего не делая и оставаясь ничем ». - Денис Уэйтли

В этой статье мы подготовили почву для амбициозного проекта ETL, имеющего дело с большими объемами данных, NoSQL и SQL. С этой отправной точки нет никаких гарантий успеха, поскольку существует довольно много неизвестных, и мы будем использовать незнакомые технологии и методы. Однако это путешествие будет полезным, и ошибки будут приветствоваться, но то, что мы узнаем в результате, поможет нам стать лучшими разработчиками.

Далее - часть 2, проектирование и настройка среды.

Что такое Чингу?

Присоединяйтесь к нам на Chingu.io, чтобы выйти из Учебного чистилища, присоединившись к одной из наших удаленных проектных групп Voyage, чтобы создавать приложения, совершенствовать жесткие навыки и изучать новые мягкие навыки. Мы помогаем разработчикам преодолеть разрыв между тем, чему они научились, и навыками, которые ищут работодатели.