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

В этом стриме я хочу поговогрить о двух основных подходах, используемых для хранения данных:

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

Реляционная модель хранения

Основные характеристики хранения данных:

Недостатки:

Реляционная модель хранения

Расширенная модель хранения

Datalake

Сбор

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

Реализация хранения как правило - сетевые файловые хранилища, документооринтированные СУБД, распределенные файловые системы.

Обогащение

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

Реализация хранения как правило - сетевые файловые хранилища, документооринтированные СУБД, распределенные файловые системы.

Обработка

Уровень на котором происходит бизнес обработка данных. На этом этапе могут применяться распределенные вычисления (Map-Reduce алгоритмы и т.п.). Как правило результат данных более структурирован, чем входные данные.

Анализ

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

Недостатки:

Хранилища (доступ от "Сбор" и "Обогащение"):

- быстрые
    - обработка приближенного к реальному времени
    - управление по типу "оркестрация"
- медленные
    - пакетная обработка (буферная)
    - управление по типу "ETL"

Варианты обработки:

- Кластерная (hadoop)
- Облака (AWS, Google и т.д.)