全部產品
Search
文件中心

Lindorm:訪問AP模式列存表

更新時間:Jan 29, 2026

Lindorm計算引擎OLAP資源群組支援訪問湖模式列存資料、AP模式列存資料和寬表引擎資料三種資料來源。本文主要介紹如何建立AP模式列存表。

根據資料的儲存方式,可以分為主鍵表和明細表兩種類型:

  • 明細表:保留所有匯入記錄,允許主鍵重複。使用者可完整查詢歷史資料,每條記錄與未經處理資料一一對應。

  • 主鍵表:強制主鍵唯一性限制式,禁止重複主鍵。新匯入資料會覆蓋相同主鍵的舊記錄,確保每個主鍵僅存最新版本。

建立明細表

僅需在CREATE TABLE語句中定義列和列的資料類型,即可建立一張表。

CREATE TABLE user_access (
    uid int,
    name varchar(64),
    age int, 
    phone varchar(16),
    last_access datetime,
    credits double
)
ORDER BY (uid, name);

在上述建表示例中,建立的是明細表,該表的資料不具有任何約束,允許主鍵重複(即相同資料行可能多次出現)。同時,指定前兩列為排序列,構成排序鍵;資料按此排序鍵排序後儲存,可顯著提升查詢時的索引效率,實現快速資料檢索。

建立主鍵表

主鍵表的核心優勢是支援即時資料更新和高效複雜即席查詢,在即時分析業務中採用主鍵表,能即時處理最新資料指導決策,消除 T+1 資料延遲限制。只需在CREATE TABLE語句中使用PRIMARY KEY 定義主鍵,即可建立主鍵表。

CREATE TABLE orders1 (
    order_id bigint NOT NULL,
    dt date NOT NULL,
    user_id INT NOT NULL,
    good_id INT NOT NULL,
    cnt int NOT NULL,
    revenue int NOT NULL
)
PRIMARY KEY (order_id)
DISTRIBUTED BY HASH (order_id)
;

主鍵表僅支援雜湊分桶策略,建表時必須通過 DISTRIBUTED BY HASH() 指定雜湊分桶鍵。

實際業務中,通常會結合資料分布、排序鍵等功能提升查詢效率與資料管理能力。主鍵表將主鍵與排序鍵解耦,使用者可根據高頻查詢條件靈活設計排序鍵。例如經常按訂單日期(dt)和商戶ID(merchant_id)查詢銷售資料時,可通過 ORDER BY (dt,merchant_id) 設定排序鍵,顯著提升範圍查詢效率。

資料分布

建表時,使用者可以通過設定合理的分區和分桶,實現資料均勻分布和查詢效能提升。資料均勻分布是指資料按照一定規則劃分為子集,並且均衡地分布在不同節點上。查詢時能夠有效裁剪資料掃描量,最大限度地利用叢集的並發效能,從而提升查詢效能。

分區

分區用於將資料劃分成不同的區間,主要作用是將一張表按照分區鍵拆分成不同的嵌入式管理單元。

建表時使用PARTITION BY子句指定,支援指定按一個或多個列的值分區,或者基於運算式計算結果的分區。

分桶

一個分區按分桶方式被分成了多個桶(bucket),每個桶的資料稱之為一個 tablet。

分桶方式:支援隨機分桶和雜湊分桶。通過建表時使用DISTRIBUTED BY來指定。

  • 隨機分桶:建表或新增分區時無需設定分桶鍵。在同一分區內,資料隨機分布到不同的分桶中。

  • 雜湊分桶:建表和新增分區時需要指定分桶鍵。在同一分區內,資料按照分桶鍵劃分分桶後,所有分桶鍵的值相同的行會唯一分配到對應的一個分桶。

分桶數量預設由系統自動設定,無需手動設定。

使用樣本

CREATE TABLE t_recharge_detail1 (
    id bigint,
    user_id bigint,
    recharge_money decimal(32,2), 
    city varchar(20) not null,
    dt varchar(20) not null
)
DUPLICATE KEY(id)
PARTITION BY dt,city
DISTRIBUTED BY HASH(`id`);

上述建表語句說明了按(日期、城市)對錶進行分區,然後按 id 列進行雜湊分桶。