Основная задача разработки любой бизнес-системы сводится по сути к решению главного вопроса - как хранить много данных и иметь эффективный способ извлечения данных для аналитики. Для любой корпоративной системы вопрос хранения данных - это центральная точка проектирования.
В этом стриме я хочу поговогрить о двух основных подходах, используемых для хранения данных:
выделить их различия, немного поговорить о основных характеристиках и помочь понять какие практические аспекты влияют на выбор архитектуры решения.
Основные характеристики хранения данных:
Недостатки:
Получение данных из разных источников. Поддерживаются разные варианты сбора: структурированный, неструктурированный, двоичный. Источниками данных могут выступать сторонние API и даже корпоративные хранилища данных.
Реализация хранения как правило - сетевые файловые хранилища, документооринтированные СУБД, распределенные файловые системы.
Слой отвечает за добавление метаинформации, необходимой для быстрого поиска сырых данных и для облегченной обработки этих данных в будущем. Кроме метаинформации может быть выполнена предварительная оптимизация или предобработка данных. Данные по-прежнему хранятся в "сыром" виде.
Реализация хранения как правило - сетевые файловые хранилища, документооринтированные СУБД, распределенные файловые системы.
Уровень на котором происходит бизнес обработка данных. На этом этапе могут применяться распределенные вычисления (Map-Reduce алгоритмы и т.п.). Как правило результат данных более структурирован, чем входные данные.
Уровень на котором обработанные данные служат источником для аналитических процедур, на основе задач бизнес-подразделений. Обычно к этому уровню непосредственно обращается API клиентской части, для получения осмысленных результатов обработки.
Недостатки:
Хранилища (доступ от "Сбор" и "Обогащение"):
- быстрые
- обработка приближенного к реальному времени
- управление по типу "оркестрация"
- медленные
- пакетная обработка (буферная)
- управление по типу "ETL"
Варианты обработки:
- Кластерная (hadoop)
- Облака (AWS, Google и т.д.)