Я храню (не равноудаленные) временные ряды в виде таблиц в файлах 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
Я подумал о нескольких способах выполнения этого запроса:
- Существует встроенная функция, называемая B-Tree Index. Можно ли использовать это для индексации данных?
- Мне нужно выполнить двоичный поиск по временному каналу, а затем прочитать значения канала
- Я сам создаю индекс (и обновляю его всякий раз, когда происходит вставка детализации). Какой алгоритм лучше всего использовать здесь?
Основной мотивацией для индекса было бы быстрое получение ответов на запросы.
Что бы вы предложили здесь?