首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Infobright:開源 MySQL 列式數據倉庫解決方案深度解析

     編輯:MySQL 資料庫相關知識

什麼是 Infobright?

Infobright 是基於 MySQL 邏輯層、自研 BriteHouse 存儲引擎的開源列式數據倉庫。核心技術為專利 Knowledge Grid(知識網格),實現無索引、高壓縮、極速聚合查詢,專為 TB 級海量數據分析設計。

核心優勢

維度指標技術支撐
查詢效能比 MyISAM/InnoDB 快 5~60 倍Knowledge Grid 粗糙集過濾 + 列式存儲 + 向量化執行
數據壓縮平均 10:1,最高 40:1列式存儲 + 自適應壓縮算法(按類型選算法)
存儲容量TB 級、十億行高壓縮 + 高速載入工具(百 GB/小時)
維護成本無需建索引、分區、物化視圖Knowledge Grid 自動維護統計元數據
聚合查詢SUM/COUNT/AVG/GROUP BY 極速DPN/Histogram/CMAP 統計節點預計算

架構深度剖析

兩層架構

  • 邏輯層:MySQL 解析器 + Infobright 優化器(外層包裹 MySQL 優化器)+ Loader/Unloader 獨立服務。
  • 存儲層:默認引擎 BriteHouse,支援 MyISAM、Memory 等輔助引擎。三層數據組織:
    Data Pack (DP) → Data Pack Node (DPN) → Knowledge Node (KN) → Knowledge Grid。

Knowledge Grid 四大組件

組件功能生成時機
DPN (Data Pack Node)記錄每個 DP 的 min/max/null 個數/count/sum/avg/唯一值數等統計信息數據載入時
Histogram數值類型(date/time/decimal)min-max 分 1024 桶,加速範圍裁剪數據載入時
CMAP文本類型 ASCII 位圖,記錄字符在各位置出現情況數據載入時
Pack-to-Pack (P2P)Join 時動態生成的兩列 DP 關係位圖矩陣查詢執行時

粗糙集三分類查詢模型

查詢時將 DP 分為三類:

  1. Relevant Packs:確定滿足條件,直接解壓計算。
  2. Irrelevant Packs:確定不滿足,直接跳過。
  3. Suspect Packs:部分滿足,需解壓進一步過濾。

核心邏輯:利用 DPN/Histogram/CMAP 快速裁剪 Irrelevant/Suspect,最小化解壓開銷。WHERE 區分度越高,裁剪效果越好。

實戰優化指南

1. 數據類型選擇(由高到低效率)

推薦:TINYINT/SMALLINT/MEDIUMINT/INT/BIGINT > DECIMAL > DATE/TIME
避免:VARCHAR/TEXT/BINARY/VARBINARY/FLOAT/DOUBLE
  • 能用小類型不用大類型(SMALLINT 代替 INT)。
  • VARCHAR 改 CHAR 或整數(如 IP 存 BIGINT),利用壓縮優勢。
  • 時間拆分 year/month/day 三列,提升範圍查詢效率。

2. Comment Lookup(位圖索引替代)

適用條件:CHAR/VARCHAR、唯一值 < 10,000、行數/唯一值 > 10。
適用場景:性別、省份、狀態碼等低基數列。

CREATE TABLE t (
    act CHAR(15) COMMENT 'lookup',
    part CHAR(4) COMMENT 'lookup'
) ENGINE=BRIGHTHOUSE;

3. 有序載入數據

按高頻查詢維度(如日期)排序載入,使 DP 內數值範圍集中,DPN min/max 區間不重疊,極大減少 Suspect Packs。

4. SQL 編寫規範

  • 避免 OR,改用 IN 或 UNION。
  • 減少 SELECT *,僅查詢 WHERE 涉及的列(列式存儲特性)。
  • 避免 WHERE 中使用函數/類型轉換,阻礙 Knowledge Grid 裁剪。
  • 限制 JOIN 表數量,優先獨立子查詢。
  • 避免 GROUP BY 中做數學運算(如 SUM(a*b))。

版本差異:ICE (社區版) vs IEE (企業版)

特性ICEIEE
DML (INSERT/UPDATE/DELETE)❌ 僅支援 LOAD DATA INFILE✅ 完整支援
DDL (ALTER TABLE)❌ 不支援✅ 支援 RENAME/ADD/DROP COLUMN
並發查詢單核調度,~10 並發多線程調度(3.5+),50-500% 性能提升
高可用/主從❌ 無✅ 基於 SQL Statement 複制
分布式載入 (DLP)❌✅ 1.6 TB/小時
臨時表❌✅
官方支援社區商業 SLA

適用場景與限制

✅ 適合

  • 海量日誌/事件分析(電信詳單、安全審計)。
  • 用戶行為、營銷廣告、移動端分析。
  • 數據集市、嵌入式 BI 分析。
  • 寫少讀多、批量載入、聚合查詢為主。

❌ 不適合

  • 高並發 OLTP 業務(單表點查比 MySQL 慢)。
  • 實時寫入/更新/刪除需求(ICE 完全不支援 DML)。
  • 中文多字節字符大量存儲(壓縮與查詢效率低)。
  • 需橫向擴展、自動故障轉移的架構。

總結

Infobright 以「捨棄索引、擁抱統計元數據」的創新架構,重新定義了 MySQL 生態下的數據倉庫能力。對於 TB 級唯讀分析場景,它是成本最低、上手最快、效能最強的選擇之一。但務必認清其「非 OLTP、非實時、弱並發」的本質,避免誤用於線上交易系統。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved