Основной проблемой при обработке больших данных является их хранение таким образом, чтобы обеспечить быстрый и гибкий доступ и аналитику, в том числе в режиме реального времени.
В 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 с такими «необработанными данными».