Уважаемые пользователи Голос!
Сайт доступен в режиме «чтение» до сентября 2020 года. Операции с токенами Golos, Cyber можно проводить, используя альтернативные клиенты или через эксплорер Cyberway. Подробности здесь: https://golos.io/@goloscore/operacii-s-tokenami-golos-cyber-1594822432061
С уважением, команда “Голос”
GOLOS
RU
EN
UA
kvg
7 лет назад

Велосипед для анализа таймсерий в реальном времени

Помнится, еще в "бородатые 90-е" появился метатрейдер, завоевавший популярность тем, что предоставлял пользователю возможность создавать аналитические модули для наборов биржевых данных: советники, индикаторы и т.п. Добавим, что и "кухням" он предоставлял (и , может быть, предоставляет) широкие возможности ;)

Сейчас метатрейдер хоть и эволюционировал до 5+ версиии, с красивым интерфейсом, и богатым функционалом, но основные недостатки остались:

  • Урезанные возможности языка с++.
  • Ограничение в виде windows-платформы.
  • Механизмы "защиты", блокирующие все и вся.
  • Закрытые форматы данных.
  • Закрытые и ограниченные протоколы связи с провайдерами.
  • Закрытый исходный код :)
  • Нарушение обратной совместимости внутренностей скриптового движка вплоть до минорных обновлений.

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

  • Кроссплатформенный инструмент. Тут без комментариев.
  • Широкий спектр языковых стредств для создания алгоритмов в виде плагинов. Метатрейдер урезает множество языковых средств c++ в целях безопасности. Вопросы безопасности мы же решаем не за счет функциональности системы.
  • Поддержка широкого спектра протоколов подключения к самым популярным провайдерам данных: HTTP(s), FAST, да хоть JSON. Возможность добавлять новый протокол в виде плагина.
  • Единое пространство для различных типов данных от различных провайдеров и свобода оперирования. Современный метатрейер свободу оперирования не ограничивает, а вот с протоколами - у него не очень.
  • Визуализация данных. В принципе, метатрейдер в этом плане идеален, так что ориентируемся на него.
  • Возможность анализировать данные как на локалхосте, так и на кластере.

Эти идеи планирую реализовать в системе Mrktbase (https://github.com/kv-gits/mrktbase) и здесь хотел бы делиться новостями разработки и размышлениями об анализе данных в реальном времени.

Первый вопрос, который возник у меня: "А есть ли что-то готовое для решения подобных задач?"
Есть и немало! Проприетарные проекты отбросим сразу. Замечу, что в этом случае комплексных решений найти не удалось, однако есть неплохие отдельные компоненты и фрэймворки.

  • Druid.io
  • Apach Spark
  • InfluxDb
  • HADOOP системы.

Большинство из них - базы данных, заточенные на хранения тайм-серий. Самое близкое же к решению задач анализа в реальном времени - Apach Spark.
Это мощный фрэймворк с открытым кодом и динамичным сообществом. В принципе, все можно делать и на нем, но есть несколько "но".

  • Spark элегантен на scala. На джаве - тот еще уродец. Это дело вкуса, конечно, но все же.
  • Spark - часть экосистемы HADOOP, так что там целая куча оверхед-функциональности, которая для домашнего анализа данных не нужна.
  • Spark не предлагает средств для визуализации данных. Приходится прикручивать сторонние приложения. Тем, кто озадачивался подобным, станет ясно, что RDD механизм не очень удобен для этого хотя бы потому, что для отображения данных их нужно скопировать в новый участок оперативной памяти с соответствующим форматированием. К примеру, за один день только лишь по одному финансовому инструменту, размеры данных могут достигать нескольких сот мегабайт.
  • Spark, как и всякое кластерное ПО, сложен в установке и развертке.

Основная идея, вокруг которой выстраивается mrktbase - создание компонентов, которые имеют конкурентный доступ к общим данным. В mrktbase мы избегаем лишних "движений" и копирования массивов. Вместо этого решаем задачи "незатратного" предоставления доступа к общим участкам памяти для пользовательских компонентов, возможно, в будущем и распределенно по кластеру или даже p2p.

ЗЫ.

В рамках одного поста даже базовые идеи охватить оказалось сложновато и получилось несколько сумбурно. Поэтому "продолжение следует"! Про опыт анализа на Spark тоже планирую писать.

1
94.366 GOLOS
На Golos с May 2017
Комментарии (1)
Сортировать по:
Сначала старые