InfluxDB核心概念系列之数据模式与设计原则

简介: 工欲善其事必先利其器,想要用好InfluxDB,当然要先厘清其基本概念,本文为InfluxDB核心概念系列文章之数据模式与设计原则。

数据模式

InfluxDB 数据元素存储在时间结构合并树 (TSM) 和时间序列索引 (TSI) 文件中,以有效压缩存储的数据。

InfluxDB 还提供了一个表格数据模式,其中包括以下内容:

  • Annotation rows
  • Header row
  • Data rows
  • Other columns
  • Group keys

表格数据模式用于以下用途:

  • 在使用 InfluxDB 探索指标时查看原始数据
  • 以带注释的 CSV 语法返回查询结果

Annotation rows

注释行描述列属性,例如:

  • #group
  • #datatype
  • #default

Header row

标题行定义了描述每列数据的列标签,例如:

  • table
  • _time
  • _value
  • _field
  • _measurement
  • tag key names (without underscore prefix): tag-1tag-2

Data rows

每个数据行包含一个点的标题行中指定的数据。

Other columns

除了每个数据行中的列(在标题行中指定)之外,以下列是可选的:

  • annotation
  • result
  • table

Group keys

通过对指定列中共享公共值的记录进行分组,确定 Flux 中输出表的内容。 了解有关使用 Flux 对数据进行分组的更多信息。

设计原则

InfluxDB 实现了时间序列数据的优化设计原则。 其中一些设计原则可能会在性能方面进行权衡。

  • 按时间排序的数据
  • 严格的更新和删除权限
  • 首先处理读写查询
  • 无模式设计
  • 单个点上的数据集
  • 重复数据

按时间排序的数据

为了提高性能,数据按时间升序写入。

严格的更新和删除权限

为了提高查询和写入性能,InfluxDB 严格限制更新和删除权限。 时间序列数据主要是从未更新的新数据。 删除通常只影响未写入的数据,并且永远不会发生有争议的更新。

首先处理读写查询

InfluxDB 将读取和写入请求置于强一致性之上。 InfluxDB 在执行查询时返回结果。 任何影响查询数据的事务都会随后进行处理,以确保数据最终一致。 因此,如果摄取率较高(每毫秒多次写入),则查询结果可能不包括最近的数据。

无模式设计

InfluxDB 使用无模式设计来更好地管理不连续数据。 时间序列数据通常是短暂的,这意味着数据会出现几个小时然后消失。 例如,一个新主机启动并报告一段时间然后关闭。

单个点上的数据集

因为数据集比单个点更重要,InfluxDB 实现了强大的工具来聚合数据和处理大型数据集。 点是通过时间戳和序列来区分的,所以没有传统意义上的ID。

重复数据

为了简化冲突解决并提高写入性能,InfluxDB 假设多次发送的数据是重复数据。 相同的点不会存储两次。 如果为某个点提交了新的字段值,InfluxDB 会使用最新的字段值更新该点。 在极少数情况下,数据可能会被覆盖。 了解有关重复点的更多信息。

相关文章
|
14天前
|
SQL 关系型数据库 数据库
InfluxDB相关概念
InfluxDB相关概念
16 0
|
8月前
|
分布式计算 负载均衡 Hadoop
深入理解集群、分布式、微服务的概念、关系和区别
区别: 集群是个物理形态,分布式是个工作方式。
624 0
|
11月前
|
存储 SQL NoSQL
大数据存储组件TiDB原理+实战篇1
大数据存储组件TiDB原理+实战篇
|
11月前
|
存储 SQL 分布式计算
大数据存储组件TiDB原理+实战篇2
大数据存储组件TiDB原理+实战篇
|
11月前
|
消息中间件 存储 程序员
CQRS架构简介
CQRS架构简介
1015 0
CQRS架构简介
|
存储 运维 负载均衡
聊聊集群、分布式和微服务之间的联系和异同点
对于集群、分布式和微服务,大家在工作中可能经常会听到,但是如果问你它们之间存在什么样的区别和联系,可能你一下子又感觉说不清楚,今天就这个话题,趁着周末时间,跟大家来一起聊聊。
聊聊集群、分布式和微服务之间的联系和异同点
|
canal 消息中间件 JSON
简化ETL工作,编写一个Canal胶水层(上)
这是一篇憋了很久的文章,一直想写,却又一直忘记了写。整篇文章可能会有点流水账,相对详细地介绍怎么写一个小型的"框架"。这个精悍的胶水层已经在生产环境服役超过半年,这里尝试把耦合业务的代码去掉,提炼出一个相对简洁的版本。
306 0
|
canal 消息中间件 SQL
简化ETL工作,编写一个Canal胶水层(下)
这是一篇憋了很久的文章,一直想写,却又一直忘记了写。整篇文章可能会有点流水账,相对详细地介绍怎么写一个小型的"框架"。这个精悍的胶水层已经在生产环境服役超过半年,这里尝试把耦合业务的代码去掉,提炼出一个相对简洁的版本。
522 0
|
存储 算法 NoSQL
轻量级日志系统Loki原理简介和使用(2)
轻量级日志系统Loki原理简介和使用(2)
562 0
轻量级日志系统Loki原理简介和使用(2)
|
存储 数据采集 Kubernetes
Data Mesh的原则和逻辑架构-数据架构参考
原文链接:[https://martinfowler.com/articles/data-mesh-principles.html](https://link.zhihu.com/?target=https%3A//martinfowler.com/articles/data-mesh-principles.html) 作者简介:Zhamak是Thoughtworks的首席技术顾问,专注于企业的分布式系统架构和数字平台策略。作为Thoughtworks技术顾问委员会的成员,她为创建Thoughtworks技术雷达做出了贡献。
535 0