Рекламная сеть AdRoll объявила об открытии исходных текстов встраиваемой СУБД TrailDB, ориентированной на эффективное сохранение и обработку данных о наступающих событиях. Основу TrailDB составляет библиотека с реализацией функциональности СУБД, связываемая с приложениями. Для управления предлагается интерактивная оболочка tdb, работающая в режиме командной строки. Код TrailDB написан на языке Си и распространяется под лицензией MIT.

Модель хранения данных в TrailDB предоставляет возможность сохранения в БД произвольного набора групп (trail), к которым привязываются наступающие события. Каждая группа идентифицируется 128-разрядным UUID и включает упорядоченную информацию о последовательности событий и времени их наступления. Каждое событие включает в себя UUID группы, время наступления и предопределённый набор полей (формат схемы полей задаётся заранее). Предоставляются операции слияния разных БД, шардинга и перестроения групп, а также очень быстрые операции с курсором и средства для фильтрации событий (например, "action=page_view AND (page=pricing OR page=about)").

Из задач, которые легко решаются в TrailDB, но слишком усложнены для реляционных СУБД, отмечается отслеживание цепочек действий и предпочтений пользователя. Например, имеются данные, что пользователь зашёл на сайт, посмотрел страницу о продукте, после чего открыл прайс и спустя час после первого события зарегистрировался в сервисе. При помощи TrailDB не составит труда проанализировать число пользователей, которые зарегистрировались менее, чем за час после первого входа.

Другие особенности:

  • Высокая производительность и надёжность. На одном процессорном ядре могут обрабатываться миллионы событий в секунду. С 2014 года в сети AdRoll при помощи TrailDB сохранено и обработано более 20 триллионов событий. Покрытие автоматизированным тестовым набором составляет более 90%;
  • Основные области применения: вычисление метрик (например, интенсивность отказов), анализ моделей использования, визуализация статистики, выявление аномалий, обобщение данных о предпочтениях и прогнозирование поведения пользователя;
  • Простой API. Наличие биндингов для языков C++, Python, R, D, Go и Haskell;
  • Возможность хранения данных в сжатом виде. При этом обеспечена поддержка прямых запросов сжатых данных с распаковыванием только необходимых частей;


Источник: http://www.opennet.ru/opennews/art.shtml?num=44487