一、时序引擎介绍
开务数据库时序引擎是一款功能丰富、高性能的时序引擎,专为物联网、工业互联网、数字能源、金融等场景设计并优化。它能让大量设备、数据采集器每天产生的高达 TB 甚至 PB 级的数据得到高效实时的处理,对业务的运行状态进行实时的监测、预警,从大数据中挖掘出商业价值。
随着我国工业和信息化的发展,系统所需处理的数据量也越来越大,传统的数据库已经无法满足时序数据的高速写入和高并发的查询分析需求。基于传统关系型数据库或大数据平台发展而来的时序引擎,或性能不佳、或运维管理复杂、或 SQL 支持不足,无法满足我国工业信息化的需求。
开务数据库时序引擎使用“就地运算”等技术,具备高速、易用及易运维等特性,满足海量、高并发的时序数据写入及快速查询和复杂查询的需求。
二、时序引擎功能
数据查询:数据查询是开务数据库时序引擎的基础功能。创建数据库后,用户可以通过 SELECT 执行查询操作,子句支持 LAST/SINCE/BETWEEN/FILTER BY SAMPLE/WHERE/GROUP BY/HAVING/ORDER BY/LIMIT 等常见语法。
交叉链接分析:交叉链接分析在数据分析中非常强大,许多有用的信息是通过查找和构建实体之间的链接或关联来发现的,通常用于分析两个变量之间的关系。
空间索引:提供 Geohash 算法实现空间索引,空间索引的建立可满足依据空间位置来进行查询的需求;工业互联网、车联网等诸多场景均需使用到空间位置分析。
树形分析:支持提供树形;在某些数据分析情况下,它提供了一种比使用分析表对象更有效的计算方式。
集群部署:支持集群部署,适用于大数据分析和边缘计算应用的高性能平台;采用高效的映射/缩减架构来处理分布在不同开务数据库上的数据。
支持协议:支持 MySQL 协议,对应用更加友好,充分降低从 MySQL 数据库迁移到开务数据库的成本。
支持多种函数:支持主要函数类型和自定义函数,包括聚合函数、日期函数、数学函数、空间函数、字符串函数等实用函数;也支持在表对象的查询语句中使用用户定义的函数,解决用户在生产中遇到的已有函数或功能无法解决的问题。
外部接口:开务数据库时序引擎支持 Spark 和 Http 两种外部接口访问数据库,可支持数据库外部集成需求或通过其他方式对外部进行访问。
三、时序引擎优势
-
支持每秒百万级别的单/多指标写入,可增加随时间变化而产生的数据集。
-
时序引擎的时间序列查询速度相较于传统关系数据库,提升了 10-500 倍。
-
为不同用户配置不同权限,对接入时序引擎用户进行身份认证。
-
数据压缩无需解压缩即可使用,降本增效,数据压缩比为 1:7~1:10。
-
支持 SQL 语法、类 SQL 语法、SQL 写入、多开发语言、多协议兼容。
-
集群部署适用于大数据分析和边缘计算应用程序的高性能平台。
四、时序引擎架构
开务数据库时序引擎能够有效地且主要用于处理庞大且统一的带时间标签实时数据。产品具有实时本地运算、串行流式数据实时运算等核心技术,支持云边端协同架构的超融合时序引擎产品,助力物联网、工业互联网、交通车联网、数字能源等多个领域或行业数字化建设。
五、时序引擎实例演练
1、支持第三方工具进行连接
2、兼容大部分 MySQL 语法
指令编号 |
指令名称 |
测试SQL |
1 |
新建连接 |
mysql -P 3306 -h 10.58.96.86 -u root -p |
2 |
创建用户 |
create user test_user identified by 'Kkb5Ys3Gq!u2#45Q'; |
3 |
用户授权 |
GRANT ALTER,CLUSTER,CREATE,DELETE,DROP,FILE,INSERT,UPDATE on *.* TO test_user; |
4 |
修改密码 |
set password for test_user = "Llc6Zt4Hr!v3#56R"; |
5 |
创建新库 |
create database test_db; |
6 |
切换新库 |
use test_db; |
7 |
创建新表 |
CREATE DEFAULT TABLE test_table (ts datetime64, device_id int, device_name varchar(20)); |
8 |
插入数据 |
INSERT INTO test_table VALUES ('2022-10-24 18:00:01', 1, 'device_name1'),('2022-10-24 18:00:02', 2, 'device_name2'), ('2022-10-24 18:00:03', 3,'device_name3'); |
9 |
查询数据 |
select * from test_table; |
10 |
删除数据 |
delete from test_table where device_id=3; |
11 |
查询数据 |
select * from test_table; |
12 |
更新数据 |
update test_table set device_name='modify2' where device_id=2; |
13 |
查询数据 |
select * from test_table; |
14 |
导出数据 |
mysql -P 3306 -h 10.58.96.86 -s -N -D test_db -e "select*from test_table" | sed "s/'/\'/g;s/\"/\"\"/g;s/\t/\",\"/g;s/^/\"/;s/$/\"/;s/\n//g" > test_table.csv |
15 |
高速导入 |
(echo -e "csv\x01test_db.test_table" ; cat test_table.csv) > /dev/tcp/127.0.0.1/9091 |
16 |
LOAD导入数据 |
LOAD DATA INFILE "test_table.csv" INTO TABLE test_table fields TERMINATED BY ',' ; |
17 |
删除新表 |
drop table test_table; |
18 |
查询新表 |
show tables; |
19 |
删除用户 |
drop user test_user; |
20 |
查询用户 |
select user from information_schema.users; |
注意:使用 LOAD 语句批量导入 CSV 文件之前,要在通过 docker 启动时序引擎时配置 CSV 文件的目录,否则导入会失败。
更详细的实操演练可以滑至 10分38秒 观看老师的详细讲解哦,欢迎关注我们,后续会为大家呈现更多硬核干货!
END