Как делать запросы на временных рядах hdf5 - PullRequest
2 голосов
/ 21 марта 2011

Я храню (не равноудаленные) временные ряды в виде таблиц в файлах hdf5, используя H5TB API. Формат такой:

time   channel1   channel2
0.0    x          x
1.0    x          x
2.0    x          x

Есть также вставки «подробных данных», например:

time   channel1   channel2
0.0    x          x
1.0    x          x
1.2    x          x
1.4    x          x
1.6    x          x
1.8    x          x
2.0    x          x

Теперь я хочу сохранить данные в другом формате, и поэтому мне нравится «запрашивать» файл hdf5 следующим образом:

select ch1 where time > 1.6 && time < 3.0

Я подумал о нескольких способах выполнения этого запроса:

  1. Существует встроенная функция, называемая B-Tree Index. Можно ли использовать это для индексации данных?
  2. Мне нужно выполнить двоичный поиск по временному каналу, а затем прочитать значения канала
  3. Я сам создаю индекс (и обновляю его всякий раз, когда происходит вставка детализации). Какой алгоритм лучше всего использовать здесь?

Основной мотивацией для индекса было бы быстрое получение ответов на запросы.

Что бы вы предложили здесь?

Ответы [ 3 ]

2 голосов
/ 28 марта 2011

Наконец-то я нашел другое (очевидное) решение. Самый простой способ - открыть файл hdf5 только для чтения канала времени и создать карту памяти перед чтением каналов данных. Этот процесс может быть даже оптимизирован путем чтения временного канала с разреженным гиперслабом.

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

1 голос
/ 21 марта 2011

Предполагается, что вы не спрашиваете о том, как анализировать данные из файла hdf5, а только о том, как использовать данные после анализа ....

Учитывая class channel_data { ... };, std::map<double, channel_data> должно соответствовать вашим потребностям, в частности std::map<>::lower_bound() и std::map<>::upper_bound().

0 голосов
/ 10 февраля 2012

Популярным подходом к решению этой проблемы является использование индексации растровых изображений . Есть также документы, написанные об этом, но, похоже, они не опубликовали никакого кода.

...