比较 InfluxDB 与 SQL 数据库

本页记录了 InfluxDB OSS 的早期版本。InfluxDB OSS v2是最新稳定版本。

InfluxDB 与 SQL 数据库类似,但在许多方面有所不同。InfluxDB 专为时间序列数据而构建。关系数据库可以处理时间序列数据,但并未针对常见的时间序列工作负载进行优化。InfluxDB 旨在存储大量时间序列数据并快速对这些数据进行实时分析。

时机就是一切

在 InfluxDB 中,时间戳可识别任何给定数据系列中的单个点。这类似于 SQL 数据库表,其中主键由系统预设且始终为时间。

InfluxDB 还认识到您的架构偏好可能会随时间而变化。在 InfluxDB 中,您不必预先定义架构。数据点可以包含测量上的一个字段、测量上的所有字段或介于两者之间的任意数字。您只需为该新字段写入一个点,即可将新字段添加到测量中。如果您需要对术语“测量”、“标签”和“字段”的解释,请查看下一节,了解 SQL 数据库到 InfluxDB 术语对照表。

术语

下表是foodshipsSQL 数据库中表的一个(非常)简单的示例,其中包含未索引列#_foodships和索引列park_idplanettime

+---------+---------+---------------------+--------------+
| park_id | planet  | time                | #_foodships  |
+---------+---------+---------------------+--------------+
|       1 | Earth   | 1429185600000000000 |            0 |
|       1 | Earth   | 1429185601000000000 |            3 |
|       1 | Earth   | 1429185602000000000 |           15 |
|       1 | Earth   | 1429185603000000000 |           15 |
|       2 | Saturn  | 1429185600000000000 |            5 |
|       2 | Saturn  | 1429185601000000000 |            9 |
|       2 | Saturn  | 1429185602000000000 |           10 |
|       2 | Saturn  | 1429185603000000000 |           14 |
|       3 | Jupiter | 1429185600000000000 |           20 |
|       3 | Jupiter | 1429185601000000000 |           21 |
|       3 | Jupiter | 1429185602000000000 |           21 |
|       3 | Jupiter | 1429185603000000000 |           20 |
|       4 | Saturn  | 1429185600000000000 |            5 |
|       4 | Saturn  | 1429185601000000000 |            5 |
|       4 | Saturn  | 1429185602000000000 |            6 |
|       4 | Saturn  | 1429185603000000000 |            5 |
+---------+---------+---------------------+--------------+

相同的数据在 InfluxDB 中如下所示:

name: foodships
tags: park_id=1, planet=Earth
time			               #_foodships
----			               ------------
2015-04-16T12:00:00Z	 0
2015-04-16T12:00:01Z	 3
2015-04-16T12:00:02Z	 15
2015-04-16T12:00:03Z	 15

name: foodships
tags: park_id=2, planet=Saturn
time			               #_foodships
----			               ------------
2015-04-16T12:00:00Z	 5
2015-04-16T12:00:01Z	 9
2015-04-16T12:00:02Z	 10
2015-04-16T12:00:03Z	 14

name: foodships
tags: park_id=3, planet=Jupiter
time			               #_foodships
----			               ------------
2015-04-16T12:00:00Z	 20
2015-04-16T12:00:01Z	 21
2015-04-16T12:00:02Z	 21
2015-04-16T12:00:03Z	 20

name: foodships
tags: park_id=4, planet=Saturn
time			               #_foodships
----			               ------------
2015-04-16T12:00:00Z	 5
2015-04-16T12:00:01Z	 5
2015-04-16T12:00:02Z	 6
2015-04-16T12:00:03Z	 5

