文章目錄
資料字典建立
一、簡單介紹
二、字典建立
資料字典建立
一、簡單介紹
資料字典是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 原創
- 📢停下休息的時候不要忘了别人還在奔跑,希望大家抓緊時間學習,全力奔赴更美好的生活✨