【클릭 하우스】 클릭 하우스 라이브 뷰

여기에 사진 설명 삽입

1. 개요

재판 : 클릭 하우스 라이브 뷰

Live view 是一种特殊的视图,不属于表引擎,作用类似于事件监听器,能够将一条SQL查询结果作为监控目标,当目标增加 Live view 可以及时作出响应。

데이터 분석 분야에서 분석가는 종종 이동 평균 (MA)을 사용합니다. 이동 평균은 데이터 시리즈를 매끄럽게하고 장기 추세를 결정하는 데 도움이됩니다. 새로운 라이브 뷰 기능
은 ClickHouse에 实时计算功能(실시간) 을 가져 오기 시작했습니다 .

라이브 뷰 테이블의 응용 프로그램 중 하나는 실시간 표시기의 실시간 계산입니다. 이벤트 데이터 스트림의 예로는 IoT 센서의 데이터, 증권 거래소의 가격 변동 또는 프로덕션 서버의 특정 모니터링 지표가 있습니다.

ClickHouse는 이러한 모든 데이터를 우수한 압축률로 저장하고 우수한 분석 쿼리 성능을 제공 할 수 있습니다.

버전 진화 :

19.14 版本提供 Live view 视图
20.1.2.4 版本提供实时移动平均功能
 

관련 매개 변수 :

Clickhouse> select name ,value,changed,min,max,readonly,type from system.settings where name like '%live_view%';
 
SELECT 
    name, 
    value, 
    changed, 
    min, 
    max, 
    readonly, 
    type
FROM system.settings
WHERE name LIKE '%live_view%'
 
┌─name───────────────────────────────────────┬─value─┬─changed─┬─min──┬─max──┬─readonly─┬─type───────────┐
│ allow_experimental_live_view               │ 00 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │        0 │ SettingBool    │
│ live_view_heartbeat_interval               │ 150 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │        0 │ SettingSeconds │
│ max_live_view_insert_blocks_before_refresh │ 640 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │        0 │ SettingUInt64  │
│ temporary_live_view_timeout                │ 50 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │        0 │ SettingSeconds │
└────────────────────────────────────────────┴───────┴─────────┴──────┴──────┴──────────┴────────────────┘
 
4 rows in set. Elapsed: 0.018 sec. 

라이브 뷰 스틸 实验功能(실험 기능)은 매개 변수를 켜야합니다 allow_experimental_live_view:
수동 설정 :

Clickhouse> set allow_experimental_live_view=1;
 
SET allow_experimental_live_view = 1
 
Ok.
 
0 rows in set. Elapsed: 0.001 sec. 
 
Clickhouse> select name ,value,changed,min,max,readonly,type from system.settings where name like '%live_view%';
 
 
 
┌─name───────────────────────────────────────┬─value─┬─changed─┬─min──┬─max──┬─readonly─┬─type───────────┐
│ allow_experimental_live_view               │ 11 │ ᴺᵁᴸᴸ │ ᴺᵁᴸᴸ │        0 │ SettingBool    │
 .........
└────────────────────────────────────────────┴───────┴─────────┴──────┴──────┴──────────┴────────────────┘
 
4 rows in set. Elapsed: 0.006 sec. 

간단한 예 :

Clickhouse> create table t_lv(id UInt64)engine=Log;
 
CREATE TABLE t_lv
(
    `id` UInt64
)
ENGINE = Log
 
Ok.
 
0 rows in set. Elapsed: 0.011 sec. 
 
Clickhouse> create live view lv_count as select count(1) from t_lv;
 
CREATE LIVE VIEW lv_count AS
SELECT count(1)
FROM t_lv
 
Ok.
 
0 rows in set. Elapsed: 0.015 sec. 
 
Clickhouse> watch lv_count;
 
WATCH lv_count
 
┌─count(1)─┬─_version─┐
│        01 │
└──────────┴──────────┘

라이브 뷰가 모니터링 모드로 들어갑니다. 다른 클라이언트에서 데이터 삽입 작업을 수행 할 수 있습니다.

Clickhouse> insert into t_lv select rand() from numbers(10);
 
┌─count(1)─┬─_version─┐
│       102 │
└──────────┴──────────┘
 

이동 평균 계산의 예 :

Clickhouse> create table t_events(id UInt64,create_time datetime default now())ENGINE = Memory;
 
 
Clickhouse> select sum(id)/10 from(select * from t_events order by create_time desc limit 10);
 

테스트 데이터 삽입 :

Clickhouse> INSERT INTO t_events VALUES (1,now()-9), (2,now()-8), (3,now()-7), (4,now()-6), (5,now()-5), (6,now()-4), (7,now()-3), (8,now()-2), (9,now()-1), (10,now());

평균 계산 :

Clickhouse> select sum(id)/10 from(select * from t_events order by create_time desc limit 10);
 
SELECT sum(id) / 10
FROM 
(
    SELECT *
    FROM t_events
    ORDER BY create_time DESC
    LIMIT 10
)
 
┌─divide(sum(id), 10)─┐
│                 5.5 │
└─────────────────────┘
 
1 rows in set. Elapsed: 0.013 sec.
 
Clickhouse> CREATE LIVE VIEW latest_10 as select sum(id)/10 from(select * from t_events order by create_time desc limit 10);
 
 
Clickhouse> select * from latest_10;
 
SELECT *
FROM latest_10
 
┌─divide(sum(id), 10)─┐
│                 5.5 │
└─────────────────────┘
 
1 rows in set. Elapsed: 0.007 sec. 

— 최근 10 개 데이터의 평균을 보려면 새 레코드를 삽입하십시오.

Clickhouse> select * from t_events;
 
SELECT *
FROM t_events
 
┌─id─┬─────────create_time─┐
│  12020-06-15 15:17:21 │
│  22020-06-15 15:17:22 │
│  32020-06-15 15:17:23 │
│  42020-06-15 15:17:24 │
│  52020-06-15 15:17:25 │
│  62020-06-15 15:17:26 │
│  72020-06-15 15:17:27 │
│  82020-06-15 15:17:28 │
│  92020-06-15 15:17:29 │
│ 102020-06-15 15:17:30 │
└────┴─────────────────────┘
┌─id─┬─────────create_time─┐
│ 112020-06-15 15:21:17 │
└────┴─────────────────────┘
 
11 rows in set. Elapsed: 0.004 sec. 
 
Clickhouse> select * from latest_10;
 
SELECT *
FROM latest_10
 
┌─divide(sum(id), 10)─┐
│                 6.5 │
└─────────────────────┘
 
1 rows in set. Elapsed: 0.008 sec. 
 
 
sum([2, 3, 4, 5, 6, 7, 8, 9, 10, 1])/10 = 5.5
sum([2, 3, 4, 5, 6, 7, 8, 9, 10, 11])/10 = 6.5

추천

출처blog.csdn.net/qq_21383435/article/details/113536369