参考上面的例子,一般来说:

  • InfluxDB 测量(foodships)类似于 SQL 数据库表。
  • InfluxDB 标签(park_idplanet)就像 SQL 数据库中的索引列。
  • InfluxDB 字段(#_foodships)类似于 SQL 数据库中未索引的列。
  • InfluxDB 点(例如2015-04-16T12:00:00Z 5)类似于 SQL 行。

基于这种数据库术语的比较,InfluxDB持续查询 和保留策略类似于 SQL 数据库中的存储过程。它们只需指定一次,然后定期自动执行。

当然,SQL 数据库和 InfluxDB 之间存在一些重大差异。SQLJOIN不适用于 InfluxDB 测量;您的架构设计应该反映出这种差异。而且,正如我们上面提到的,测量就像一个 SQL 表,其中主索引始终预设为时间。InfluxDB 时间戳必须采用 UNIX 纪元 (GMT) 或格式化为在 RFC3339 下有效的日期时间字符串。

有关本节中提到的 InfluxDB 术语的更多详细描述,请参阅我们的术语表。

查询语言

InfluxDB支持多种查询语言:

  • 通量
  • InfluxQL

通量

Flux是一种数据脚本语言,旨在查询、分析和处理时间序列数据。从InfluxDB 1.8.0开始,Flux 可与 InfluxQL 一起用于生产。

对于熟悉InfluxQL的人来说,Flux 旨在解决我们自推出 InfluxDB 1.0 以来收到的许多未完成的功能请求。有关 Flux 和 InfluxQL 之间的比较,请参阅Flux 与 InfluxQL。

Flux 是处理InfluxDB OSS 2.0 和InfluxDB Cloud中数据的主要语言,InfluxDB Cloud 是一种普遍可用的平台即服务 (PaaS),可在多个云服务提供商中使用。将 Flux 与 InfluxDB 1.8+ 结合使用,您可以熟悉 Flux 概念和语法,并轻松过渡到 InfluxDB 2.0。

InfluxQL

InfluxQL 是一种与 InfluxDB 交互的类 SQL 查询语言。它经过精心设计,让来自其他 SQL 或类 SQL 环境的用户感到熟悉,同时还提供特定于存储和分析时间序列数据的功能。然而,InfluxQL 不是 SQL,缺乏对更高级操作(如)的支持UNIONJOIN而SQL 高级用户已经习惯了这些操作。此功能可通过FluxHAVING获得。

InfluxQL的SELECT语句遵循SQL语句的形式SELECT

SELECT <stuff> FROM <measurement_name> WHERE <some_conditions>

其中WHERE是可选的。

要获取上面部分中的 InfluxDB 输出,您需要输入:

SELECT * FROM "foodships"

如果你只想查看行星的数据Saturn,你可以输入:

SELECT * FROM "foodships" WHERE "planet" = 'Saturn'

如果要查看Saturn2015 年 4 月 16 日 12:00:01 UTC 之后的行星数据,请输入:

SELECT * FROM "foodships" WHERE "planet" = 'Saturn' AND time > '2015-04-16 12:00:01'

如上例所示,InfluxQL 允许您在子句中指定查询的时间范围WHERE。您可以使用用单引号括起来的日期时间字符串,其格式为YYYY-MM-DD HH:MM:SS.mmm (mmm是毫秒,是可选的,您还可以指定微秒或纳秒)。您还可以使用相对时间,now()它指的是服务器的当前时间戳:

SELECT * FROM "foodships" WHERE time > now() - 1h

foodships该查询输出度量中时间戳比服务器当前时间减一小时新的数据。指定时间持续时间的选项now()包括:

意义
纳秒纳秒
u 或 µ微秒
多发性硬化症毫秒
s
分钟
时长小时
d

InfluxQL 还支持正则表达式、表达式中的算术、语句SHOW和语句GROUP BY。请参阅我们的数据探索页面,深入了解这些主题。InfluxQL 函数包括COUNT、、、、等等。有关完整列表,请查看函数页面。MINMAXMEDIANDERIVATIVE

现在您已经有了大致的了解,请查看我们的入门指南。

InfluxDB 不是 CRUD

InfluxDB 是一款针对时间序列数据进行了优化的数据库。此类数据通常来自分布式传感器组、大型网站的点击数据或金融交易列表等来源。

这些数据有一个共同点,那就是总体上更有用。如果某个读数显示,你的计算机的 CPU 在周二 UTC 时间 12:38:35 的利用率为 12%,那么很难得出结论。如果将其与该系列的其他数据结合起来并进行可视化,就会变得更加有用。这就是随时间变化的趋势开始显现的地方,并且可以从数据中得出可操作的见解。此外,时间序列数据通常只写入一次,很少更新。

结果是,InfluxDB 不是一个完整的 CRUD 数据库,而更像是一个 CR-ud,优先考虑创建和读取数据的性能而不是更新和销毁,并防止某些更新和销毁行为,以使创建和读取更高性能:

  • 要更新某个点,请插入具有相同测量值、标签集和时间戳的点。
  • 您可以删除一系列数据,但不能根据字段值删除单个数据点。解决方法是,您可以搜索字段值,检索时间,然后根据time字段删除数据。
  • 您目前无法更新或重命名标签 - 请参阅 GitHub 问题#4157了解更多信息。要修改一系列点的标签,请找到具有有问题的标签值的点,将值更改为所需的值,将点写回,然后删除具有旧标签值的系列。
  • 您不能通过标签键(而不是值)删除标签 - 请参阅 GitHub 问题#8604。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/905837.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

linux命令行的艺术

文章目录 前言基础日常使用文件及数据处理系统调试单行脚本冷门但有用仅限 OS X 系统仅限 Windows 系统在 Windows 下获取 Unix 工具实用 Windows 命令行工具Cygwin 技巧 更多资源免责声明 熟练使用命令行是一种常常被忽视&#xff0c;或被认为难以掌握的技能&#xff0c;但实际…

Puppeteer 与浏览器版本兼容性:自动化测试的最佳实践

Puppeteer 支持的浏览器版本映射&#xff1a;从 v20.0.0 到 v23.6.0 自 Puppeteer v20.0.0 起&#xff0c;这个强大的自动化库开始支持与 Chrome 浏览器的无头模式和有头模式共享相同代码路径&#xff0c;为自动化测试带来了更多便利。从 v23.0.0 开始&#xff0c;Puppeteer 进…

知识管理新选择!本地大模型助手“知我AI”全功能解析

抖知书老师推荐&#xff1a; 随着人工智能技术的飞速发展&#xff0c;本地大模型知识管理工具逐渐成为提高工作效率的利器。今天&#xff0c;我要向大家介绍一款名为**“知我AI”**的本地知识管理助手&#xff0c;它以其独特的功能和优势&#xff0c;正在成为众多专业人士的新…

Banana Pi BPI-R3路由器开发板运行 OrayOS物联网系统

近日&#xff0c;Banana PI开发板宣布与贝锐达成战略合作&#xff0c;贝锐OrayOS现已成功适配Banana PI的BPI-R3型号&#xff0c;并计划进一步扩展硬件支持&#xff0c;包括目前Banana PI热销的BPI-R4、BPI-R3 Mini等更多型号。这一合作为用户提供了更广泛的开发板选择&#xf…

No.24 笔记 | WEB安全 - 任意文件包含漏洞 part 6

在 Web 安全领域中&#xff0c;任意文件包含漏洞是一种较为常见且具有潜在危险性的漏洞类型。本文将详细介绍任意文件包含漏洞的概念、原理、分类、利用方法以及防护措施&#xff0c;帮助新手小白更好地理解和防范这一漏洞。&#x1f603; 一、概念 包含的定义 开发人员为了提…

森利威尔SL2516D 耐压60V内置5V功率MOS 支持PWM LED恒流驱动器芯片

一、基本特性 型号&#xff1a;SL2516D封装&#xff1a;ESOP8工作频率&#xff1a;140kHz驱动MOS管&#xff1a;内置 二、电气特性 输入电压范围&#xff1a;8V~100V&#xff08;注意&#xff0c;虽然问题中提到耐压60V&#xff0c;但根据官方信息&#xff0c;其实际耐压范围…

Vscode配置CC++编程环境的使用体验优化和补充说明

文章目录 快速编译运行&#x1f47a;code runner插件方案Code Runner Configuration 直接配置 相关指令和快捷键默认task配置和取消默认 配置文件补充介绍(可选 推荐阅读)&#x1f60a;使用vscode预置变量和环境变量环境变量的使用使用环境变量的好处环境变量可能引起的问题 检…

Linux中rpm包和yum仓库介绍及入门配置

rpm包概述 RPM Package Manager,RPM包管理器 由红帽公司提出&#xff0c;适用于Rocky Linux、Redhat、SUSE等系列操作系统 建立集中数据库&#xff0c;记录软件包安装/卸载等变化信息&#xff0c;分析软件包依赖关系 RPM包 文件名特征 软件名-版本信息.操作系统.硬件架/构.r…

L 波段射频信号采集回放系统

L 波段采集回放系统是一套便携式模拟数字采集系统&#xff0c;该系统主要由射频输入模块、中频接收回放模块、FPGA 信号处理单元、服务器系统和存储单元等组成。 L 波段采集回放系统的功能主要用于对 950MHz〜2150MHz 模拟量射频信号的采集、存储记录与回放&#xff1b;采集与…

百度如何打造AI原生研发新范式?

&#x1f449;点击即可下载《百度AI原生研发新范式实践》资料 2024年10月23-25日&#xff0c;2024 NJSD技术盛典暨第十届NJSD软件开发者大会、第八届IAS互联网架构大会在南京召开。本届大会邀请了工业界和学术界的专家&#xff0c;优秀的工程师和产品经理&#xff0c;以及其它行…

Unity3D 开发教程:从入门到精通

Unity3D 开发教程&#xff1a;从入门到精通 Unity3D 是一款强大的跨平台游戏引擎&#xff0c;广泛应用于游戏开发、虚拟现实、增强现实等领域。本文将详细介绍 Unity3D 的基本概念、开发流程以及一些高级技巧&#xff0c;帮助你从零基础到掌握 Unity3D 开发。 目录 Unity3D…

Vue3和Springboot前后端简单部署

一、Vue3Springboot 的前后端简单部署 (在win下面部署) 1、前端实现部署 思想: 前端打包项目后、放到nginx中进行部署 1、nginx 安装 和 解压 1、下载 nginx.zip win版本 解压就可以 2、解压后、启动程序 3、访问 nginx 欢迎页面 http://localhost/ 80 端口 可以省略 直接访…

中仕公考:2025四川省考今日报名!

2025年四川省考今日开始报名啦&#xff01;准备参加考试的广大考生们不要错过报名时间哦&#xff01; 报名时间&#xff1a; 2024年11月1日至7日上午8:00 资格审查&#xff1a; 2024年11月1日至8日上午8:00 确认缴费&#xff1a; 2024年11月9日上午8:00 准考证打印&#xff…

css 同时实现渐变色和文字阴影(Vue 3 + TypeScript)

UI效果 渐变效果 直接添加text-shadow属性&#xff0c;发现阴影覆盖在了字体之上 解决&#xff1a; 利用::after伪类&#xff0c;将字体的阴影加在伪类之上。 <template><div class"app"><h1 ref"h1Ref">{{ title }}</h1></d…

从美颜SDK到实时视频美颜平台:开发美颜系统的技术解析

今天&#xff0c;笔者将围绕美颜SDK的基本功能、实时视频美颜平台的架构设计&#xff0c;以及实现美颜系统的关键技术进行深入解析。 一、美颜SDK的基础功能 美颜SDK&#xff08;Software Development Kit&#xff09;是实现美颜效果的核心工具包&#xff0c;它通常包含一系列…

【Linux】用户权限管理:创建受限用户并配置特定目录访问权限

本文详细介绍了如何在 Linux 系统中创建一个名为 agent 的新用户&#xff0c;并限制其在特定目录下的权限。通过使用 useradd 命令创建用户&#xff0c;并使用 usermod 命令将新用户添加到现有用户组中&#xff0c;确保其具有适当的权限。接着&#xff0c;通过 chown 和 chmod …

获英伟达二次投资!AI制药公司Terray完成1.2亿美元融资,构建全球最大化学数据集

近日&#xff0c;AI 制药公司 Terray Therapeutics 宣布完成 1.2 亿美元 B 轮融资&#xff0c;本轮融资将用于推进其内部免疫学项目的临床试验&#xff0c;并进一步完善公司的生成式 AI 平台 tNova。 据悉&#xff0c;本次 Terray 的融资由英伟达风险投资部门 NVentures 和新投…

LeetCode 热题 100之二叉树

1.二叉树的中序遍历 思路分析1&#xff08;递归&#xff09;&#xff1a;通过一个辅助函数 inorderHelper&#xff0c;递归地访问左子树、根节点和右子树&#xff0c;实现中序遍历。 具体实现代码&#xff08;详解版&#xff09;&#xff1a; class Solution { public:void i…

LLC电路 - 变压器匝比改变时的连锁反应

1.谐振电路等效电阻Rac 等效电阻从负载一侧映射过来&#xff0c;假定负载电阻为R&#xff0c;功率计算公式为U_out^2/R&#xff0c;则理想变压器因为Uin N*Uout&#xff0c;所以等效电阻的阻值变化是平方关系&#xff1a;Rref K*R*N^2.具体的计算公式为&#xff1a; Vp为变压…

Podman+Minikube:MacBook 运行 Kubernetes 最佳实践

简介 在现代软件开发中&#xff0c;Kubernetes作为容器编排的事实标准&#xff0c;已成为云原生应用的核心组成部分。对于开发者来说&#xff0c;在本地环境中搭建和测试Kubernetes集群显得尤为重要。而在这方面&#xff0c;结合MacBook、Podman和Minikube的组合&#xff0c;提…