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 会使用最新的字段值更新该点。 在极少数情况下,数据可能会被覆盖。 了解有关重复点的更多信息。

相关文章
|
8月前
|
存储 SQL 弹性计算
TiDB概述:定义与基本概念
【2月更文挑战第25天】TiDB是一款高性能、分布式的关系型数据库,它采用Go语言开发,兼容MySQL协议和生态,能够为用户提供强大的数据存储和查询能力。本文将详细介绍TiDB的定义、基本概念以及其核心特性,更好地理解这一开源数据库产品。
|
运维 负载均衡 测试技术
分布式基本概念-02
分布式基本概念-02
92 4
|
6月前
|
存储 算法 调度
iLogtail设计模式问题之如何确定定时任务框架的功能边界和目标
iLogtail设计模式问题之如何确定定时任务框架的功能边界和目标
|
8月前
|
存储 NoSQL 关系型数据库
redis-学习笔记(概念, 相关名词, 特性, 优势: 快)
redis-学习笔记(概念, 相关名词, 特性, 优势: 快)
45 0
|
8月前
|
存储 负载均衡 网络协议
ZooKeeper【基础 01】简介+设计目标+核心概念+ZAB协议+典型应用场景
【4月更文挑战第10天】ZooKeeper【基础 01】简介+设计目标+核心概念+ZAB协议+典型应用场景
103 1
|
8月前
|
存储 监控 负载均衡
InfluxDB最佳实践:数据模型设计与查询优化
【4月更文挑战第30天】本文探讨了InfluxDB的最佳实践,重点在于数据模型设计和查询优化。合理选择字段类型,根据业务逻辑划分Measurement,利用Tags进行索引优化,以及适时数据归档和清理,能有效提升性能。查询优化包括使用索引、精简查询语句、应用聚合函数及限制返回结果。分布式查询和分片适用于大规模数据集,以实现并行查询和负载均衡。这些策略旨在帮助用户优化InfluxDB的性能,进行高效时序数据分析。
|
8月前
|
SQL 关系型数据库 数据库
InfluxDB相关概念
InfluxDB相关概念
72 0
|
8月前
|
存储 传感器 数据挖掘
请解释一下时序数据库的工作原理,并提供一个使用时序数据库的实际应用场景。
请解释一下时序数据库的工作原理,并提供一个使用时序数据库的实际应用场景。
318 0
|
存储 监控 物联网
InfluxDB 的优缺点,哪些应用场景
InfluxDB是一种专门用于处理和存储时间序列数据的开源数据库。以下是InfluxDB的一些优点和缺点,以及适用的应用场景: 优点: 1. 高性能:InfluxDB在设计上针对时间序列数据进行了优化,具有高写入和高查询性能,可以处理大规模的数据量。 2. 简单易用:InfluxDB具有简单的数据模型和查询语言,易于上手和使用。其查询语言InfluxQL和新版本的Flux具有强大的查询和聚合功能。 3. 数据压缩:InfluxDB通过使用时间序列数据的特性进行数据压缩,可以有效地减小数据存储的大小。 4. 可扩展性:InfluxDB支持水平扩展,可以通过添加更多的节点来增加存储和查询能力。
3341 0
|
消息中间件 存储 程序员
CQRS架构简介
CQRS架构简介
1307 1
CQRS架构简介