Influxdb XDB设计问题

Influxdb XDB设计问题,influxdb,nosql,Influxdb,Nosql,我使用XDB和line协议将大量数据插入数据库。我得到的数据是键值对的形式,其中键是长字符串,包含分层数据,值是简单的整数值 示例键值数据: /path/units/unit/subunits/subunit[name\='NAME1']/memory/chip/application/filter/allocations value = 500 /path/units/unit/subunits/subunit[name\='NAME2']/memory/chip/application/f

我使用XDB和line协议将大量数据插入数据库。我得到的数据是键值对的形式,其中键是长字符串,包含分层数据,值是简单的整数值

示例键值数据:

/path/units/unit/subunits/subunit[name\='NAME1']/memory/chip/application/filter/allocations
value = 500

/path/units/unit/subunits/subunit[name\='NAME2']/memory/chip/application/filter/allocations
value = 100
(Note Name = 2)

/path/units/unit/subunits/subunit[name\='NAME1']/memory/chip/application/filter/free
value = 700
(Note Instead of allocation it is free at the leaf)

/path/units/unit/subunits/subunit[name\='NAME2']/memory/graphics/application/filter/swap
value = 600
Note Instead of chip, graphics is in path)

/path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/size
value = 400
Note Different path but till subunit it is same

/path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/free
value=100
Note Same path but last element is different
下面是我用来插入数据的行协议

interface, Key= /path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/free, valueData= 500
我使用的是一种测量方法,即界面。一个标签和一个字段集。但这种数据库设计导致了查询数据的问题

我如何设计数据库以便查询,比如,获取name=Name1子单元的所有记录,或者获取每个硬盘的所有大小数据


提前感谢。

我建议的模式如下:

interface,filename=/path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/free value=500
其中,
filename
是标记,
value
是字段


考虑到
filename
的基数为数千,这个模式应该可以很好地工作。

我推荐的模式如下:

interface,filename=/path/units/unit/subunits/subunit[name\='NAME2']/harddisk/data/free value=500
其中,
filename
是标记,
value
是字段


考虑到
filename
的基数为数千,这个模式应该可以很好地工作。

我对这里发生的事情有点困惑。您能给我一个您想运行的示例查询吗。@MichaelDesa我想知道如何有效检索上述数据的模式设计:例如/path/units/units/subunits/subunit[name\='NAME2']/harddisk/data/free或/path/units/units/subunits/subunit[name\='NAME2']/硬盘/数据/分配键的基数是多少?它是一对多。值是简单的整数数据,可以保存在列中。我唯一担心的是如何有效地保存关键数据。对于KEY,您可以将其视为路径数据。例如,如输出pwd命令。它可以有多少不同的值?1000? 1000000? 无限?我对这里发生的事情有点困惑。您能给我一个您想运行的示例查询吗。@MichaelDesa我想知道如何有效检索上述数据的模式设计:例如/path/units/units/subunits/subunit[name\='NAME2']/harddisk/data/free或/path/units/units/subunits/subunit[name\='NAME2']/硬盘/数据/分配键的基数是多少?它是一对多。值是简单的整数数据,可以保存在列中。我唯一担心的是如何有效地保存关键数据。对于KEY,您可以将其视为路径数据。例如,如输出pwd命令。它可以有多少不同的值?1000? 1000000? 无限?谢谢Michael,我如何查询键的子串部分?例如,获取具有name=“NAME2”InfluxQL的所有“/硬盘”的“值”计数。InfluxQL支持标记上的正则表达式,因此您的查询看起来像这样
SELECT*FROM interface,其中filename=~/harddisk/
。不过,如果您正在执行大量与正则表达式匹配的查询,我可能会建议将
filename
拆分为多个标记。谢谢Michael,我如何查询键的子字符串部分?例如,获取具有name=“NAME2”InfluxQL的所有“/硬盘”的“值”计数。InfluxQL支持标记上的正则表达式,因此您的查询看起来像这样
SELECT*FROM interface,其中filename=~/harddisk/
。但是,如果您正在执行大量与正则表达式匹配的查询,我可能会建议将
filename
拆分为多个标记。