8 Mẫu Thiết Kế Kỹ Thuật Dữ Liệu Hiện Đại

Nội dung

    Đây là 8 mẫu thiết kế kỹ thuật dữ liệu mà mọi kiến trúc dữ liệu hiện đại đều dựa trên. Hãy tìm hiểu chúng một lần. Sau đó, mọi công cụ kỹ thuật dữ liệu sẽ trở nên dễ hiểu. Hầu hết các kỹ sư dữ liệu bắt đầu bằng việc học công cụ.

    8 Mẫu Thiết Kế Kỹ Thuật Dữ Liệu Hiện Đại

    Các công cụ chỉ cho bạn cách viết các đường ống dữ liệu (pipelines). Nhưng chúng không giải thích lý do đường ống bị hỏng. Điều này xảy ra khi một tệp đến muộn, hoặc khi lược đồ (schema) thay đổi qua đêm. Hoặc khi hai bảng điều khiển (dashboards) hiển thị các số liệu khác nhau.

    Khoảng trống này tồn tại vì các công cụ dạy cú pháp. Chúng không dạy thiết kế hệ thống.

    Nghiên cứu cho thấy 60 đến 73 phần trăm dữ liệu doanh nghiệp không bao giờ được sử dụng cho phân tích.

    Khối lượng lớn dữ liệu được thu thập, lưu trữ và xử lý. Nhưng chúng không bao giờ trở thành quyết định, bảng điều khiển hoặc mô hình.

    Các vấn đề về chất lượng dữ liệu làm tăng lãng phí.

    Nhiều tổ chức báo cáo các vấn đề nghiêm trọng. Đó là các bản ghi bị thiếu, không nhất quán hoặc không chính xác. Chúng âm thầm làm hỏng các phân tích hạ nguồn.

    Đây không phải là lỗi của Spark hay Kafka. Đây là những thất bại về kiến trúc.

    Sự không khớp mẫu (pattern mismatches) gây ra hầu hết thiệt hại.

    Các nhóm xây dựng hệ thống xử lý hàng loạt (batch systems) cho các trường hợp sử dụng thời gian thực.

    Họ coi hồ dữ liệu (data lakes) như kho dữ liệu (warehouses).

    Họ đẩy các lần tải lại đầy đủ (full reloads) vào các môi trường yêu cầu thay đổi tăng dần (incremental change).

    Mỗi lựa chọn này tạo ra rủi ro tiềm ẩn. Rủi ro này xuất hiện sau đó dưới dạng bảng điều khiển bị hỏng, khôi phục dữ liệu tốn kém (expensive backfills), hoặc mất niềm tin.

    Vào năm 2026, các kỹ sư dữ liệu nổi bật sẽ không phải là người thu thập công cụ vào sơ yếu lý lịch của họ.

    Họ sẽ là những người có thể kiểm tra một đường ống dữ liệu. Họ có thể xác định nơi độ trễ sẽ xảy ra. Họ cũng biết nơi dữ liệu sẽ bị mất. Và nơi hệ thống sẽ thất bại dưới tải trọng.

    Những kỹ năng này sẽ đến từ việc hiểu cách dữ liệu di chuyển. Đó là qua lưu trữ, tính toán và các trạng thái lỗi. Không phải từ việc ghi nhớ các API.

    Mọi kiến trúc dữ liệu sản xuất đều sử dụng các mẫu thiết kế cốt lõi giống nhau.

    Điều này đúng bất kể nó được xây dựng trên Spark, Flink, Snowflake, BigQuery, Iceberg, Delta, hay các đường ống tùy chỉnh.

    Các mẫu thiết kế này bao gồm:

    • Cách dữ liệu đi vào hệ thống.
    • Cách nó được lưu trữ và lập phiên bản.
    • Cách nó được chuyển đổi một cách an toàn.
    • Cách các đường ống phục hồi sau thất bại.
    • Cách dữ liệu được phục vụ và tiêu thụ.

    8 Mẫu Thiết Kế Kỹ Thuật Dữ Liệu Bạn Phải Học Để Làm Việc Với Các Kiến Trúc Dữ Liệu Hiện Đại

    Nếu bạn học 8 mẫu thiết kế này với tư cách là một kỹ sư dữ liệu, bạn sẽ ngừng đoán mò. Bạn sẽ bắt đầu thiết kế các hệ thống hoạt động tốt dưới áp lực.

    Bài viết này đóng vai trò là hướng dẫn học tập. Nó tập trung vào các mẫu thiết kế kỹ thuật dữ liệu. Các mẫu này quyết định liệu một nền tảng có mở rộng được không, có đáng tin cậy không, và có cung cấp các số liệu mà mọi người có thể tin tưởng không.

    Mẫu Thiết Kế Kỹ Thuật Dữ Liệu #1: Thu Nạp (Ingestion)

    Các mẫu thu nạp quyết định nhịp độ của hệ thống bạn.

    Thu nạp kiểm soát tốc độ nền tảng dữ liệu có thể phản ứng với thực tế.

    Mọi đường ống dữ liệu đều đưa ra một lựa chọn ngầm định về thời gian.

    Một số hệ thống được thiết kế để quan sát thế giới theo các ảnh chụp nhanh (snapshots).

    Các hệ thống khác được thiết kế để quan sát nó như một luồng sự kiện liên tục.

    Hầu hết các lỗi sản xuất xảy ra khi hai mô hình này bị trộn lẫn.

    Thu nạp không phải là hệ thống ống nước. Nó là kỹ thuật điều khiển giao thông.

    i. Xử lý theo lô (Batch)

    Hệ thống xử lý theo lô coi dữ liệu là các lô hàng định kỳ.

    Dữ liệu đến theo các khối lớn theo lịch trình.

    Các hệ thống hạ nguồn chỉ nhìn thấy thế giới tại các điểm kiểm tra đó.

    Sử dụng xử lý theo lô khi:

    • Báo cáo kinh doanh cập nhật hàng giờ hoặc hàng ngày.
    • Hệ thống nguồn chỉ có thể xuất tệp hoặc bản sao lưu cơ sở dữ liệu.
    • Khả năng dự đoán chi phí quan trọng hơn độ tươi mới của dữ liệu.

    Làm thế nào nó thất bại?

    Xử lý theo lô thất bại khi các nhóm cố gắng ép buộc nó vào các tác vụ thời gian thực.

    Một công việc hàng ngày kéo một bảng 200 GB sẽ không bao giờ hỗ trợ một bảng điều khiển làm mới sau mỗi năm phút.

    Điều này đúng bất kể bạn sử dụng bao nhiêu Spark.

    Nút thắt cổ chai không phải là tính toán. Nút thắt cổ chai là mẫu thu nạp.

    ii. Xử lý luồng (Streaming)

    Xử lý luồng coi mỗi bản ghi là một sự kiện.

    Dữ liệu chảy liên tục qua hệ thống.

    Điều này cho phép người tiêu dùng hạ nguồn phản ứng trong vài giây thay vì vài giờ.

    Sử dụng xử lý luồng khi:

    • Độ trễ cần được đo bằng giây hoặc phút.
    • Cảnh báo, phát hiện gian lận hoặc số liệu trực tiếp phụ thuộc vào độ tươi mới.
    • Các dịch vụ hướng sự kiện (event-driven services) đăng ký các thay đổi dữ liệu.

    Làm thế nào nó thất bại?

    Xử lý luồng thất bại khi nó được sử dụng cho dữ liệu mà không ai cần trong thời gian thực.

    Nhiều nhóm chạy các đường ống Kafka và Flink cho các bảng chỉ được truy vấn một lần mỗi ngày.

    Điều đó tạo ra chi phí vận hành, sự phức tạp trong quản lý trạng thái và các chế độ lỗi mà không mang lại lợi ích kinh doanh nào.

    iii. CDC (Change Data Capture)

    CDC chỉ di chuyển những gì đã thay đổi.

    Thay vì sao chép toàn bộ bảng, CDC truyền các thao tác chèn (inserts), cập nhật (updates) và xóa (deletes) trực tiếp từ nhật ký cơ sở dữ liệu.

    Sử dụng CDC khi:

    • Các cơ sở dữ liệu hoạt động là hệ thống ghi nhận (system of record).
    • Các bảng lớn nhưng thay đổi chậm.
    • Tải sản xuất phải ở mức tối thiểu.

    Làm thế nào nó thất bại?

    CDC thất bại khi các nhóm bỏ qua các thao tác xóa, thay đổi lược đồ và đảm bảo thứ tự.

    Một nguồn cấp dữ liệu CDC không có khóa chính chính xác, giữ lại nhật ký (log retention) hoặc tiến hóa lược đồ (schema evolution) sẽ tệ hơn một công việc theo lô.

    Điều này là do nó âm thầm làm hỏng trạng thái hạ nguồn.

    Quy tắc ngón tay cái:

    Chọn phương pháp thu nạp dựa trên độ trễ và tốc độ thay đổi, không phải theo xu hướng.

    Nếu bạn đưa ra quyết định sai, mọi thứ được xây dựng trên đó sẽ chống lại thực tế.

    Mẫu Thiết Kế Kỹ Thuật Dữ Liệu #2: Lưu Trữ (Storage)

    Các mẫu lưu trữ định hình mọi thứ ở hạ nguồn.

    Lưu trữ không phải là nơi dữ liệu nằm yên. Nhưng nó là nơi hành vi bị khóa lại.

    Ngay khi dữ liệu được ghi, bạn đã quyết định cách nó sẽ được truy vấn.

    Bạn cũng đã quyết định cách nó sẽ được quản lý, chi phí quét nó sẽ là bao nhiêu, và việc thay đổi nó sẽ khó khăn đến mức nào.

    Các nhóm coi lưu trữ là một lớp trung tính. Điều đó không đúng.

    Lưu trữ là phần có nhiều ý kiến nhất trong kiến trúc.

    i. Hồ dữ liệu (Data Lake)

    Hồ dữ liệu lưu trữ các tệp, không phải các bảng.

    Mọi thứ được ghi bằng các định dạng tệp mở như Parquet hoặc JSON vào bộ lưu trữ đối tượng.

    Không có lớp giao dịch tích hợp sẵn và không có lược đồ được thực thi. Lược đồ chỉ được thực thi theo những gì các công cụ đồng ý.

    Sử dụng hồ dữ liệu khi:

    • Bạn thu nạp dữ liệu thô có cấu trúc và không cấu trúc.
    • Khoa học dữ liệu và học máy cần một lịch sử đầy đủ.
    • Chi phí lưu trữ phải thấp nhất có thể.

    Làm thế nào nó thất bại?

    Hồ dữ liệu thất bại khi nhiều đường ống ghi vào cùng một thư mục mà không có sự phối hợp.

    Một công việc ghi đè các tệp trong khi một công việc khác đọc chúng.

    Các phân vùng (partitions) bị lệch. Các tệp cũ vẫn còn.

    Các truy vấn trả về kết quả không nhất quán.

    Mọi người gọi nó là đầm lầy. Nhưng vấn đề thực sự là thiếu kiểm soát giao dịch.

    ii. Kho dữ liệu (Data Warehouse)

    Kho dữ liệu lưu trữ các bảng với các hợp đồng chặt chẽ.

    Mọi thao tác chèn, cập nhật và truy vấn đều chạy qua một công cụ trung tâm. Công cụ này thực thi lược đồ, chỉ mục và các ràng buộc.

    Sử dụng kho dữ liệu khi:

    • Báo cáo kinh doanh cần hiệu suất có thể dự đoán được.
    • Các mô hình dữ liệu ổn định.
    • Quản trị và kiểm soát truy cập quan trọng.

    Làm thế nào nó thất bại?

    Kho dữ liệu thất bại khi chúng được sử dụng làm nơi lưu trữ dữ liệu thô.

    Việc đổ nhật ký bán cấu trúc và nguồn cấp dữ liệu CDC vào các lược đồ cứng nhắc tạo ra các lỗi thu nạp vô tận và chi phí tính toán đắt đỏ.

    Các nhóm cuối cùng phải chống lại mô hình thay vì sử dụng nó.

    iii. Lakehouse

    Lakehouse kết hợp các tệp mở với các quy tắc cơ sở dữ liệu.

    Chúng lưu trữ dữ liệu trong bộ lưu trữ đối tượng. Nhưng chúng thêm một nhật ký giao dịch, thực thi lược đồ và lập phiên bản lên trên.

    Delta Lake và Iceberg là ví dụ về mẫu này.

    Sử dụng lakehouse khi:

    • Bạn cần cả dữ liệu thô và dữ liệu đã được tinh chỉnh ở một nơi.
    • Xử lý luồng, xử lý theo lô và học máy chia sẻ cùng một dữ liệu.
    • Bạn cần khả năng du hành thời gian (time travel), ACID và tiến hóa lược đồ.

    Làm thế nào nó thất bại?

    Lakehouse thất bại khi các nhóm bỏ qua quản lý tệp và thiết kế bảng.

    Nếu không có nén (compaction), phân vùng và giữ lại dữ liệu (retention), các kế hoạch truy vấn sẽ suy giảm và siêu dữ liệu sẽ bùng nổ.

    Định dạng không cứu bạn khỏi kỹ thuật kém.

    Quy tắc ngón tay cái:

    Mẫu lưu trữ quyết định liệu dữ liệu của bạn hoạt động như các tệp hay như các bảng.

    Nếu bạn làm sai, mọi đường ống dữ liệu phía trên nó sẽ trở nên mong manh.

    Mẫu Thiết Kế Kỹ Thuật Dữ Liệu #3: Chuyển Đổi (Transformation)

    Các phép chuyển đổi quyết định mức độ thiệt hại mà một bản ghi xấu có thể gây ra.

    Hầu hết các nhóm nghĩ rằng chuyển đổi chỉ là các công việc SQL hoặc Spark.

    Trong thực tế, chuyển đổi là nơi dữ liệu thô trở thành dữ liệu đáng tin cậy.

    Mẫu bạn chọn quyết định liệu một hàng bị hỏng có làm hỏng một mô hình duy nhất hay làm hỏng toàn bộ kho dữ liệu của bạn.

    i. ETL (Extract, Transform, Load)

    Chuyển đổi trước khi tải.

    Dữ liệu được làm sạch, xác thực và định hình trước khi nó chạm vào bộ lưu trữ phân tích.

    Sử dụng ETL khi:

    • Dữ liệu quy định hoặc tài chính phải được xác thực trước.
    • Hệ thống nguồn có các hợp đồng chặt chẽ.
    • Lưu trữ đắt tiền.

    Làm thế nào nó thất bại?

    ETL thất bại khi logic kinh doanh thay đổi.

    Mỗi cột hoặc quy tắc mới yêu cầu xây dựng lại các công việc ở thượng nguồn.

    Các nhóm cuối cùng phải xử lý lại hàng terabyte dữ liệu chỉ để thêm một số liệu.

    ii. ELT (Extract, Load, Transform)

    Tải trước, chuyển đổi sau.

    Dữ liệu thô được lưu trữ, sau đó được chuyển đổi bên trong công cụ phân tích.

    Sử dụng ELT khi:

    • Bạn chạy trên các kho dữ liệu đám mây hoặc lakehouse.
    • Nhiều nhóm cần cùng một dữ liệu thô.
    • Các mô hình thay đổi thường xuyên.

    Làm thế nào nó thất bại?

    ELT thất bại khi dữ liệu thô trở thành một bãi chứa.

    Nếu không có các mô hình và kiểm thử mạnh mẽ, dữ liệu thượng nguồn bị hỏng sẽ rò rỉ vào các bảng điều khiển sản xuất.

    iii. Xử lý tăng dần (Incremental Processing)

    Chỉ xử lý những gì đã thay đổi.

    Thay vì tính toán lại mọi thứ, đường ống chỉ cập nhật các bản ghi mới hoặc đã sửa đổi.

    Điều này là bắt buộc vào năm 2026 vì:

    • Khối lượng dữ liệu tăng nhanh hơn ngân sách tính toán.
    • Dữ liệu đến muộn là điều bình thường.
    • Khôi phục dữ liệu phải rẻ.

    Làm thế nào nó thất bại?

    Các đường ống tăng dần thất bại khi các khóa không ổn định hoặc khi dấu thời gian (timestamps) sai.

    Theo dõi thay đổi kém tạo ra sự trùng lặp âm thầm hoặc mất dữ liệu.

    Quy tắc ngón tay cái:

    Các mẫu chuyển đổi định nghĩa cách trạng thái được cập nhật theo thời gian.

    Các mô hình làm mới đầy đủ tính toán lại lịch sử.

    Các mô hình tăng dần thay đổi nó.

    Vào năm 2026, chỉ các hệ thống được thiết kế để theo dõi và áp dụng thay đổi mới có thể mở rộng mà không làm hỏng chi phí, độ trễ hoặc tính đúng đắn của dữ liệu.

    Mẫu Thiết Kế Kỹ Thuật Dữ Liệu #4: Điều Phối (Orchestration)

    Các mẫu điều phối định nghĩa hành vi hệ thống.

    Điều phối không phải là lập lịch trình. Nhưng nó là cách hệ thống dữ liệu quyết định cái gì chạy, khi nào và tại sao.

    Hai đường ống có thể chạy cùng một mã. Nhưng chúng vẫn hoạt động hoàn toàn khác nhau dựa trên cách chúng được điều phối.

    Một cái sẽ có thể dự đoán được. Cái kia sẽ mong manh dưới tải trọng, các lần thử lại và các lỗi cục bộ.

    i. Điều phối dựa trên DAG (DAG-Based Orchestration)

    Luồng kiểm soát rõ ràng.

    Mỗi tác vụ chỉ chạy sau khi các phụ thuộc của nó thành công.

    Các công cụ như Airflow, Prefect và Dagster tuân theo mô hình này.

    Sử dụng DAG khi:

    • Dữ liệu phải được xử lý theo một thứ tự nghiêm ngặt.
    • Khôi phục và chạy lại thường xuyên.
    • Các lỗi phải có thể truy nguyên đến một bước cụ thể.

    Làm thế nào nó thất bại?

    DAG thất bại khi chúng cố gắng mô hình hóa các hệ thống hướng sự kiện.

    Một tệp đến muộn duy nhất có thể chặn toàn bộ biểu đồ.

    Các nhóm thêm cảm biến, chờ đợi và logic phân nhánh cho đến khi đường ống trở nên không thể duy trì được.

    ii. Điều phối hướng sự kiện (Event-Driven Orchestration)

    Luồng kiểm soát phản ứng.

    Các công việc bắt đầu khi dữ liệu đến hoặc khi một hệ thống khác phát ra một sự kiện.

    Kafka, pub/sub và webhooks điều khiển việc thực thi.

    Sử dụng sự kiện khi:

    • Dữ liệu đến không thể đoán trước.
    • Các hệ thống cần mở rộng độc lập.
    • Xử lý luồng hoặc microservices có liên quan.

    Làm thế nào nó thất bại?

    Các hệ thống hướng sự kiện thất bại khi khả năng quan sát yếu.

    Nếu không có khả năng truy nguyên, một sự kiện bị thiếu có thể âm thầm làm mất dữ liệu mà không có lỗi rõ ràng.

    Quy tắc ngón tay cái:

    DAG cung cấp cho bạn quyền kiểm soát thứ tự.

    Các sự kiện cung cấp cho bạn quyền kiểm soát thời gian.

    Hầu hết các nền tảng dữ liệu hiện đại đều cần cả hai. Điều này là do một số quy trình làm việc phụ thuộc vào thứ tự nghiêm ngặt. Trong khi những quy trình khác phụ thuộc vào việc phản hồi dữ liệu khi nó đến.

    Các hệ thống chỉ sử dụng một trong hai sẽ hoặc bỏ lỡ dữ liệu hoặc chặn dữ liệu.

    Mẫu Thiết Kế Kỹ Thuật Dữ Liệu #5: Độ Tin Cậy (Reliability)

    Các mẫu độ tin cậy quyết định liệu dữ liệu của bạn có tồn tại trong thực tế hay không.

    Mọi hệ thống dữ liệu đều thất bại. Câu hỏi duy nhất là liệu nó thất bại an toàn hay âm thầm.

    Hầu hết các đường ống dữ liệu hoạt động tốt vào những ngày đẹp trời.

    Thử thách thực sự xảy ra khi các công việc thử lại, các tệp đến hai lần, mạng bị trục trặc, hoặc các lần khôi phục dữ liệu va chạm với lưu lượng trực tiếp.

    Các mẫu độ tin cậy xác định liệu những sự kiện đó có tạo ra dữ liệu sạch hay sự hỏng hóc âm thầm.

    i. Công việc bất biến (Idempotent Jobs)

    Cùng một đầu vào. Cùng một kết quả.

    Một đường ống bất biến có thể chạy hai lần và vẫn tạo ra một đầu ra chính xác.

    Sử dụng tính bất biến khi:

    • Các công việc có thể được thử lại.
    • Các sự kiện có thể bị trùng lặp.
    • Các lần khôi phục dữ liệu chồng chéo với dữ liệu trực tiếp.

    Làm thế nào nó thất bại?

    Các công việc không bất biến đếm gấp đôi các bản ghi, ghi đè dữ liệu chính xác, hoặc tạo ra kết quả không nhất quán khi xảy ra các lần thử lại.

    ii. Thử lại và Hàng đợi thư chết (Retries and Dead Letter Queues)

    Các lỗi phải đi đến một nơi nào đó.

    Các lần thử lại xử lý các vấn đề tạm thời.

    Hàng đợi thư chết thu thập các bản ghi không thể xử lý. Sau đó chúng có thể được kiểm tra và sửa chữa.

    Sử dụng chúng khi:

    • Các nguồn không đáng tin cậy.
    • Chất lượng dữ liệu thay đổi.
    • Các hệ thống phụ thuộc vào các API thượng nguồn.

    Làm thế nào nó thất bại?

    Nếu không có hàng đợi thư chết, dữ liệu xấu sẽ biến mất.

    Các nhóm chỉ phát hiện ra vấn đề khi các số liệu bị lệch vài tuần sau đó.

    iii. Khôi phục dữ liệu (Backfills)

    Phát lại lịch sử một cách an toàn.

    Khôi phục dữ liệu cho phép bạn tính toán lại dữ liệu trong quá khứ mà không làm hỏng sản xuất.

    Sử dụng khôi phục dữ liệu khi:

    • Logic thay đổi.
    • Các lỗi được sửa.
    • Dữ liệu đến muộn.

    Làm thế nào nó thất bại?

    Khôi phục dữ liệu thất bại khi chúng ghi đè dữ liệu mới hơn. Hoặc khi chúng chạy với logic khác với các đường ống sản xuất.

    Quy tắc ngón tay cái:

    Các hệ thống dữ liệu sản xuất hoạt động trong một môi trường mà các lần thử lại, các sự kiện trùng lặp, dữ liệu đến muộn và các lỗi cục bộ được đảm bảo.

    Các đường ống phải được thiết kế để hội tụ về cùng một trạng thái chính xác. Điều này đúng bất kể dữ liệu được xử lý hoặc phát lại bao nhiêu lần.

    Nếu một đường ống chỉ hoạt động khi mọi thứ chạy một lần và theo thứ tự, nó sẽ làm hỏng dữ liệu ngay khi thực tế sai lệch.

    Mẫu Thiết Kế Kỹ Thuật Dữ Liệu #6: Chất Lượng và Quản Trị (Quality and Governance)

    Dữ liệu thô rẻ. Dữ liệu đáng tin cậy đắt tiền.

    Hầu hết các tổ chức không mất niềm tin vào dữ liệu vì một bản ghi xấu.

    Họ mất niềm tin vì không ai có thể giải thích các con số đến từ đâu. Hoặc tại sao chúng thay đổi. Hoặc liệu chúng có an toàn để sử dụng không.

    Các mẫu chất lượng và quản trị tồn tại để làm cho dữ liệu có thể bảo vệ được.

    i. Xác thực (Validation)

    Thất bại nhanh chóng ở ranh giới.

    Dữ liệu nên được kiểm tra khi nó đi vào hệ thống. Không phải vài tuần sau đó trong một bảng điều khiển.

    Sử dụng xác thực khi:

    • Nguồn cấp dữ liệu đến từ các hệ thống bên ngoài.
    • Các số liệu kinh doanh quan trọng phụ thuộc vào độ chính xác.
    • Lệch lược đồ (schema drift) được mong đợi.

    Làm thế nào nó thất bại?

    Nếu không có xác thực, dữ liệu xấu sẽ chảy qua mọi bảng hạ nguồn.

    Khi ai đó nhận ra, lỗi đã được sao chép vào các báo cáo, mô hình học máy và xuất khẩu.

    ii. Tiến hóa lược đồ (Schema Evolution)

    Thay đổi mà không làm hỏng người tiêu dùng.

    Lược đồ phải thay đổi. Nhưng các thay đổi phải được kiểm soát.

    Sử dụng tiến hóa lược đồ khi:

    • Các trường mới được thêm vào thường xuyên.
    • Các hợp đồng dữ liệu phát triển.
    • Khả năng tương thích ngược quan trọng.

    Làm thế nào nó thất bại?

    Việc thực thi lược đồ cứng nhắc gây ra lỗi thu nạp.

    Không thực thi lược đồ gây ra sự hỏng hóc âm thầm.

    Các hệ thống tốt theo dõi các phiên bản và áp dụng các quy tắc tương thích.

    iii. Dòng chảy dữ liệu (Lineage)

    Truy ngược mọi con số về nguồn gốc của nó.

    Dòng chảy dữ liệu cho thấy dữ liệu đã di chuyển, thay đổi và được sử dụng như thế nào.

    Sử dụng dòng chảy dữ liệu khi:

    • Kiểm toán hoặc tuân thủ tồn tại.
    • Các số liệu là quan trọng đối với kinh doanh.
    • Nhiều nhóm chia sẻ dữ liệu.

    Làm thế nào nó thất bại?

    Nếu không có dòng chảy dữ liệu, mọi vấn đề dữ liệu trở thành một trò đoán mò.

    Các nhóm tranh cãi thay vì gỡ lỗi.

    Nếu không có các mẫu này, nhóm sẽ lãng phí nhiều ngày để tìm ra đường ống nào gây ra lỗi.

    Quy tắc ngón tay cái:

    Chất lượng và quản trị dữ liệu phải hoạt động ở cùng lớp nơi dữ liệu thay đổi.

    Xác thực, kiểm soát lược đồ và dòng chảy dữ liệu nên là một phần của luồng dữ liệu.

    Khi quản trị được thêm vào sau đó, các lỗi đã lan truyền, và niềm tin đã mất.

    Mẫu Thiết Kế Kỹ Thuật Dữ Liệu #7: Phục Vụ (Serving)

    Các mẫu phục vụ quyết định liệu dữ liệu có tạo ra giá trị hay không.

    Một đường ống hoàn hảo mà không ai có thể sử dụng là một thất bại.

    Hầu hết các nền tảng dữ liệu bị hỏng ở chặng cuối.

    Dữ liệu nằm trong bộ lưu trữ, các mô hình chạy. Sau đó, người tiêu dùng gặp khó khăn để có được câu trả lời nhất quán.

    Các mẫu phục vụ quyết định cách dữ liệu được hiển thị, kiểm soát và tin cậy bởi phần còn lại của công ty.

    i. Lớp ngữ nghĩa (Semantic Layer)

    Một định nghĩa duy nhất về sự thật.

    Lớp ngữ nghĩa định nghĩa các số liệu, kích thước và logic kinh doanh một lần. Điều này giúp mọi bảng điều khiển và truy vấn sử dụng cùng các quy tắc.

    Sử dụng lớp ngữ nghĩa khi:

    • Nhiều công cụ BI tồn tại.
    • Các số liệu phải nhất quán.
    • Người dùng kinh doanh truy vấn dữ liệu trực tiếp.

    Làm thế nào nó thất bại?

    Nếu không có lớp ngữ nghĩa, mỗi nhóm sẽ viết SQL của riêng mình.

    Doanh thu, tỷ lệ bỏ khách hàng (churn) và tăng trưởng cuối cùng có nhiều định nghĩa khác nhau.

    ii. API (Application Programming Interfaces)

    Dữ liệu như một sản phẩm.

    API hiển thị dữ liệu cho các ứng dụng, mô hình học máy và hệ thống bên ngoài với quyền truy cập được kiểm soát và giới hạn tốc độ.

    Sử dụng API khi:

    • Dữ liệu cung cấp năng lượng cho sản phẩm.
    • Học máy cần các tính năng.
    • Các đối tác bên ngoài tiêu thụ dữ liệu.

    Làm thế nào nó thất bại?

    Truy cập trực tiếp cơ sở dữ liệu tạo ra sự kết nối chặt chẽ.

    Một truy vấn nặng có thể làm sập sản xuất.

    Quy tắc ngón tay cái:

    Dữ liệu nên được hiển thị thông qua các hợp đồng ổn định. Các hợp đồng này phải phù hợp với cách nó được tiêu thụ.

    Người dùng phân tích cần các số liệu được quản lý. Trong khi các ứng dụng cần các API có độ trễ thấp.

    Khi tất cả người tiêu dùng truy cập các bảng thô, hiệu suất, chi phí và tính đúng đắn sẽ sụp đổ.

    Mẫu Thiết Kế Kỹ Thuật Dữ Liệu #8: Hiệu Suất (Performance)

    Các mẫu hiệu suất quyết định chi phí của nền tảng bạn.

    Mọi nền tảng dữ liệu đều trông nhanh trong một bản demo. Hóa đơn sẽ xuất hiện trong sản xuất.

    Các mẫu hiệu suất xác định bạn quét bao nhiêu dữ liệu. Bạn tính toán lại bao nhiêu lần. Và bao nhiêu cơ sở hạ tầng vẫn không hoạt động.

    Hầu hết các nhóm không chi tiêu quá mức vì các truy vấn của họ chậm.

    Họ chi tiêu quá mức vì hệ thống của họ được thiết kế để di chuyển và xử lý nhiều dữ liệu hơn mức cần thiết.

    i. Phân vùng (Partitioning)

    Truy vấn ít dữ liệu hơn.

    Phân vùng tổ chức dữ liệu vật lý. Điều này giúp các truy vấn chỉ quét những gì chúng cần.

    Sử dụng phân vùng khi:

    • Các bảng lớn.
    • Các truy vấn lọc theo thời gian, khu vực hoặc khách hàng.
    • Khôi phục dữ liệu thường xuyên.

    Làm thế nào nó thất bại?

    Phân vùng kém buộc phải quét toàn bộ bảng.

    Một truy vấn bảng điều khiển có thể đọc hàng terabyte dữ liệu và gây ra chi phí tính toán khổng lồ.

    ii. Bộ nhớ đệm (Caching)

    Không tính toán cùng một câu trả lời hai lần.

    Bộ nhớ đệm lưu trữ kết quả gần người dùng. Điều này giúp các truy vấn lặp lại trả về ngay lập tức.

    Sử dụng bộ nhớ đệm khi:

    • Các bảng điều khiển làm mới thường xuyên.
    • Nhiều người dùng chạy các truy vấn tương tự.
    • Dữ liệu thay đổi chậm.

    Làm thế nào nó thất bại?

    Bộ nhớ đệm thất bại khi các quy tắc độ tươi mới không rõ ràng.

    Dữ liệu cũ âm thầm phá vỡ niềm tin.

    iii. Lưu trữ theo tầng và Tính toán theo yêu cầu (Tiered Storage and On-Demand Compute)

    Trả tiền cho việc sử dụng, không phải dung lượng.

    Dữ liệu nóng nằm trên bộ lưu trữ nhanh. Dữ liệu lạnh di chuyển đến bộ lưu trữ rẻ tiền.

    Tính toán chỉ hoạt động khi các truy vấn chạy.

    Sử dụng điều này khi:

    • Khối lượng công việc tăng đột biến.
    • Dữ liệu lịch sử lớn.
    • Kiểm soát chi phí quan trọng.

    Làm thế nào nó thất bại?

    Nếu không có quy tắc vòng đời và giám sát, dữ liệu cũ sẽ chất đống trên bộ lưu trữ đắt tiền. Và tính toán không bao giờ giảm quy mô.

    Quy tắc ngón tay cái:

    Chi phí và độ tin cậy của nền tảng dữ liệu được kiểm soát bởi lượng dữ liệu được quét, tính toán lại và giữ nóng.

    Phân vùng giới hạn những gì được đọc.

    Bộ nhớ đệm giới hạn những gì được tính toán lại.

    Lưu trữ theo tầng giới hạn những gì vẫn đắt tiền.

    Khi các mẫu này bị thiếu, các vấn đề về hiệu suất biến thành vấn đề chi phí.

    Các Kỹ Sư Chiến Thắng vào Năm 2026 Sẽ Suy Nghĩ Bằng Các Mẫu Thiết Kế, Không Phải Công Cụ

    Hầu hết các kỹ sư dữ liệu dành sự nghiệp của họ để chống lại các triệu chứng.

    Truy vấn chậm. Đường ống bị hỏng. Dữ liệu đến muộn. Các con số không khớp. Hóa đơn đám mây tăng vọt.

    Tất cả những vấn đề đó đều bắt nguồn từ cùng một nguyên nhân gốc rễ. Hệ thống được xây dựng trên các mẫu thiết kế kỹ thuật dữ liệu sai.

    Khi bạn hiểu thu nạp, lưu trữ, chuyển đổi, điều phối, độ tin cậy, quản trị, phục vụ và hiệu suất là các lựa chọn thiết kế. Không phải là công cụ.

    Sự hỗn loạn bắt đầu có ý nghĩa. Bạn ngừng phản ứng với các thất bại và bắt đầu dự đoán chúng.

    Bạn biết khi nào xử lý theo lô sẽ thất bại. Bạn biết khi nào CDC sẽ lệch.

    Bạn biết khi nào một lakehouse sẽ sụp đổ dưới sự phân vùng kém.

    Đây là sự khác biệt giữa một người chạy đường ống và một người thiết kế hệ thống dữ liệu vào năm 2026.

    Cuốn sách The Data Engineering Design Patterns Book của Bartosz Konieczny là một trong số ít tài nguyên coi các nền tảng dữ liệu là hệ thống. Không phải là tập hợp các công cụ.

    Nó bao gồm những ý tưởng tương tự bạn đã thấy ở đây. Nhưng với các kiến trúc thực tế, sự đánh đổi và các chế độ lỗi xuất hiện trong sản xuất.

    Các công cụ kỹ thuật dữ liệu sẽ tiếp tục thay đổi. Nhưng các mẫu thiết kế này sẽ cho phép bạn theo kịp.

    Tham khảo: medium.com

    Để lại một bình luận

    Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

    Chat with us
    Hello! How can I help you today?