Введение

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

ETL-инструменты

Инструменты ETL — это тяжеловесные приложения для регулярного преобразования больших объемов данных. Они предлагают графические интерфейсы для рисования сопоставлений и преобразований из исходной базы данных в целевую базу данных. Вот некоторые примеры:

Их значительная мощность и способность легко отображать многие поля делают их подходящими для крупномасштабных задач, таких как следующие:

  • 👍 Копирование данных в устаревшую базу данных
  • 👍 Хранилище данных в базу данных отчетов

Отсутствие интеграции с кодом приложения и тяжеловесность делают их непригодными для таких задач, как:

  • 👎 Использование существующей логики приложения
  • 👎 Выполнение тривиальных задач

Фреймворки обработки данных

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

Их интеграция с кодом приложения и соответствующими API делает их подходящими для следующего:

  • 👍 Обработка данных, требующая существующей бизнес-логики
  • 👍 Ограничение пользовательского кода стандартными классами и шаблонами

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

  • 👎 Контроль мелких деталей кода
  • 👎 Интеграция с конфликтующими фреймворками

Облачные сервисы

Облачные провайдеры размещают и управляют различными услугами, включая обработку данных. Вот некоторые примеры:

Облако управляет многими типами интеграции и администрирования, что делает его подходящим для следующих целей:

  • 👍 Интеграция с базами данных, уже развернутыми в том же облаке
  • 👍 Делегирование администрирования базы данных в облако

И наоборот, автономный характер облака делает его менее подходящим для следующего:

  • 👎 Интеграция с источниками данных вне облака или в других облаках
  • 👎 Обработка данных, требующая индивидуального администрирования

Системы обмена сообщениями

Системы обмена сообщениями обрабатывают данные на основе механизмов очередей. Вот некоторые примеры:

Их способность непрерывно ставить в очередь и обрабатывать большие объемы данных делает их подходящими для следующего:

  • 👍 Обработка предметов по одному
  • 👍 Длительная обработка данных

Большая площадь для установки и крутая кривая обучения делают их менее подходящими для следующего:

  • 👎 Выполнение краткосрочных задач
  • 👎 Выполнение тривиальных задач

SQL-скрипты

Сценарии SQL обрабатывают данные напрямую, без кода приложения. Вот несколько примеров команд, которые можно включить в сценарии SQL или инкапсулирующие сценарии bash:

  • Команда MySQL LOAD DATA INFILE напрямую загружает данные из текстового файла
  • INSERT INTO... SELECT FROM цепочки команд INSERT с SELECT для передачи данных между таблицами
  • Команды PostgreSQL pg_dump и psql выгружают и восстанавливают данные

Их относительная простота и прямое манипулирование данными делают их подходящими для следующего:

  • 👍 Разовые процессы
  • 👍 Процессы, не зависящие от кода приложения

Простота и изоляция от кода приложения делает их менее подходящими для следующего:

  • 👎 Реализация сложной логики
  • 👎 Процессы, зависящие от кода приложения

Пользовательский код

Пользовательский код — самый гибкий способ обработки данных. Вот некоторые методы, которые следует учитывать:

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

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

  • 👍 Процессы, требующие тонкого контроля
  • 👍 Обработка данных без введения дополнительных инструментов или зависимостей

Низкоуровневый характер пользовательского кода делает его менее подходящим для следующего:

  • 👎 Обработка, которая заново изобретает колесо, если она написана на заказ
  • 👎 Трудоемкое кодирование, которое можно заменить краткими альтернативными методами

Заключение

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