设计您的模式
模式设计可能会对您的 InfluxDB 集群中的写入和查询性能产生重大影响。以下项目涵盖了高层次的考虑因素和建议。有关详细建议,请参见模式设计建议。
理解标签和字段之间的差异
在InfluxDB 数据结构中,有三种主要的信息“类别”——时间戳、标签和字段。理解什么应该是标签,什么应该是字段,在设计你的架构时是很重要的。
使用以下指南来确定什么应该是标签而不是字段:
- 使用标签存储元数据,提供有关数据来源或上下文的信息。
- 使用字段来存储测量值。
- 字段值通常随时间变化。标签值则不会。
- 标签值只能是字符串。
- 字段值可以是以下任意数据类型:
- 整数
- 无符号整数
- 浮点数
- 字符串
- 布尔值
有关更多信息,请参见 Tags versus fields。
模式限制
InfluxDB 强制执行以下模式限制:
- 您无法在同一表中为标签和字段使用相同的名称。
- 默认情况下,表格可以有多达250列。
有关更多信息,请参见 InfluxDB schema restrictions。
性能设计
以下指南有助于确保写入和查询性能:
请访问以下链接以获取更详细的信息。
- Avoid wide schemas: 宽架构是指具有大量列(标签和字段)的架构。
- Avoid sparse schemas: 稀疏模式是指在许多行中,列包含空值。
- 保持表模式一致: 一致的表模式是指每行都有所有标签和字段的值。
- 为您的数据使用最佳数据类型: 将整数写为整数,将小数写为浮点数,将布尔值写为布尔值。 对存储整数的字段的查询性能优于对字符串数据的查询。
为查询简化而设计
以下指南有助于确保在查询数据时,模式使编写查询变得简单:
请按照下面的链接获取更多详细信息。
- 保持表名、标签和字段简单: 每个数据属性使用一个标签或一个字段。 如果你的源数据在单个参数中包含多个数据属性, 将每个属性分割成自己的标签或字段。
- 避免关键字和特殊字符: 保留的关键字或特殊字符在表名、标签键和字段键中会使编写查询变得更加复杂。