全部產品
Search
文件中心

Realtime Compute for Apache Flink:日誌表

更新時間:Aug 11, 2026

本文將介紹Fluss的日誌表。

基本概念

日誌表(Log Table)是 Fluss 中的一種表類型,用於按照資料寫入的順序儲存資料。日誌表僅支援追加記錄,不支援更新或刪除操作。通常情況下,日誌表用於儲存高輸送量的日誌資料,類似於 Apache Kafka 的典型應用情境。

日誌表是通過在 CREATE TABLE 語句中不指定PRIMARY KEY子句來建立的。例如,以下 Flink SQL 陳述式將建立一個包含 3 個分桶的日誌表。

CREATE TABLE log_table (
  order_id BIGINT,
  item_id BIGINT,
  amount INT,
  address STRING
)
WITH ('bucket.num' = '3')
;

其中,'bucket.num' 應該為一個大於 0 的整數。如果不填該值,則系統將採用叢集的預設值(1)作為該表的分桶數量。

桶分配策略

分桶(Bucketing)是 Fluss 中實現並行化和可擴充性的基本單元。Fluss 中的單個表會被劃分為多個桶,每個桶是讀寫操作的最小儲存單位。向日誌表寫入記錄時,Fluss 會根據分桶分配策略將每條記錄分配到特定的桶中。Fluss 提供以下三種分桶分配策略:

  • 黏性桶策略(預設策略)

    隨機播放一個桶並持續寫入,直到已經達到了設定的最大容量(如大小或記錄條數限制) ,無法再繼續寫入更多記錄。

  • 輪詢策略

    在寫入每條記錄前,按輪詢方式選擇目標桶。

  • 基於雜湊的分桶

    將根據指定桶鍵(bucket keys)的雜湊值分配記錄。

更多詳情請參見資料分桶。

本機存放區策略

  • 參數配置: 通過table.log.ttl參數定義本地日誌資料的保留時間長度。

  • 分層機制: 系統會持續監控資料生命週期。超出 TTL 閾值的冷資料將自動從本地磁碟卸載並歸檔至遠程儲存。此機制確保了本地磁碟僅儲存活躍的熱資料,從而有效控制儲存開銷。

資料的消費

Fluss中的日誌表支援即時資料消費,並嚴格保持每個桶內資料的寫入順序。具體規則如下:

  • 同一表且同一桶的兩條資料記錄:先寫入 Fluss 表的資料會優先被消費。

  • 同一表但不同桶的兩條資料記錄:消費順序無法保證,因為不同桶可能由不同的資料消費任務平行處理。