Bỏ qua điều hướng, tới nội dung chính
Liên hệ

Thế và hình

Nền tảng dữ liệu mở rộng được, không phải đập đi làm lại

Một nước cờ tốt không chỉ có giá trị tại chỗ, mà tạo ra thế cho những nước sau. Hình xấu thì càng đánh càng đuối.

Kiến trúc dữ liệu cũng vậy. Một hệ thống dựng vội chạy được ngay, nhưng ràng buộc mọi lựa chọn về sau — và khoản đầu tư kế tiếp luôn đắt hơn khoản trước. Chúng tôi dựng theo kiến trúc lakehouse: lưu trữ tách rời tính toán, bảng lưu được lịch sử, luồng xử lý quản lý bằng mã nguồn. Mỗi bước mở rộng sau đó là lắp thêm, không phải làm lại.

Bài toán

Bốn dấu hiệu dữ liệu đang chạm giới hạn

Gặp từ hai dấu hiệu trở lên thì vấn đề không nằm ở việc thiếu công cụ báo cáo, mà ở chỗ dữ liệu chưa có nơi tập trung và chưa có quy trình xử lý.

Số liệu điều hành phụ thuộc vào một người

Báo cáo tổng hợp được ghép tay từ nhiều nguồn. Không ai soát lại được, và khi người đó vắng mặt thì kỳ báo cáo bị chậm.

Cùng một chỉ tiêu, nhiều con số khác nhau

Mỗi bộ phận lấy từ một hệ thống và tính theo một cách. Cuộc họp mất thời gian tranh luận số nào đúng thay vì bàn phải làm gì.

Số liệu tới tay lãnh đạo khi đã cũ

Quyết định của kỳ này dựa trên tình hình của kỳ trước. Khoảng trễ đó là chi phí cơ hội, dù không xuất hiện trên bất kỳ báo cáo tài chính nào.

Không truy lại được số liệu quá khứ

Hệ thống nghiệp vụ ghi đè trạng thái cũ. Khi cần giải trình một con số của kỳ trước, hoặc phục vụ kiểm toán, không dựng lại được.

Phân tầng

Bronze, Silver, Gold

Dữ liệu đi qua ba tầng, mỗi tầng một mức độ tin cậy. Cách phân tầng này giúp truy vết được một con số sai bắt nguồn từ đâu, thay vì phải dò lại toàn bộ luồng.

  1. Bronze

    Lớp thô

    Dữ liệu nạp về đúng như nguồn, không sửa gì. Giữ nguyên cả bản ghi lỗi và trùng lặp.

    Vì sao cần tầng này Khi phát hiện logic biến đổi sai, có thể tính lại từ đầu mà không cần xin lại dữ liệu từ hệ thống nguồn.

  2. Silver

    Lớp đã làm sạch

    Chuẩn hóa kiểu dữ liệu, khử trùng lặp, đối chiếu khóa giữa các nguồn, xử lý giá trị thiếu theo quy tắc thống nhất.

    Vì sao cần tầng này Đây là lớp kỹ sư dữ liệu và người phân tích dùng để khai thác. Một bản ghi một dòng, một khóa một nghĩa.

  3. Gold

    Lớp phục vụ

    Bảng tổng hợp theo từng chủ đề nghiệp vụ, chỉ tiêu đã tính sẵn, mô hình chiều phục vụ báo cáo.

    Vì sao cần tầng này Báo cáo đọc thẳng từ đây nên mở nhanh. Mỗi chỉ tiêu có đúng một định nghĩa, ghi thành tài liệu.

Ngăn xếp công nghệ

Tám thành phần, toàn bộ mã nguồn mở

Không có phí bản quyền trong danh sách này. Chi phí nằm ở vận hành, và đó là phần chúng tôi chịu trách nhiệm.

Nguồn

Hệ thống nghiệp vụ Oracle, PostgreSQL, MySQL
Dữ liệu phi cấu trúc Tệp, nhật ký, tài liệu

Nạp

Airflow Theo lịch
Rust, Python Xử lý luồng

Lưu trữ

Iceberg trên S3 Bronze, Silver, Gold
PostgreSQL Siêu dữ liệu

Khai thác

