소스 검색

TDegnine流计算

master
qdjjx 5 년 전
부모
커밋
0e8ca8f4b4
3개의 변경된 파일60개의 추가작업 그리고 5개의 파일을 삭제
  1. 5
    5
      实践/数据库/TDengine入门.md
  2. 55
    0
      实践/数据库/TDengine连续查询统计数据.md
  3. BIN
      实践/数据库/imgs/sliding.png

+ 5
- 5
实践/数据库/TDengine入门.md 파일 보기

@@ -105,14 +105,14 @@ INSERT INTO tb1_name (tb1_field1_name,...) VALUES(field1_value1,...)(field1_valu
105 105
 
106 106
 注意:
107 107
 
108
-- 对于同一张表,记录的时间戳必须是递增,否则会跳过插入该条记录;如果时间为0,会默认使用服务器当前时间作为时间戳
108
+- 对于同一张表,记录的时间戳必须是递增,否则会跳过插入该条记录;如果时间为0,会默认使用服务器当前时间作为时间戳
109 109
 - 如果需要将时间戳小于最后一条记录时间的记录写入到数据库,可以使用IMPORT命令替代INSERT命令,语法是一样的;如果同时IMPORT多条记录,需要保证一批记录是按时间戳排序好的
110 110
 
111 111
 # 数据查询
112 112
 
113 113
 ```
114 114
 SELECT {* | expr_list} FROM tb_name
115
-    [WHERRE wehre_condition]
115
+    [WHERRE where_condition]
116 116
     [ORDER BY _c0 {DESC | ASC}]
117 117
     [LIMIT limit, [, OFFSET offset]]
118 118
     [>> export_file]
@@ -336,7 +336,7 @@ create table t1 using thermometer tags ('beijing', 10)
336 336
 
337 337
 > 超级表管理
338 338
 
339
-- 创建超级表:`CREATE TABLE <stable_name> (<field_name> TIMESTAMP, field_name1 field_type,...) TAGS (tag_name tag_type)`,TAGS的总长度不能超过512字节,数据类型不能是timestamp和nchar,不能与其它列名想听,不能为预留关键字
339
+- 创建超级表:`CREATE TABLE <stable_name> (<field_name> TIMESTAMP, field_name1 field_type,...) TAGS (tag_name tag_type)`,TAGS的总长度不能超过512字节,数据类型不能是timestamp和nchar,不能与其它列名相同,不能为预留关键字
340 340
 - 显示已创建的超级表:`show stables;`
341 341
 - 删除超级表:`DROP TABLE <stable_name>`,删除超级表的前提要求先删除所有的子表
342 342
 - 查看属于某个超级表并满足条件的子表:`SELECT TBNAME,[TAG_NAME,…] FROM <stable_name> WHERE <tag_name> <[=|=<|>=|<>] values..> ([AND|OR] …)`
@@ -344,7 +344,7 @@ create table t1 using thermometer tags ('beijing', 10)
344 344
   
345 345
 > 写数据时自动创建子表
346 346
 
347
-当定义好了超级表,在写数据的时候并不知道某个设备是否存在,可以采用自动创建子表,需要注意的是超级表是不能创建的。
347
+当定义好了超级表,在写数据的时候并不知道某个设备是否存在,可以采用自动创建子表,需要注意的是超级表是不能自动创建的。
348 348
 
349 349
 ```
350 350
 INSERT INTO <tb_name> USING <stb_name> TAGS (<tag1_value>,...) VALUES (field_value,...)(field_value,...)...
@@ -433,7 +433,7 @@ GROUPBY location,type
433 433
 - 定义时间窗口的大小interval,每次前向增量时间forward sliding times
434 434
 - 使用TAOS SQL定义
435 435
 - 采用时间驱动的模式
436
-- 原始采集数据进行采样down sampling
436
+- 原始采集数据进行采样down sampling
437 437
 - 不同于其它流式计算实时反馈结果,连续查询只在时间窗口关闭以后才计算反馈结果。比如时间窗口周期是1天,那么反馈结果是在23:59:59秒以后才生成反馈结果
438 438
 - 反馈的结果有一个时间区间,如果此时有历史记录再写入到这个时间区间,连续查询不会重新执行,不会重新将结果推送给用户,不会更新已存在的计算结果
439 439
 - 服务端并不缓存客户端的计算状态,如果应用端崩溃,再次拉起的连续查询将只会从最接近的时间窗口开始计算;如果使用写回模式,TDengine可以确保写回的有效性和连续性。

+ 55
- 0
实践/数据库/TDengine连续查询统计数据.md 파일 보기

@@ -0,0 +1,55 @@
1
+# 场景或需求
2
+
3
+- 选择年:展示12个月的数据 → 按月统计
4
+- 选择年、月:展示这个月所有天的数据 → 按天统计
5
+- 选择年、月、天:展示24小时的数据 → 按小时统计
6
+- 选择年、月、天、小时:展示60分钟的数据 → 按分钟统计
7
+- 选择当天: 展示24小时的数据 → 按小时统计
8
+- 选择当周: 展示本周7天的数据  → 按天统计
9
+- 选择当月:展示这个月所有天的数据 → 按天统计
10
+- 选择当年:展示12个月的数据 → 按月统计
11
+
12
+现在时序数据库的表包含:`real`,`warning`,`dl`,`kg`,由于这些表每隔几秒存入数据,如果想获得按小时、按天、按月、按年的数据库,不可能直接从这些表中实时计算而获得,而是让时序数据库自动按小时、按天、按月、按年统计数据,比如形成`realtj`,`warningtj`,`dltj`,`kgtj`类似的统计表,然后从这些统计表中获取数据。
13
+
14
+# 怎么实现
15
+
16
+`TDegnine`提供了一种高级功能叫`Continus Query连续查询`,通过`滑动窗口`来统计数据。什么叫`滑动窗口`?
17
+
18
+`滑动窗口`大致有一个interval属性和forward sliding times. interval理解成时间间隔或者步长,就是每次统计多长时间段内的数据。forward sliding times理解成频率,每隔多长时间实时计算一次。
19
+
20
+![](./imgs/sliding.png)
21
+
22
+# 问题
23
+
24
+现在目标是,把实时数据通过连续查询保存到另外创建的表。
25
+
26
+- 怎么对超级表/子表进行连续查询?
27
+- 怎么把连续查询的数据放入新的超级表/子表?
28
+
29
+# 复习关于超级表和子表的常规操作
30
+
31
+```
32
+创建数据库:create database liqun_nuode_1_1
33
+删除数据库:drop database liqun_nuiode_1_1
34
+查看所有数据库: show databases
35
+创建超级表:create table liqun_nuode_1_1.superreal (ts timestamp,...) tags (mac binary(20))
36
+创建子表:create table liqun_nuode_1_1.real using liqun_nuode_1_1.superreal tags ('187ED5316058','1')
37
+子表插入数据:insert into liqun_nuode_1_1.real using liqun_nuode_1_1.superreal tags ('187ED5316058') values ()()
38
+查找某个子表: select * from liqun_nuode_1_1.real where mac=`187ED5316058`
39
+```
40
+
41
+# 连续查询语句尝试
42
+
43
+```
44
+1、创建关于统计的超级表:create table liqun_nuode_1_1.superrealtj (ts timestamp, aal float, aam float, aah float, avl float, avm float, avh float, awl float, awm float, awh float, atl float, atm float, ath float, aldl float, aldm float, aldh float, bal float, bam float, bah float, bvl float, bvm float, bvh float, bwl float, bwm float, bwh float, btl float, btm float, bth float, bldl float, bldm float, bldh float, cal float, cam float, cah float, cvl float, cvm float, cvh float, cwl float, cwm float, cwh float, ctl float, ctm float, cth float, cldl float, cldm float, cldh float, nal float, nam float, nah float, ntl float, ntm float, nth float, nldl float, nldm float, nldh float) tags (mac binary(20), addr binary(5))
45
+
46
+2、定义把实时查询数据放入统计子表,并创建子表:create table liqun_nuode_1_1.realtj using liqun_nuode_1_1.superrealtj tags ('187ED5316058','1') as select MIN(aa), AVG(aa), MAX(aa), MIN(av), AVG(av), MAX(av), MIN(aw), AVG(aw), MAX(aw), MIN(at), AVG(at), MAX(at), MIN(ald) AVG(ald), MAX(ald), MIN(ba), AVG(ba), MAX(ba), MIN(bv), AVG(bv), MAX(bv), MIN(bw), AVG(bw), MAX(bw), MIN(bt), AVG(bt), MAX(bt), MIN(bld), AVG(bld), MAX(bld), MIN(ca), AVG(ca), MAX(ca), MIN(cv), AVG(cv), MAX(cv), MIN(cw), AVG(cw), MAX(cw), MIN(ct), AVG(ct), MAX(ct), MIN(cld), AVG(cld), MAX(cld), MIN(na), AVG(na), MAX(na), MIN(nt), AVG(nt), MAX(nt), MIN(nld), AVG(nld), MAX(nld) from liqun_nuode_1_1.superreal where mac='187ED5316058' and addr='1' INTERVAL(1M)
47
+
48
+(a表示毫秒,s表示秒,m表示分钟,h表示小时,d表示天,w表示周,n表示月,y表示年)
49
+
50
+3、查看:show streams
51
+4、删除:kill stream
52
+
53
+5、查询:select * from liqun_nuode_1_1.superrealtj where '2018-06-01 08:00:00.000' AND ts <= '2018-06-02 08:00:00.000' AND mac='187ED5316058' AND adrr='1'
54
+
55
+```

BIN
实践/数据库/imgs/sliding.png 파일 보기


Loading…
취소
저장