在InfluxDB中将测量分成多个测量值以获得内存性能?例如,对于金融价格数据,每个股票代码的一个度量

时间:2017-01-17 09:29:12

标签: database influxdb nosql

我们在32 GB(内存)服务器上的InfluxDB实例中存储了大量的亚分钟股票价格数据,并且存储量充足。不幸的是我们有记忆问题。已完成以下调整:

Enumeration<byte[]> e = sslContext.sessionContext().getIds();
    while ( e.hasMoreElements() ) {
        byte[] b = e.nextElement();
        System.out.println("session id: " + DatatypeConverter.printHexBinary(b).toLowerCase());
        SSLSession session = sslContext.sessionContext().getSession(b);
        Class<?> c = Class.forName("sun.security.ssl.SSLSessionImpl");
        Field masterSecretField = c.getDeclaredField("masterSecret");
        masterSecretField.setAccessible(true);
        SecretKey k = (SecretKey)masterSecretField.get(session);
        System.out.println("secret: " + DatatypeConverter.printHexBinary(k.getEncoded()).toLowerCase());

    }

系列数约为650000,几乎没有增长。

简化后,我们的架构目前在单个衡量标cache_snapshot_memory_size => 6553600, cache_snapshot_write_cold_duration => '1m', max_series_per_database => 10000000, cluster_write_timeout => '10s', 中存储出价和要价,其中包含orderbookbidask,{{非索引)字段1}}等,除了一些(索引)标签。除了一个bid_volume标记外,它们都具有小基数。

如果每个自动收报机有一个订单簿测量,我们会看到内存占用减少了吗? ask_volumetickerorderbook.aapl

目前我们有大约300个代码,但这可能会在几年内增长到10000个。

检索数据时,我们总是在代码上使用过滤器。

参考文献:

1 个答案:

答案 0 :(得分:2)

来自gophers.slack.com的#influxdb的答案:

  • 您提出的方法是无效的。我们强烈建议使用标签。这是数据库假定用户将对其数据建模的方式。向测量添加元数据是反模式

  • 将唯一标记拆分为独特的标记不应该显着帮助您的记忆消耗