当组织InfluxDB数据库时,这两种方法中的哪一种是最优选的?

问题描述 投票:0回答:1

[我正在尝试确定如何在InfluxDB数据库中组织测量(我认为它们称为schema design and data layout,但是我认为这可能是一个更通用的数据库类型问题。

举个简单的例子,我正在>和外部两个位置测量两个数量,温度湿度InfluxDB具有用于插入数据点的syntax

测量

标签键=标签值 字段键=字段值因此,有两个显而易见的选项(至少对我而言)。简要地说,第一个选项将像这样插入一个数据点:

INSERT temperature,location=outside value=15 INSERT humidity,location=outside value=50

而第二个选项可以这样:

INSERT sensor_measurements,location=outside temperature=15,humidity=50

我的问题更高层次:

    是否有首选/可接受的方法来解决此问题?
  • 如果尝试将其扩展到更多数量/位置/数据类型,我会遇到这两个问题吗?
  • 例如,如果稍后我尝试在Grafana中绘制这些内容,或者稍后尝试实现许多InfluxQL functions中的某些方法,则这两种方法中的哪一种方法都具有优势?
  • 有人对此有任何一般建议吗?
  • 我自己的想法:

我觉得选项1更像是InfluxDB描述“度量”所隐含的内容。温度和湿度都是分开的量。但是,仅将其称为“值”似乎有点笨拙。

选项2似乎具有湿度和温度共享完全相同的时间戳的优点。例如,如果我想将数据导入其他软件并在两个数量之间进行关联,这将很有用,这意味着我不必进行任何内插或合并就可以使它们匹配。

我不确定使用选项2仅具有称为[[sensor_measurements

的常规度量值是否是个坏主意,以后将很难维护。

详细:

选项1


    温度

  • 湿度
  • 分别进行单独的“测量”,将位置用作“标签”,并将“字段”命名为在时间t1,插入数据:

    INSERT humidity,location=outside value=50 INSERT temperature,location=outside value=15 INSERT humidity,location=living_room value=65 INSERT temperature,location=living_room value=28

    在时间
    t2
    ,插入一些不同的数据:

    INSERT humidity,location=outside value=50 INSERT temperature,location=outside value=15 INSERT humidity,location=living_room value=65 INSERT temperature,location=living_room value=28

    然后我可以通过查询以下内容来获取客厅的温度:
    > SELECT value FROM temperature WHERE location='living_room'
    
    name: temperature
    time                value
    ----                -----
    1590416682017481091 28
    1590416723963187592 29
    

    我也可以使用group by function做这样的事情:

    SELECT value FROM temperature GROUP BY "location"
    

    选项2

    例如,有一个称为
      sensor_measurements

    的组合“测量”,对于
  • 位置使用“标签”,然后对于温度湿度]中的每一个都有单独的“字段” >:在时间t1
  • ,插入数据:

    INSERT sensor_measurements,location=outside temperature=15,humidity=50 INSERT sensor_measurements,location=living_room temperature=28,humidity=65

    在时间
    t2,插入一些不同的数据:

    INSERT sensor_measurements,location=outside temperature=14,humidity=56 INSERT sensor_measurements,location=living_room temperature=29,humidity=63

    我现在可以通过查询以下内容来获取客厅的温度:
    > SELECT temperature FROM sensor_measurements WHERE location='living_room'
    
    name: sensor_measurements
    time                temperature
    ----                -----------
    1590416731530452068 28
    1590416757055629103 29
    

    我现在可以使用group by function做这样的事情:

    SELECT temperature FROM sensor_measurements GROUP BY "location"
    

    我正在尝试确定应该如何在InfluxDB数据库中组织度量(我认为它们称为架构设计和数据布局),但是我认为这可能是更通用的数据库类型...
    sql grafana influxdb influxql
    1个回答
    0
    投票
    © www.soinside.com 2019 - 2024. All rights reserved.