Trino Truy vấn phân tán
Superset Báo cáo, bảng điều khiển
Dữ liệu đi một chiều từ hệ thống nghiệp vụ sang lớp phân tích. Không có mũi tên ngược — lớp phân tích chỉ đọc, không ghi vào hệ thống nguồn.
Lớp Công nghệ Vai trò
Định dạng bảng Apache Iceberg Bảng có phiên bản, đọc lại được trạng thái tại một thời điểm bất kỳ, sửa lược đồ không phải chép lại toàn bộ dữ liệu.
Lưu trữ S3 vận hành trong nước Lưu trữ đối tượng, tách rời khỏi lớp tính toán nên mở rộng độc lập và chi phí thấp.
Truy vấn Trino Truy vấn phân tán trên dữ liệu ở lưu trữ đối tượng, đồng thời nối được sang cơ sở dữ liệu nghiệp vụ trong cùng một câu lệnh.
Điều phối Apache Airflow Lập lịch và theo dõi luồng xử lý, quản lý phụ thuộc giữa các bước, chạy lại phần lỗi mà không chạy lại toàn bộ.
Biến đổi dbt Logic biến đổi viết bằng SQL, quản lý bằng git, có kiểm thử dữ liệu và tài liệu sinh tự động.
Siêu dữ liệu PostgreSQL Lưu danh mục bảng, lịch sử chạy, nhật ký chất lượng dữ liệu và cấu hình luồng.
Xử lý Rust và Python Python cho phần lớn luồng xử lý và tích hợp. Rust cho các bước cần hiệu năng cao hoặc chạy thường trực.
Trực quan hóa Apache Superset Báo cáo và bảng điều khiển, phân quyền theo vai trò và theo đơn vị.
Ngôn ngữ xử lý

Python cho phạm vi rộng, Rust cho phần nóng

Chọn ngôn ngữ theo đặc điểm từng bước xử lý, không chọn một ngôn ngữ cho tất cả.

Python cho phần lớn khối lượng công việc

Hệ sinh thái thư viện dữ liệu của Python rộng nhất, và đội kỹ thuật của đơn vị thường đã quen thuộc. Luồng nạp dữ liệu, tích hợp và phần lớn bước biến đổi được viết bằng Python.

Rust cho các bước đòi hỏi hiệu năng

Những bước chạy liên tục hoặc xử lý khối lượng lớn — phân tích tệp nhật ký, chuẩn hóa luồng sự kiện, dịch vụ thường trực — được viết bằng Rust, giúp giảm tài nguyên máy chủ và loại bỏ một nhóm lỗi bộ nhớ.

Không thay thế phần đang vận hành ổn định

Chúng tôi không đề xuất chuyển sang Rust những thành phần Python đang hoạt động tốt. Chỉ áp dụng ở nơi đo được lợi ích, và nêu rõ đánh đổi: nguồn nhân lực Rust hạn chế hơn.

Nói thẳng

Bốn câu hỏi nên hỏi trước khi bắt đầu

Dự án dữ liệu thất bại thường không vì lý do kỹ thuật, mà vì làm quá sớm hoặc quá lớn so với nhu cầu thật.

Tổ chức nào không cần lakehouse?
Phần lớn tổ chức. Nếu dữ liệu vừa trong một cơ sở dữ liệu quan hệ và báo cáo chạy trong vài giây, thì thêm Iceberg, Trino và Airflow chỉ làm tăng chi phí vận hành mà không giải quyết được gì. Chúng tôi khuyến nghị bắt đầu bằng một kho phân tích PostgreSQL tách riêng, rồi mở rộng khi thực sự chạm giới hạn.
Chi phí thật của kiến trúc này là gì?
Không nằm ở phí bản quyền — toàn bộ ngăn xếp là mã nguồn mở. Chi phí nằm ở vận hành: cần người hiểu Trino, xử lý được khi luồng dữ liệu lỗi ngoài giờ làm việc, và duy trì logic dbt khi nghiệp vụ thay đổi. Đó là phần chúng tôi đảm nhận.
Có phải thay hệ thống đang chạy không?
Không. Lớp phân tích đọc dữ liệu ra, không ghi ngược vào hệ thống nghiệp vụ. Nếu toàn bộ nền tảng dữ liệu dừng, nghiệp vụ hằng ngày vẫn chạy bình thường. Đây là ràng buộc thiết kế.
Bắt đầu từ đâu?
Từ một chủ đề nghiệp vụ có người thực sự chờ số liệu. Dựng trọn vẹn một luồng từ nguồn tới báo cáo, để đơn vị thấy kết quả trước khi mở rộng. Dựng nền tảng đầy đủ rồi mới tìm việc cho nó là cách phổ biến nhất khiến dự án dữ liệu thất bại.

Bắt đầu bằng một chủ đề nghiệp vụ

Chúng tôi dựng trọn vẹn một luồng từ nguồn dữ liệu tới báo cáo cho một chủ đề có người thực sự chờ số liệu. Đơn vị thấy kết quả trước, rồi mới quyết định mở rộng.

Gọi 0969 45 98 68

hoặc gửi thư tới [email protected]