# [SEMINAR BIGDATA] APACHE SUPERSET
## I. QUY ĐỊNH & YÊU CẦU TỐI THIỂU
### A. Thuyết trình trực tiếp
#### 1. Đối với người trực tiếp thuyết trình
* Mỗi nhóm thuyết trình nội dung nghiên cứu trong thời gian ==**chính xác 30 phút**==. Có 10 phút vấn đáp Q & A.
* Nếu bài thuyết trình quá ngắn hoặc quá dài sẽ không thể nào đạt được số điểm tốt nhất có thể.
* Các thành viên phải có mặt đúng giờ đã hẹn. Nếu chỉ cần một thành viên trễ hẹn, cả nhóm sẽ trễ tiến độ thuyết trình.
* Tất cả các thành viên phải thuyết trình. Bất kỳ ai vắng mặt mà không có sự cho phép sẽ nhận được 0đ cho phần seminar.
* Các thành viên trong nhóm đều được khuyến khích tham gia thuyết trình để thể hiện kỹ năng thuyết trình của mình và do đó sẽ nhận được nhiều điểm hơn cho tiêu chí này.
* Cố gắng trình bày (cả thuyết trình và slides) một cách rõ ràng nhất có thể bằng cách sử dụng hình ảnh, từ ngữ súc tích, hình ảnh minh họa và biểu đồ.
* Hầu hết khán giả đều chưa có kinh nghiệm về chủ đề của nhóm thuyết trình. Nên cần phải trình bày sao cho mọi người có thể hiểu dễ dàng nhất có thể.
#### 2. Đối với người xem seminar
* Tham gia hoạt động của hội thảo một cách tích cực bằng cách đặt câu hỏi và đánh giá nhóm thuyết trình đó thông qua biểu mẫu Google Form cho trước. Giảng viên sẽ sử dụng thông tin này để kiểm tra sự tham gia và thái độ của bạn.
* **Tất cả thành viên trong nhóm phải có mặt đầy đủ.** Bất kỳ ai vắng mặt mà không có sự cho phép sẽ không được tính điểm cho buổi hội thảo.
### B. Tài liệu cần nộp
* Mỗi nhóm phải chia sẻ slide(s) đến đường dẫn Google Drive folder 3 ngày trước ngày thuyết trình seminar.
* Mỗi nhóm phải nộp tất cả tài liệu liên quan đến buổi seminar (slides, tài liệu report, video demo tools, các tài liệu tham khảo , ...), ngoại trừ source code (giảng viên sẽ không chạy code tools, giảng viên sẽ yêu cầu nhóm thuyết trình), thời điểm nộp là 1 tuần sau ngày thuyết trình vấn đáp chính thức.
* Yêu cầu về báo cáo: báo cáo phải tuân thủ nghiêm ngặt theo định dạng từ 10 đến 15 trang (không tính bìa), font chữ mặc định là Time New Roman 12pt (hoặc font chữ khác nhưng phải cùng kích thước), khoảng cách lề mặc định là 1.5 theo tiêu chuẩn của MSWord.
* Nếu nhóm sử dụng các ứng dụng chỉnh sửa text khác, hãy định dạng tương tự như mô tả trên.
* Nội dung không được sao chép và dịch từ nguồn.
## II. QUẢN LÝ DỰ ÁN
### 1. Yêu cầu chung
* Thời gian nộp slides:
* Thời gian vấn đáp:
* Thời gian nộp sản phẩm cuối cùng:
* Hình thức vấn đáp
* Minh chứng cần nộp
### 2. Tài nguyên chung
* GG Drive : [link here](https://drive.google.com/drive/folders/1c39j5O-_TMz60ekmZaVZJIMVk-kZxq_S?usp=sharing)
* Github : [link here]()
* Video Demo : [link here](https://youtu.be/IcQqkMjigXM?si=_hiCCF9388nxiZr-)
* Slides : [link here](https://www.canva.com/design/DAGupPFrSfM/ehGfR4IiihuHSHa0P0EiRw/edit?utm_content=DAGupPFrSfM&utm_campaign=designshare&utm_medium=link2&utm_source=sharebutton)
* Report Latex
* Report Apache Superset: [link here](https://www.overleaf.com/read/qyhjjkkbwrkr#d279ab)
* Report Demo Apache Superset: [link here](https://www.overleaf.com/read/txtktydtrzmf#254dcd)
* Chú ý: Để vào được
## III. THÔNG TIN NHÓM & BẢNG PHÂN CÔNG CÔNG VIỆC
### 1. Thông tin nhóm
### 2. Bảng phân công công việc
| MSSV | Họ và Tên | Công việc được giao | Mức độ hoàn thành |
|:--------:|:---------------:| ------------------- |:-----------------:|
| 22127174 | Ngô Văn Khải | | $100\%$ |
| 22127208 | Nguyễn Anh Khôi | | $100\%$ |
| 22127260 | Bùi Công Mậu | | $100\%$ |
| 22127322 | Lê Phước Phát | | $100\%$ |
## IV. TRÌNH BÀY & MINH CHỨNG
Điền nội dung ở đây ....
## V. NỘI DUNG ĐỒ ÁN
### A. TỔNG QUAN VỀ APACHE SUPERSET
#### 1. APACHE SUPERSET là gì ?
Điền nội dung ở đây ...
#### Mục tiêu
- Là một nền tảng Business Intelligence dùng để phân tích, khám phá dữ liệu và trực quan hóa dữ liệu.
#### Độ phổ biến của tools này trong cộng đồng Big Data ra sao?
- Apache Superset hiện đang rất phổ biến và đang tăng trưởng nhanh chóng trong cộng đồng big data. Nhờ vào hiệu năng mạnh mẽ, mức phí hợp lí không thua gì so với các công cụ khác.
#### Ưu điểm và nhược điểm của Aphache superset
##### Ưu điểm:
- Mã nguồn mở: sử dụng hoàn toàn miễn phí. Đặc biệt, có cộng đồng có thể giúp đỡ.
- Dễ dùng: giao diện thân thiện với người dùng, và nhanh chóng có thể tạo ra dashboard.
- Đa dạng các lựa chọn: có nhiều biểu đồ, bản đồ được cung cấp cho người dùng thoải mái chọn lựa hoặc có thể thêm các biểu đồ khác vào.
- Hỗ trợ và kết hợp được với nhiều nguồn dữ liệu khác nhau: Apache Superset sẽ yêu cầu sử dụng Python DB-API và SQLAlchemy cho mỗi cơ sở dữ liệu muốn kết nối. Một số cơ sở dữ liệu phổ biến hiện nay: Postgres, MySQl, hay Google sheets... Đối với một số cơ sở dữ liệu chưa được hỗ trợ như MongoDB có thể kết nối thông qua Trino, Presto,...(truy vấn phân tán).
##### Nhược điểm:
- Cài đặt và cấu hình rất phức tạp: Khó sử dụng dành cho những người không có kiến thức nền IT, dễ bị lỗi nếu thiếu các môi trường liên quan.
- Thiếu hỗ trợ chính thức: vì là mã nguồn mở => tự xử lí lỗi hoặc nhờ cộng đồng hỗ trợ (Github, StackOverFlow).
- Hạn chế các tính năng: Apache Superset khá hạn chế về vấn đề tùy chỉnh trên giao diện, các tính năng nâng cao như những công cụ khác (Tableau, Power BI,...).
- Bảo mật và phân quyền chưa linh hoạt: Hệ thống RBAC tương đối mạnh, nhưng việc cấu hình vai trò và quyền có thể khó khăn với người không chuyên backend. Có thể gặp rủi ro nếu không cấu hình đúng bảo mật trong môi trường production.
### 2. Các chức năng chính của tools
* Dashboard tương tác
-Apache Superset cho phép tạo dashboard tương tác giữa các biểu đồ. Có thể chọn nhiều biểu đồ sắp xếp và đưa vào dashboard.

* Hỗ trợ nhiều loại biểu đồ
-Apache Superset cho phép lựa chọn đa dạng biểu đồ.

* SQL Lab
-Nơi người dùng có thể viết SQL để truy vấn dữ liệu trực tiếp từ các nguồn dữ liệu. Trong đó, có hỗ trợ autocomplete, và lưu các câu truy vấn và export ra kết quả.

* Explore (Giao diện no-code)
* Dataset và Semantic Layer
* Kết nối nguồn dữ liệu
* Các tính năng dashboard nâng cao
* Hiệu năng và Cache
* Bảo mật và phân quyền
* Khả năng mở rộng
### 3. Kiến trúc tổng quan của tools

#### 3.1 WSGI Web Server(s)
- Nơi người dùng truy cập Superset qua các trình duyệt (máy chủ để chạy Apache Superset).
- Nhận request từ người dùng -> gửi truy vấn -> đưa ra kết quả -> hiển thị biểu đồ/ dashboards.
- Chạy trên Gunicorn.
=> Xử lí giao diện người dùng và yêu cầu tương tác.
#### 3.2 Chart Cache (optional)
- Tăng tốc độ hiển thị dashboard.
- Cache kết quả của các biểu đồ tránh được hiện tượng truy vấn lại vào database nhiều lần.
- Tiết kiệm tài nguyên và giảm thời gian load dashboard.
#### 3.3 Metadata
- Lưu trữ các thông tin cấu hình của Superset (người dùng, vai trò và quyền truy cập,...). Ngoài ra, còn có dashboards, charts, databases.
=> Lưu cấu hình Apache Superset
#### 3.4 Analytics Databases
- Hỗ trợ đa dạng database: MySQL, BigQuery, Presto, Druid,...
- Nơi lưu trữ dữ liệu đầu vào để thực hiện trực quan hóa dữ liệu.
- Tuy nhiên, Superset không lưu dữ liệu mà liên kết tới các cơ sở dữ liệu.
- Superset sẽ gửi truy vấn phù hợp để lấy dữ liệu phù hợp.
#### 3.5 Async Infra (optional)
- Bao gồm: Celery workers + Message Queue + Result Cache
- Để xử lí truy vấn quá lâu hoặc nặng => Superset có thể treo hoặc timeout.
- Nơi để web server gửi tin nhắn vào hàng đợi (queue) => có 1 mảng có thể hiển thị truy vấn cho người dùng để cập nhật database.
=> Cải thiện hiệu năng khi làm việc với dữ liệu lớn.
Trong đó:
+ Message Queue: Nhận các tác vụ từ web server -> gửi các tác vụ này tới Celery Worker => Là hàng đợi trung gian giúp xử lý bất đồng bộ (asynchronous tasks).
+ Celery workers: Là các tiến trình chạy nền để thực thi tác vụ từ Message Queue => Xử lý các tác vụ nặng mà không chặn web UI.
+ Cache kết quả từ các worker để tái sử dụng nếu người dùng request lại, có thể lưu ở hệ thống file như Amazon S3, HDFS => Cache dữ liệu đầu ra giúp tăng tốc khi người dùng xem lại cùng biểu đồ.
=> Nếu chỉ xử lí với dữ liệu nhỏ thì không cần phải có Chart Cache và Async Infra. Tuy nhiên, khi dữ liệu lớn để thao tác nhanh và mượt hơn thì cần tới 2 kiến trúc này.
### 4. So sánh ít nhất với 2 tools tương đồng
#### So sánh với Grafana
##### Giới thiệu về Grafana
Grafana là một phần mềm, một công cụ mã nguồn mở được phát triển để chuyên dùng cho việc giám sát thời gian thực (real-time monitoring), cung cấp khả năng observability - là khả năng đo lường trạng thái hiện tại của một hệ thống dựa trên dữ liệu mà nó tạo ra, chẳng hạn như logs, metrics, và traces.
[Grafana Vs Superset | Which Data Visualization Tool Is Better in 2025?](https://youtu.be/_tA8jdHa0Gs)
[Tìm hiểu chi tiết khả năng giám sát (Observability) là gì?](https://fptcloud.com/kha-nang-giam-sat-observability-la-gi/)
##### So sánh Superset với Grafana
Sự khác biệt chính giữa Superset và Grafana nằm ở loại câu hỏi mà mỗi công cụ này giúp người dùng trả lời.
Grafana được tạo ra để trả lời câu hỏi: "Hệ thống của tôi đang hoạt động như thế nào vào ngay lúc này?". Đây là một câu hỏi về **real-time monitoring**.
Còn Apache Superset được tạo ra để trả lời câu hỏi: "Ta có thể học được gì từ dữ liệu của mình?". Đây là một câu hỏi về **business intelligence**.
Grafana có thế mạnh là có tích hợp sâu với các cơ sở dữ liệu time-series như Prometheus và InfluxDB.
Còn Apache Superset thì có thể kết nối với hầu hết mọi cơ sở dữ liệu hỗ trợ SQL.
###### Bảng so sánh
| **Tiêu chí** | **Grafana** | **Apache Superset** |
|-------------------------|-------------|---------------------|
| **Mục tiêu chính** | Giám sát thời gian thực, observability | Business intelligence, khám phá dữ liệu |
| **Nguồn dữ liệu** | Prometheus, InfluxDB, Elasticsearch, AWS, v.v. | SQL databases (PostgreSQL, MySQL, Snowflake, v.v.) |
| **Biểu đồ/Trực quan** | Time-series charts, dynamic dashboards | Pie charts, geospatial, interactive dashboards |
| **Thế mạnh** | Alerting, dữ liệu thời gian thực, plugins mở rộng | SQL IDE, phân tích ad-hoc, hỗ trợ no-code |
| **Ứng dụng thực tế** | DevOps, IT operations, theo dõi hệ thống | BI, báo cáo, phân tích dữ liệu |
| **Cộng đồng** | Hệ sinh thái plugin lớn, cộng đồng mạnh | Cộng đồng phát triển, được Apache hỗ trợ tốt |
| **Dễ sử dụng** | Thân thiện cho người dùng kỹ thuật | Giao diện trực quan, dễ tiếp cận cho người không chuyên |
#### So sánh với Metabase
##### Giới thiệu Metabase
Metabase là một phần mềm, một công cụ phân tích và trực quan hoá dữ liệu mã nguồn mở, được tạo ra với mục đích là để giúp tất cả mọi người trong một tổ chức có thể dễ dàng làm việc với dữ liệu, nghĩa là công cụ này đề cao **tính dễ sử dụng**. Metabase giúp người dùng không có kiến thức lập trình hay SQL vẫn có thể tự đặt câu hỏi, tự khám phá và tự tạo ra các báo cáo về dữ liệu để truyền đạt các insight.
Tuy không phải thế mạnh của mình nhưng dành cho các nhà phân tích dữ liệu chuyên nghiệp, Metabase vẫn cung cấp một trình soạn thảo SQL mạnh mẽ để thực hiện những truy vấn phức tạp.
Tính năng nổi bật của Metabase gồm khả năng kết nối với rất nhiều nguồn dữ liệu (như MySQL, PostgreSQL, BigQuery, Snowflake), tạo các dashboard tương tác cho phép xem chi tiết và lọc dữ liệu linh hoạt, thêm vào đó là khả năng thiết lập cảnh báo tự động qua email hoặc Slack.
##### So sánh Superset với Metabase
Sự khác biệt chính giữa Apache Superset và Metabase nằm ở triết lý thiết kế và đối tượng người dùng mục tiêu. Superset định hướng trở thành một bộ công cụ mạnh mẽ và linh hoạt, hướng đến các nhà phân tích dữ liệu và kỹ sư, cung cấp vô số tùy chọn biểu đồ và khả năng tùy chỉnh sâu, phù hợp cho các bài toán phân tích phức tạp nhưng đòi hỏi người dùng phải có chuyên môn kỹ thuật nhất định. Ngược lại, Metabase tập trung vào sự đơn giản và khả năng truy cập. Mục tiêu của Metabase là "dân chủ hóa dữ liệu", cho phép cả những người dùng không chuyên về kỹ thuật cũng có thể tự khám phá dữ liệu thông qua một giao diện trực quan và các luồng phân tích được định hướng sẵn. Về cơ bản, Superset dành cho chuyên gia là những cần sự tùy biến, còn Metabase dành cho toàn bộ tổ chức cần dễ tiếp cận với số đông.
[Metabase vs Apache Superset: Which is best for your team?](https://youtu.be/HXzob4kvlSM?si=mNz1IccovGbNpPAa)
###### Bảng so sánh
| **Tiêu chí** | **Metabase** | **Apache Superset (Theo quan điểm của Metabase)** |
|-----------------------------|------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------|
| **Đối tượng người dùng** | Dành cho mọi đối tượng trong công ty, từ người dùng không chuyên về kỹ thuật đến các nhà phân tích. | Dành cho các đội ngũ kỹ thuật, nhà khoa học dữ liệu có chuyên môn cao. |
| **Cài đặt & Vận hành** | Rất dễ dàng và nhanh chóng, đặc biệt với phiên bản Cloud. Có thể bắt đầu trong vài phút. | Đòi hỏi nhiều kiến thức và nguồn lực kỹ thuật để cài đặt, vận hành và quản lý. |
| **Tính tương tác Dashboard** | Tương tác sâu, cho phép người dùng tự khám phá và phân tích dữ liệu ngay trên dashboard một cách trực quan. | Tương tác cơ bản như lọc và xem thông tin. |
| **Phân tích phức tạp** | Hỗ trợ tốt cho các nhu cầu phân tích phổ biến. | Rất mạnh mẽ cho các phân tích lớn, phức tạp và yêu cầu biểu đồ đa dạng. |
| **Hỗ trợ** | Có đội ngũ hỗ trợ khách hàng chuyên nghiệp, phản hồi nhanh (đối với các gói trả phí). | Dựa vào cộng đồng mã nguồn mở. |
#### So sánh với Redash
##### Giới thiệu Redash
Redash là một phần mềm, một công cụ mã nguồn mở giúp trực quan hoá và khám phá dữ liệu, được tạo ra để giúp mọi người làm việc với dữ liệu một cách nhanh chóng và hiệu quả. Triết lý cốt lõi của Redash là tập trung vào sự ổn định, đáng tin cậy và một trải nghiệm người dùng mượt mà. Nền tảng này cho phép người dùng kết nối dễ dàng với nhiều loại nguồn dữ liệu, từ các cơ sở dữ liệu SQL truyền thống đến các nền tảng dữ liệu lớn, thường không đòi hỏi cấu hình phức tạp. Trọng tâm của Redash là một trình soạn thảo SQL mạnh mẽ, cho phép người dùng viết truy vấn, thực thi và ngay lập tức biến kết quả thành các biểu đồ và bảng biểu. Những biểu đồ và bảng biểu này sau đó có thể được sắp xếp vào các dashboard tương tác và chia sẻ với toàn bộ tổ chức, giúp mọi người cùng theo dõi các chỉ số quan trọng. Ngoài ra, Redash còn tích hợp tính năng cảnh báo (alerting), cho phép tự động thông báo khi dữ liệu đạt đến một ngưỡng nhất định.
##### So sánh Apache Superset với Redash
Sự khác biệt cốt lõi giữa Apache Superset và Redash nằm ở triết lý thiết kế và trải nghiệm người dùng mà mỗi công cụ mang lại. Superset nổi bật nhờ khả năng tùy biến linh hoạt và bộ sưu tập biểu đồ phong phú, đáp ứng nhu cầu của những nhà phân tích dữ liệu muốn xử lý các bài toán phức tạp với nhiều lựa chọn trực quan hóa và tùy chỉnh sâu. Tuy nhiên, chính sự đa dạng đó cũng đồng nghĩa với một giao diện nhiều lớp lựa chọn, đường cong học tập khá dốc và đôi khi chưa thực sự ổn định.
Ở chiều ngược lại, Redash lại tập trung vào sự đơn giản và ổn định. Công cụ này mang lại trải nghiệm liền mạch và trực quan, từ việc viết truy vấn SQL cho đến việc tạo lập biểu đồ, rất phù hợp với các đội nhóm cần một giải pháp đáng tin cậy, dễ sử dụng cho các nhu cầu phân tích thường ngày, dù số lượng loại biểu đồ không nhiều bằng Superset.
###### Bảng so sánh
| Tiêu chí | Apache Superset | Redash |
| :--- | :--- | :--- |
| **Triết lý & Đối tượng** | **Linh hoạt & Tùy chỉnh.** Hướng đến người dùng có kỹ năng kỹ thuật (nhà phân tích, kỹ sư dữ liệu) cần một bộ công cụ mạnh mẽ, tùy biến cao và không giới hạn về khả năng trực quan hóa. | **Đơn giản & Hiệu quả.** Hướng đến các đội ngũ (bao gồm cả người dùng nghiệp vụ biết SQL) ưu tiên sự ổn định, dễ sử dụng và một quy trình làm việc nhanh chóng từ truy vấn đến chia sẻ báo cáo. |
| **Cài đặt & Triển khai** | Phức tạp hơn, đòi hỏi nhiều bước cấu hình và kiến thức kỹ thuật, đặc biệt khi thiết lập các tính năng nâng cao. Hỗ trợ Helm Chart chính thức. | Tương đối đơn giản và nhanh chóng hơn, thường có trình hướng dẫn cài đặt thân thiện. Quá trình triển khai ít rào cản hơn cho người mới bắt đầu. |
| **Khả năng Trực quan hóa** | **Rất mạnh.** Cung cấp một thư viện biểu đồ khổng lồ, đa dạng và có khả năng tùy chỉnh sâu. Đặc biệt mạnh mẽ với các loại biểu đồ phức tạp và dữ liệu địa lý. | **Cơ bản nhưng hiệu quả.** Cung cấp các loại biểu đồ phổ biến, hoạt động ổn định và đáp ứng tốt các nhu cầu phân tích thông thường. Ít lựa chọn hơn so với Superset. |
| **Trải nghiệm & Luồng làm việc** | Luồng làm việc có nhiều bước hơn: cần lưu truy vấn thành "dataset" ảo trước khi tạo biểu đồ. Điều này mang lại sự linh hoạt nhưng có thể làm chậm quá trình khám phá nhanh. | Luồng làm việc liền mạch và trực quan: viết truy vấn SQL -> chọn loại biểu đồ -> thêm vào dashboard. Tối ưu cho việc phân tích và tạo báo cáo nhanh. |
| **Tính năng Lọc & Tương tác** | Khả năng lọc trên dashboard rất mạnh mẽ và dễ sử dụng sau khi đã thiết lập dataset. Hỗ trợ tương tác phức tạp. | Khả năng lọc cơ bản hơn, đôi khi cần viết thêm truy vấn phụ để tạo nguồn dữ liệu cho bộ lọc. Lọc chéo (cross-filtering) không trực quan bằng. |
| **Cộng đồng & Phát triển** | Được hỗ trợ bởi cộng đồng lớn và công ty Preset. Tốc độ phát triển nhanh, liên tục bổ sung tính năng mới. | Được Databricks mua lại và tích hợp vào sản phẩm của họ. Vẫn là mã nguồn mở nhưng tốc độ phát triển các tính năng độc lập có thể chậm hơn. |
| **Độ ổn định** | Vì có nhiều tính năng và tốc độ phát triển nhanh, đôi khi có thể gặp các lỗi nhỏ hoặc các tính năng chưa hoàn thiện. | Được đánh giá cao về sự ổn định và đáng tin cậy do tập trung vào việc hoàn thiện các tính năng cốt lõi. |
[Choosing an Analytics Tool. Metabase Vs Superset Vs Redash](https://medium.com/vortechsa/choosing-an-analytics-tool-metabase-vs-superset-vs-redash-afd88e028ba9)
###### Bảng so sánh
#### So sánh 3 tool: Metabase, Redash và Superset
[Superset vs Metabase vs Redash – Comparing Open Source BI Tools](https://hevodata.com/blog/superset-vs-metabase-vs-redash/)
##### Nguồn dữ liệu hỗ trợ bởi Metabase, Redash và Superset
| **Data Sources** | **Metabase** | **Redash** | **Superset** |
|-------------------------|:------------:|:----------:|:------------:|
| Amazon Redshift | ✓ | ✓ | ✓ |
| Google BigQuery | ✓ | ✓ | ✓ |
| Cassandra | | ✓ | |
| MongoDB | ✓ | ✓ | |
| PostgreSQL | ✓ | ✓ | ✓ |
| MySQL | ✓ | ✓ | ✓ |
| Google Analytics | ✓ | ✓ | |
| Snowflake | ✓ | ✓ | |
| Druid | ✓ | ✓ | ✓ |
| H2 | ✓ | | |
| SQLite | ✓ | ✓ | ✓ |
| Microsoft SQL Server | ✓ | ✓ | ✓ |
| CrateDB | ✓ | | |
| Oracle | ✓ | ✓ | ✓ |
| Vertica | ✓ | ✓ | ✓ |
| Presto | ✓ | ✓ | |
##### So sánh hỗ trợ authentication giữa 3 tool này
Superset cung cấp nhiều lựa chọn xác thực hơn. Trong khi Metabase và Redash chỉ hỗ trợ Google OAuth và SSO, thì với Superset, ta còn có thể tích hợp các hệ thống xác thực nội bộ hoặc LDAP của doanh nghiệp.
| **Công cụ** | **Google OAuth** | **LDAP** | **OpenID** | **Database** |
|---------------|:----------------:|:--------:|:----------:|:------------:|
| Metabase | Có | Có | Không | Không |
| Redash | Có | Không | Không | Không |
| Superset | Có | Có | Có | Có |
### 5. Minh họa các chức năng chính của tool này.
(Không bao gồm quá trình cài đặt và các bước đăng nhập tài khoản)
## VI. DEMO TOOLS
Phần này sẽ có một phần code riêng + report riêng
## VII. TÀI LIỆU THAM KHẢO
[The history and the anatomy of the Apache Superset](https://www.datacouncil.ai/hubfs/DataEngConf/Data%20Council/Slides%20SF%2019/The%20history%20and%20anatomy%20of%20Apache%20Superset.pdf)
[Introduction to Apache Superset](https://superset.apache.org/docs/intro)
[Apache Superset](https://en.wikipedia.org/wiki/Apache_Superset)
---
## SCRIPT
- Mậu: kiến trúc + chức năng
Giới thiệu tổng quan về kiến trúc.
Front end: React, Back end: Flask (python).
=> Lý do: React: thư viện JavaScript hiện đại cho UI, giúp xây dựng giao diện người dùng tương tác cao, realtime (chart, filter, dashboard), với khả năng render nhanh và dễ mở rộng. Flask là một micro web framework Python, nhẹ và linh hoạt, phù hợp để xây dựng REST APIs phục vụ dữ liệu, tương thích tốt với hệ sinh thái Python và các thư viện xử lý dữ liệu (Pandas, SQLAlchemy, v.v.).
=> giúp Superset linh hoạt, hiệu suất cao, và dễ phát triển.
WEB SERVER:
Gunicorn (Green Unicorn) là một WSGI(Web Server Gateway Interface) là một giao thức chuẩn (interface) giữa web server (như Gunicorn) và ứng dụng Python) HTTP server dùng để chạy các ứng dụng web Python, đặc biệt là các ứng dụng Flask, Fast API,...
Nginx là là một máy chủ web cũng có thể được sử dụng như một reverse proxy, load balancer, mail proxy và bộ đệm HTTP. Là phần mềm miễn phí và mã nguồn mở.
=> để xử lý, cân bằng tải và phân phối request đến các ứng dụng web phía sau như Flask thông qua WSGI server như Gunicorn.
=> Tổng kết: Trình duyệt gửi yêu cầu đến Nginx (đóng vai trò proxy), Nginx chuyển yêu cầu đó đến Gunicorn – một WSGI server có nhiệm vụ giao tiếp với ứng dụng Flask, từ đó Flask xử lý logic và trả kết quả ngược lại cho người dùng.
Metadata database:
Nơi lưu: dashboard, biểu đồ, datasource, quyền người dùng...Web servers (Gunicorn) sẽ truy vấn vào đây để xác định: Người dùng là ai, Dashboard nào có quyền truy cập,...
Có thể sử dụng các database khác như: Microsoft SQL, Postgresql, mysql, oracle,...
Data warehouse:
KHi người dùng chạy truy vấn từ web server sẽ gửi các câu truy vấn tới data warehouse để lấy dữ liệu để xử lí theo yêu cầu.
Hỗ trợ nhiều database như: Redshift, Snowflake, databricks,...
Thành phần phụ:
Cache
Đây là thành phần phụ trong kiến trúc, Cache lưu cặp key–value
Key: thường là SQL query (được băm/hash)
Value: kết quả trả về từ warehouse
=> Người dùng yêu cầu lại query giống nhau → hệ thống kiểm tra cache trước, nếu có thì không cần truy vấn lại database. => tăng tốc và giảm tải.
Apache Superset lưu trữ tạm thời kết quả và truyền thông tin giữa frontend và worker để hỗ trợ các tác vụ nền như truy vấn bất đồng bộ, cảnh báo và tạo ảnh thu nhỏ. => hỗ trợ các tác vụ nền.
Optional async query runs
khi nào nên có cấu trúc này khi có dashboard quá nặng và phức tạp -> chứa nhiều chart, dữ liệu, các câu truy vấn phức tạp và tốn thời gian quá thời gian timeout, hoặc xử lí với dữ liệu thời gian thực và được cập nhật liên tục.
Khi người dùng thực hiện một truy vấn phức tạp, Superset không xử lý ngay trong web server vì sẽ dễ bị treo. Thay vào đó, truy vấn được gửi vào Redis – đóng vai trò như một hàng đợi trung gian. Redis sau đó chuyển truy vấn này đến Celery Worker – thành phần chuyên xử lý tác vụ nền. Sau khi xử lý xong, kết quả có thể được lưu lại và trả về cho người dùng. Việc này giúp Superset vẫn phản hồi nhanh, không bị treo dù xử lý truy vấn nặng.
Chức năng
## Câu trả lời cho câu hỏi
## Hiệu năng Superset thế nào khi dữ liệu lớn?
-Superset không thực sự "lưu trữ" dữ liệu mà mọi truy vấn, xử lí do hệ quản trị cơ sở dữ liệu mà nó kết nối đảm nhiệm. Hiệu năng của Superset khi xử lý dữ liệu lớn phụ thuộc hoàn toàn vào tốc độ và khả năng xử lý của nguồn dữ liệu: nếu DB đã được tối ưu (phân vùng, index, dùng engine phân tán/phân tán như Druid, ClickHouse,...), Superset có thể trả về kết quả nhanh ngay cả với terabyte dữ liệu.
## Làm sao để tối ưu SQL Lab để tránh users chạy truy vấn tốn kém ?
- Giới hạn truy vấn – Cấu hình DISPLAY_MAX_ROW và SQLLAB_ASYNC_TIME_LIMIT_SEC để giới hạn số dòng trả về và thời gian chạy. ( ở trong file superset_config.py).
- Dùng Virtual Dataset – Tạo sẵn dataset đã tối ưu để người dùng sử dụng thay vì viết truy vấn từ đầu.
- Bật cache – Dùng Redis/Celery để lưu kết quả, tránh truy vấn lặp lại.
## Làm sao hạn chế chi phí khi Superset kết nối đến data warehouse tính phí (BigQuery, Snowflake)?
Tận dụng Cache Layer
Mục tiêu: Giảm số lần truy vấn lặp lại.
Cách làm: Bật và tối ưu cache (Redis hoặc Memcached) để lưu kết quả query, đặc biệt cho dashboard hay xem.
Hiệu quả: Người dùng load lại dashboard sẽ lấy từ cache thay vì query mới → không bị tính phí thêm
Giảm độ phức tạp và dung lượng dữ liệu của query
Mục tiêu: Tối ưu SQL để quét ít dữ liệu hơn.
Cách làm: lọc dữ liệu trước, chỉ chọn cột cần thiết,...
Hiệu quả: Mỗi truy vấn tiêu tốn ít GB hơn.
## Vai trò của metadata database trong kiến trúc Superset là gì, và tại sao cần tách riêng nó khỏi data warehouse chính?
Việc tách riêng giúp bảo mật, tránh làm chậm data warehouse và đảm bảo metadata luôn nhanh và độc lập.
## Trong Superset, cache layer vừa lưu trữ kết quả truy vấn vừa làm message broker — tại sao lại cần tích hợp 2 chức năng này vào cùng một tầng?
Giảm độ trễ khi load biểu đồ và đồng thời hỗ trợ giao tiếp giữa worker và backend cho tác vụ nền, giúp hệ thống đơn giản hơn và giảm phụ thuộc vào nhiều dịch vụ.