天天看點

大資料ClickHouse進階(十六):資料字典建立

大資料ClickHouse進階(十六):資料字典建立

文章目錄

​​資料字典建立​​

​​一、簡單介紹​​

​​二、字典建立​​

資料字典建立

一、簡單介紹

資料字典是ClickHouse提供一種非常簡單、實用的存儲媒介,他以鍵值和屬性映射的形式定義資料。字典中的資料會主動或者被動加載到記憶體并支援動态更新。由于字典資料常駐記憶體的特性,是以非常适合儲存常量或經常使用的次元表資料,以避免不必要的JOIN查詢。

資料字典分為内置與擴充兩種形式,内置字典是ClickHouse預設自帶的字典,外部字典是使用者通過自定義配置實作的字典。ClickHouse目前隻有一種内置字典:Yandex.Metrica字典,這個字典是ClickHouse自家産品上的字典,設計目的是快速存取地理資料,但是ClickHouse沒有将地理資料公布出來,内置字典預設是禁用狀态,想要使用内置字典還需要模拟資料然後開啟,功能十分有限。在使用ClickHouse 字典時,外部擴充字典才是更加常用的功能。

在正常情況下,字典中的資料隻能通過字典函數通路,ClickHouse設定了一類字典函數,專門用于字典資料的取用。我們也可以通過字典表将字典資料挂載到一張代理的資料表下,進而通路字典中的資料,也可以實作資料表與字典資料的join查詢。

二、字典建立

#建立新的庫并使用
create database dic_test_db;
use dic_test_db;

#建立普通MergeTree表,描述地理位置表
CREATE TABLE loc_info(
uuid String,
local_id UInt64,
local_name String
)engine=MergeTree()
order by uuid;

#建立 資料字典表
CREATE DICTIONARY dic_loc_info(
local_id UInt64,
local_name String
)PRIMARY KEY local_id
SOURCE(ClickHouse(
  HOST 'node1'
  PORT 9000
  USER 'default'
  TABLE 'loc_info'
  PASSWORD ''
  DB 'dic_test_db'
  ))
LIFETIME (MIN 1 MAX 10)
LAYOUT(HASHED());
注意:以上建立字典表的參數解釋如下:
HOST:指定ClickHouse節點名稱
PORT:指定ClickHouse端口,預設9000
USER:連接配接ClickHouse使用者名
PASSWORD:連接配接ClickHouse使用者名對應密碼
TABLE:此字典表映射的表名,字典表中的列名與映射表中列名一緻。
DB:字典表映射表所在的庫
LIFETIME:字典的自動更新頻率
LAYOUT:字典的類型,決定了資料在記憶體中以何種結構組織和存儲。目前擴充字典共擁有7種類型。

#建立普通使用者表
CREATE TABLE person_info(
person_id String,
name String,
age UInt8,
loc_id UInt64
)engine=MergeTree()
order by person_id;

#向表loc_info中插入以下資料:
insert into loc_info values ('uuid1',100,'北京'),('uuid2',101,'上海'),('uuid3',102,'廣州');

#向表 person_info中插入以下資料:
insert into person_info values ('1','張三',18,102),('2','李四',19,101),('1','王五',20,100);      
  • 📢歡迎點贊 👍 收藏 ⭐留言 📝 如有錯誤敬請指正!
  • 📢本文由 Lansonli 原創
  • 📢停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨

繼續閱讀