Я хотел бы спросить у коллег по SO's их мнения относительно лучших в своем роде структур данных, которые будут использоваться для индексации временных рядов (также называемых столбцовыми данными, также известными как плоские линейные).
Существуют два основных типа временных рядов, основанные на характеристике выборки/дискретизации:
Регулярная дискретизация (каждая выборка берется с общей частотой)
Нерегулярная дискретизация (выборки берутся в произвольные моменты времени)
Запросы, которые потребуются:
Все значения во временном диапазоне [t0,t1]
Все значения во временном диапазоне [t0,t1], которые больше/меньше v0
Все значения во временном диапазоне [t0,t1], которые находятся в диапазоне значений [v0,v1].
Наборы данных состоят из суммированных временных рядов (которые преодолевают неравномерную дискретизацию) и многомерных временных рядов. Рассматриваемые наборы данных имеют размер около 15-20 ТБ, поэтому обработка выполняется распределенным образом, поскольку некоторые из описанных выше запросов приведут к наборам данных, превышающим физический объем памяти, доступный в любой системе.
Распределенная обработка в этом контексте также означает отправку требуемых вычислений, специфичных для данных, вместе с запросом временных рядов, чтобы вычисления могли выполняться как можно ближе к данным, чтобы уменьшить обмен данными между узлами (что-то вроде map/ редуцировать парадигму) - в скором времени близость вычислений и данных очень критична.
Еще одна проблема, с которой должен справиться индекс, заключается в том, что подавляющее большинство данных являются статическими/историческими (99,999...%), однако ежедневно добавляются новые данные, подумайте о «полевых сеньорах» или «рыночные данные». Идея / требование состоит в том, чтобы иметь возможность обновлять любые текущие вычисления (средние значения, garch и т. д.) с минимально возможной задержкой, некоторые из этих текущих вычислений требуют исторических данных, некоторые из которых будут больше, чем можно разумно кэшировать.
Я уже рассматривал HDF5, он хорошо/эффективно работает с небольшими наборами данных, но начинает тормозить по мере того, как наборы данных становятся больше, а также нет встроенных возможностей параллельной обработки во внешнем интерфейсе.
Ищу предложения, ссылки, дополнительную литературу и т. д. (решения C или C++, библиотеки)