Apache Superset 是一款現代化的企業級商業智能 Web 應用程序,專為數據探索和可視化而設計。本概述介紹了 Superset 的架構、核心組件和主要功能,以幫助開發人員了解該系統的工作原理。
What is Apache Superset???
Apache Superset 是一個開源數據探索和可視化平臺,其設計理念是用戶友好、功能豐富且高度可擴展。它允許用戶連接到各種數據庫、創建交互式可視化效果并構建儀表板,而無需編寫代碼,同時還為高級用戶提供了強大的功能。
Superset 基于 Python Flask 后端和基于 React 的前端構建。它通過 SQLAlchemy 支持多種數據庫和數據引擎,并通過基于插件的系統提供各種可視化選項。
資料來源:
- superset/config.py
Key Features?主要特點
Superset 為數據瀏覽和可視化提供了一套全面的功能:
- SQL Lab:用于直接查詢數據庫的交互式 SQL 編輯器
- Chart Builder:用于創建可視化的無代碼界面
- Dashboard Builder:用于將可視化合并到交互式儀表板中的工具
- Database Connections?: 支持 30+ 數據庫,包括 PostgreSQL、MySQL、BigQuery、Snowflake 等常用數據庫
- Security?:使用基于角色的權限系統進行精細訪問控制
- Caching?:可配置的緩存以提高性能
- API:用于自定義和集成的編程訪問
資源來源:
- superset/config.py
System Architecture?系統架構
Superset 遵循客戶端-服務器架構,具有單獨的前端和后端組件,通過 REST API 進行通信。
High-Level Architecture?高級架構
資源來源:
- superset/models/core.py
- superset/security/manager.py
Data Flow?數據流
下圖說明了數據如何流經 Superset 系統
資料來源:
- superset/common/query_context.py
- superset/views/core.py
Core Components??核心組件
Superset 的架構由幾個核心組件組成,這些組件協同工作以提供其功能:
Database Connectors and Engine Specs???數據庫連接器和引擎規格
Superset 通過 SQLAlchemy 連接到各種數據庫。每個受支持的數據庫都有一個?EngineSpec
?類,用于處理特定于數據庫的功能,例如時間粒度表達式、類型映射和查詢執行。
資料來源:
- superset/db_engine_specs/base.py
- superset/db_engine_specs/presto.py
- superset/db_engine_specs/hive.py
- superset/db_engine_specs/postgres.py
Data Models?數據模型
Superset 中表示系統中不同實體的核心數據模型:
Model | 描述 |
Database | 表示數據庫連接 |
SqlaTable | 表示數據集/表 |
TableColumn | 數據集中的列 |
SqlMetric | 數據集上定義的指標 |
Slice | 單獨的圖表/可視化 |
Dashboard | 圖表集合 |
User | 超集用戶 |
Role | 安全角色 |
資料來源:
- superset/models/core.py
- superset/connectors/sqla/models.py
- superset/security/manager.py
Visualization System?可視化系統
Superset 使用基于插件的可視化系統,該系統支持多種圖表類型
資料來源:
- superset/viz.py
- superset/common/query_object.py
- superset/common/query_context.py
Security Model 安全模型
Superset 基于 Flask-AppBuilder 實現了一個健壯的安全模型:
資料來源:
- superset/security/manager.py
- superset/views/base.py
Configuration and Deployment?配置和部署
可以通過?superset_config.py
?中的各種設置來配置 Superset。主配置文件?superset/config.py?包含所有可以覆蓋的默認設置。
Deployment Options??部署選項
Superset 可以通過多種方式進行部署:
部署方式 | 描述 |
Docker | 使用官方 Docker 鏡像 |
Docker Compose | 使用 Docker Compose 設置多容器 |
Kubernetes | 使用 Helm 圖表進行 Kubernetes 部署 |
手動安裝 | 從 PyPI 使用 pip |
Feature Flags?功能標志
Superset 使用功能標志來啟用或禁用某些功能。這些可以在?superset_config.py
?中配置:
FEATURE_FLAGS = {"DRILL_BY": True,"DASHBOARD_VIRTUALIZATION": True,"EMBEDDABLE_CHARTS": True,"SQL_VALIDATORS_BY_ENGINE": True
}
資料來源:
- superset/config.py?
- RESOURCES/FEATURE_FLAGS.md
Extensibility?可擴展性
Superset 的設計使其可以通過多種方式進行擴展
- Database Support:通過創建自定義引擎規范添加對新數據庫的支持
- Visualizations:創建自定義可視化插件
- Authentication:與自定義身份驗證系統集成
- API Integration:使用 Superset 的 REST API 與其他系統集成
資料來源:
- superset/db_engine_specs/base.py
- superset/views/base.py
?Getting Started??入門
對于希望貢獻或定制 Superset 的開發人員,代碼庫的組織方式如下
superset/
?——Superset 后端代碼
?-- superset/views/
?——Flask 視圖和 API 端點
?-- superset/models/
?——SQLAlchemy 模型
?-- superset/db_engine_specs/
?——數據庫引擎規范
?-- superset/connectors/
?——數據庫連接器
?-- superset/security/
?——安全和身份驗證
superset-frontend/
?- React 前端代碼
?-- superset-frontend/src/
?- 源代碼
?-- superset-frontend/plugins/
?- 可視化插件
資料來源:
- README.md
- superset/initialization/init.py
待更新目錄
編號 | 標題 | 描述 |
1 | Superset二次開發之深度解讀系列:1.概述 | 本概述介紹了 Superset 的架構、核心組件和主要功能,以幫助開發人員了解該系統的工作原理 |
2 | Superset二次開發之深度解讀系列:2.架構 | 全面概述 Apache Superset 的架構,解釋不同組件之間的交互方式。涵蓋整體系統設計、前后端組件之間的關系、數據流和安全模型。 |
3 | Superset二次開發之深度解讀系列:2.1【架構】前端架構 | 詳細概述 Apache Superset 的前端架構,包括其關鍵組件、狀態管理模式以及數據在系統中的流動方式。 解釋?React 組件的組織結構、Redux 狀態管理以及前端不同部分之間的交互 |
4 | Superset二次開發之深度解讀系列:2.2【架構】后端架構 | 介紹 Apache Superset 的后端架構,介紹核心組件、組件之間的交互以及數據在系統中的流動方式。 |
5 | Superset二次開發之深度解讀系列:2.3【架構】安全模型 | 介紹 Apache Superset 的安全模型,涵蓋身份驗證、授權和數據訪問控制機制。 解釋?Superset 如何實現不同級別的安全性,從用戶身份驗證到行級安全過濾。 |
6 | Superset二次開發之深度解讀系列:2.4【架構】數據流 | 描述數據在 Apache Superset 中的流動方式,從數據庫連接、查詢處理到可視化渲染。 提供所涉及的關鍵組件的技術概述,以及它們如何相互交互,將數據從外部源移動到面向用戶的可視化效果。 |
7 | Superset二次開發之深度解讀系列:3.前端系統 | 概述 Apache Superset 中的前端架構和組??件系統。 涵蓋核心 UI 組件、選擇組件以及它們之間的交互模式 |
8 | Superset二次開發之深度解讀系列:3.1【前端系統】核心UI組件 | 記錄 Apache Superset 前端中的核心可重用 UI 組件。 這些組件構成了 Superset 用戶界面的基礎,并在整個應用程序中廣泛使用 |
9 | Superset二次開發之深度解讀系列:3.2【前端系統】儀表盤組件 | 記錄 Apache Superset 中構成儀表板界面的核心組件。 重點介紹儀表板構建器、布局系統以及允許用戶與儀表板交互的過濾機制 |
10 | Superset二次開發之深度解讀系列:3.3【前端系統】篩選器系統 | 篩選器系統為儀表板提供交互式過濾功能,允許用戶通過在多個圖表上應用約束來動態探索數據 |
11 | Superset二次開發之深度解讀系列:3.4【前端系統】SQL Lab | 交互式 SQL 查詢工具,允許用戶編寫和執行 SQL 查詢、可視化結果、保存和共享查詢以及探索數據庫模式 |
12 | Superset二次開發之深度解讀系列:4.后端系統 | 后端系統,包括關鍵組件、架構以及各個部分之間的交互方式。涵蓋支持 Superset 功能的服務器端組件,從數據庫連接到查詢處理和安全性等各個方面 |
13 | Superset二次開發之深度解讀系列:4.1【后端系統】配置系統 | 提供一種靈活且分層的方法來配置 Apache Superset 應用程序。介紹 Superset 中的配置工作原理,包括默認設置、如何覆蓋它們、功能開關以及關鍵配置類別 |
14 | Superset二次開發之深度解讀系列:4.2【后端系統】數據庫連接 | 解釋 Apache Superset 如何連接到各種數據庫,詳細介紹允許 Superset 與各種數據庫系統交互的架構、連接機制和特定引擎的實現。 |
15 | Superset二次開發之深度解讀系列:4.3【后端系統】SQL處理和執行 | ?SQL 查詢的解析、轉換和執行方式 |
16 | Superset二次開發之深度解讀系列:4.4【后端系統】REST API | 介紹其架構、核心 API 資源、常見模式以及如何以編程方式與這些端點交互。 |
17 | Superset二次開發之深度解讀系列:4.5【后端系統】警報和報告 | 允許用戶安排定期報告并根據數據條件配置警報。 用戶可以通過電子郵件或 Slack 接收通知,其中包含屏幕截圖、CSV 數據或圖表和儀表板的格式化文本 |
18 | Superset二次開發之深度解讀系列:5.部署 | 涵蓋基于 Docker 的部署、使用 Helm 的 Kubernetes 部署,以及在不同環境中部署 Superset 時需要考慮的重要配置方面 |
19 | Superset二次開發之深度解讀系列:5.1【部署】Docker 部署 | 提供有關如何使用 Docker 部署 Apache Superset 的全面指南。其中涵蓋架構、部署方法、配置選項和常用操作 |
20 | Superset二次開發之深度解讀系列:5.2【部署】Kubernetes 部署 | 提供使用存儲庫中包含的 Helm 圖表在 Kubernetes 上部署 Apache Superset 的詳細說明和參考 |
21 | Superset二次開發之深度解讀系列:6.貢獻 | 介紹如何為 Apache Superset 做出貢獻。無論您是想貢獻代碼的開發者,還是想改進文檔,亦或是想參與測試,本指南都能助您一臂之力 |