Разделение измерения на несколько измерений в InfluxDB для производительности памяти? Например, один показатель для каждой биржевой тикера для финансовых данных о ценах.

У нас есть огромное количество субминутных данных о ценах на акции, хранящихся в экземпляре InfluxDB на сервере объемом 32 ГБ (память) с большим объемом памяти. К сожалению, у нас проблемы с памятью. Произведена следующая настройка:

cache_snapshot_memory_size         => 6553600,
cache_snapshot_write_cold_duration => '1m',
max_series_per_database            => 10000000,
cluster_write_timeout              => '10s',

Количество серий около 650000, и почти не растет.

Упрощенно, наша схема в настоящее время хранит цены спроса и предложения в виде единого измерения orderbook с (неиндексированными) полями, такими как bid, ask, bid_volume, ask_volume и т. Д., В дополнение к нескольким (индексированным) тегам. Все они имеют малую мощность, кроме одного - тега ticker.

Увидели бы мы уменьшение объема памяти, если бы у нас было одно измерение книги заказов на тикер? orderbook.aapl, orderbook.googl, orderbook.abc и т. Д.

На данный момент у нас около 300 тикеров, но через несколько лет их количество может вырасти до 10000.

При получении данных мы всегда используем фильтр тикера.

Использованная литература:


person André C. Andersen    schedule 17.01.2017    source источник


Ответы (1)


Ответы от #influxdb на gophers.slack.com:

  • Предлагаемый вами метод неэффективен. Мы НАСТОЯТЕЛЬНО советуем использовать теги. Таким образом база данных предполагает, что пользователи будут моделировать свои данные. Добавление метаданных к измерениям - это антипаттерн.

  • разделение уникальных тегов на уникальные измерения не должно существенно помочь в использовании памяти.

person André C. Andersen    schedule 18.01.2017