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

В Deep.BI мы боролись с этой проблемой, используя такие передовые технологии, как Druid, Kafka и Flink.

Как данные собираются и хранятся

Наш тег Javascript собирает отдельные взаимодействия на веб-сайтах и ​​в приложениях, а затем конвертирует их в JSON.
См. пример:

{
  event.type: “page-open”
  timestamp: timestamp,
  user.id.cookie: cookie_id,
  attributeGroup1: {
    attr1: "value",
    attr2: "value"
  }
  attributeGroup2: {
    attr1: "value",
    attr2: "value"
  }
}

Каждый атрибут создает столбец в нашей базе данных (Druid), в результате мы получаем следующие столбцы:

event.type, timestamp, user.id.cookie, attributeGroup1.attr1, attributeGroup1.attr2, attributeGroup2.attr1, attributeGroup2.attr2

Обычно в каждой строке ~ 200 столбцов. Каждая строка представляет отдельное событие, и каждое событие весит в среднем 4 КБ.

Эти столбцы и строки хранятся в Druid в его собственном двоичном формате, сегментированном по времени. Каждый сегмент состоит из событий определенного временного диапазона. Стоит отметить, что данные сжимаются по столбцам. Алгоритм сжимает данные 40–100 раз. Таким образом, 1 ТБ необработанных данных хранится как 10–40 ГБ. Таким образом, мы можем обеспечить исследование данных в реальном времени, аналитику и доступ к огромным наборам данных.

Как вы можете использовать эти данные

Мы предоставляем инструменты визуального исследования данных, создания и совместного использования информационных панелей. Также у вас есть доступ к нашему API.
Люди часто спрашивают о доступе к своим «необработанным данным», хранящимся в Deep.BI.

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

Во-первых, вы можете полностью изменить этот механизм сжатия и извлечь необработанные файлы JSON - часто это не оптимально.

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

[userid, attr1, attr2, …, attrN, metric1, metric2, …, metricN, label]

Пример:

[UUID1, deviceModel, country, …, emailDomain, numberOfVisits[N], visitedSectionX[0,1], …, timeSpent[X], purchased[0,1]]

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

Для этого вам не нужны ни сырые сегменты Druid, ни необработанные файлы JSON. Вам просто нужно создать запросы Deep.BI API, и вы получите CSV с такими «необработанными данными».