У нас есть огромное количество субминутных данных о ценах на акции, хранящихся в экземпляре 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.
При получении данных мы всегда используем фильтр тикера.
Использованная литература:
- Аргументы в пользу того, что данные не хранятся в показателях, а из-за сложности написания запросов. Для нас важна перфорация памяти: https://docs.influxdata.com/influxdb/v1.1/concepts/schema_and_data_layout/
- Разделение на «аккаунт» из-за перфорации памяти, но это старая запись в блоге: http://www.ryandaigle.com/a/time-series-db-design-with-influx