← Về danh sách
AI & Dữ liệu
#빅데이터#플랫폼아키텍처#데이터레이크#람다아키텍처#126회
Cập nhật lần cuối · 2026-09-22

Thiết kế kiến trúc nền tảng dữ liệu lớn

1. Tổng quan

A. Định nghĩa

Kiến trúc nền tảng dữ liệu lớn là cấu trúc kỹ thuật thiết kế phân tầng hạ tầng, cấu trúc dữ liệu và luồng vào–ra nhằm hỗ trợ ổn định toàn bộ quá trình thu thập (Ingest) → lưu trữ (Store) → xử lý (Process) → phân tích (Analyze) → trực quan hóa·phục vụ (Serve) đối với dữ liệu khối lượng lớn, đa dạng và tốc độ cao.

Lý do thiết kế nền tảng dữ liệu lớn khó về bản chất nằm ở chỗ một hệ thống phải đồng thời gánh cái gọi là 3V (Volume·Variety·Velocity). Khối lượng (Volume) của dữ liệu vượt terabyte lên tới petabyte; về đa dạng (Variety), dữ liệu có cấu trúc của CSDL quan hệ, dữ liệu bán cấu trúc như web log, JSON, dữ liệu phi cấu trúc như video, âm thanh, văn bản trộn lẫn; về tốc độ (Velocity), luồng thời gian thực đổ vào hàng chục nghìn bản ghi mỗi giây cùng tồn tại với batch khối lượng lớn chạy mỗi ngày một lần. Đôi khi còn mở rộng thành 5V khi thêm tính xác thực (Veracity) và giá trị (Value). Nếu cố gánh mọi đặc tính này chỉ bằng mở rộng dọc (scale-up) của một RDBMS truyền thống duy nhất thì hiệu năng, chi phí và tính sẵn sàng đồng loạt sụp đổ.

Vì vậy, nền tảng dữ liệu lớn được thiết kế phân tầng theo nguyên tắc tách biệt mối quan tâm (separation of concerns). Để chứa dữ liệu tăng vô hạn, đặt tầng hạ tầng phân tán gộp nhiều máy chủ ở dưới cùng, trên đó đặt tầng cấu trúc lưu trữ dữ liệu phù hợp với hình thái và mục đích của dữ liệu (Data Lake, Data Warehouse, Lakehouse), rồi lại đặt lên trên tầng xử lý·vào–ra bao quát cả batch và thời gian thực. Cuối cùng là tầng dịch vụ được phân tích, học máy, BI tiêu thụ. Chia tầng như vậy cho phép mở rộng và thay thế từng tầng độc lập, nên có thể ứng phó với dữ liệu bùng nổ mà không cần thiết kế lại toàn hệ thống.

B. Bối cảnh ra đời và nguyên tắc thiết kế

Bối cảnh ra đời của nền tảng dữ liệu lớn gắn với hai xu hướng đan xen. Một là bản thân lượng dữ liệu sinh ra bùng nổ theo cấp số nhân do sự lan rộng của di động, IoT, mạng xã hội; hai là sự trưởng thành của công nghệ tính toán mở rộng ngang (bài báo GFS·MapReduce của Google, và Hadoop — phiên bản mã nguồn mở của nó) gộp hàng trăm đến hàng nghìn máy chủ thương mại x86 (commodity hardware) để xử lý phân tán. Khi đạt được tính kinh tế tạo ra cùng hiệu năng bằng nhiều máy chủ rẻ thay vì một thiết bị hiệu năng cao đắt tiền, việc thu gom và phân tích cả dữ liệu log, cảm biến vốn trước đây bị bỏ đi đã trở nên khả thi.

Trong bối cảnh đó, thiết kế nền tảng dữ liệu lớn tuân theo các nguyên tắc sau. Thứ nhất, lấy khả năng mở rộng ngang (scale-out) — thêm máy chủ để tăng dung lượng và hiệu năng — làm cơ bản. Thứ hai, tách lưu trữ và xử lý theo đặc tính dữ liệu để xử lý dữ liệu có cấu trúc và phi cấu trúc bằng cách tối ưu riêng. Thứ ba, chọn cấu trúc xử lý (Lambda, Kappa) hỗ trợ đồng thời batch và thời gian thực. Thứ tư, bảo đảm tính sẵn sàng cao·khả năng chịu lỗi (replication·fault tolerance) để một số node chết thì toàn bộ không dừng. Thứ năm, nội tại hóa quản trị dữ liệu quản lý chất lượng, bảo mật, dòng dõi dữ liệu ngay từ đầu thiết kế.

2. Cấu trúc kiến trúc tổng thể (thành phần theo tầng)

Cốt lõi của nền tảng dữ liệu lớn là hiểu pipeline mà dữ liệu chảy qua bằng cách chia thành các tầng. Sơ đồ khái niệm dưới đây cho thấy toàn bộ bộ khung dữ liệu đi qua từ thu thập tới dịch vụ.

flowchart LR
  SRC["Nguồn dữ liệu<br/>(log·IoT·DB·SNS)"] --> I["Tầng thu thập<br/>(Kafka·Flume·NiFi)"]
  I --> STG["Tầng lưu trữ<br/>(HDFS·object storage·Data Lake)"]
  STG --> P["Tầng xử lý<br/>(Spark·Hadoop·Flink)"]
  P --> WH["Kho phân tích<br/>(Data Warehouse)"]
  WH --> SVC["Tầng dịch vụ<br/>(BI·ML·trực quan hóa)"]
  P -.thời gian thực.-> SVC
  style STG fill:#e8f0fe,stroke:#2f6fed,stroke-width:2px
  style P fill:#fef3e8,stroke:#ed8a2f,stroke-width:2px

Tầng thu thập là cửa ngõ kéo dữ liệu một cách ổn định từ các nguồn rải rác. Nguồn rất đa dạng: log ứng dụng, cảm biến IoT, CSDL vận hành (CDC), API bên ngoài, SNS. Khi đó đặt hàng đợi thông điệp/bộ đệm luồng để làm vùng đệm cho lưu lượng dồn dập tức thời và tách biệt bên sản xuất với bên tiêu thụ. Công nghệ tiêu biểu Apache Kafka nhận dữ liệu theo đơn vị topic, ghi tuần tự xuống đĩa và cho nhiều consumer đọc theo tốc độ riêng, ngăn việc bùng nổ thu thập lan ngay thành sự cố lưu trữ, xử lý. Flume thường dùng cho thu thập log, NiFi cho tích hợp dựa trên luồng.

Tầng lưu trữ là nền tảng lưu giữ dữ liệu nguồn ở dạng nguyên bản với khối lượng lớn. HDFS của Hadoop chia tệp lớn thành các khối và lưu phân tán, nhân bản (mặc định 3 bản) trên nhiều node, nhờ đó đạt được đồng thời dung lượng cỡ petabyte và khả năng chịu lỗi bằng máy chủ rẻ. Trên đám mây, vai trò này do object storage như Amazon S3, GCS đảm nhận, cho phép tách rời (decoupling) lưu trữ và tính toán nên thuận lợi cho vận hành co giãn — chỉ gắn tài nguyên xử lý khi cần rồi gỡ ra.

Tầng xử lý tính toán song song dữ liệu đã lưu để biến thành kết quả có ý nghĩa. Hadoop MapReduce thời kỳ đầu dựa trên đĩa nên chậm với phép toán lặp, nhưng khi Apache Spark nạp dữ liệu lên bộ nhớ để xử lý, học máy lặp và phân tích tương tác nhanh hơn gấp vài đến vài chục lần. Với streaming thuần túy cần độ trễ mức mili giây, Apache Flink thể hiện thế mạnh. Tầng xử lý phải gánh cả hai đường batch và thời gian thực nên trở thành trọng tâm của thiết kế kiến trúc.

Tầng dịch vụ là điểm con người và ứng dụng tiêu thụ kết quả xử lý. Dữ liệu đã làm sạch được nạp vào Data Warehouse (ví dụ CSDL phân tích dạng cột) để vẽ dashboard bằng công cụ BI, hoặc đưa vào pipeline ML để huấn luyện và phục vụ mô hình dự đoán.

Tầng Vai trò Công nghệ tiêu biểu
Thu thập Tiếp nhận·đệm dữ liệu nguồn Kafka, Flume, NiFi, Logstash
Lưu trữ Lưu phân tán dữ liệu nguyên bản khối lượng lớn HDFS, S3·object storage, Data Lake
Xử lý Tính toán song song batch·luồng Hadoop, Spark (in-memory), Flink
Phân tích·dịch vụ Tiêu thụ BI·ML·trực quan hóa Data Warehouse, ML, công cụ BI

Lý do căn bản chia tầng như vậy là tốc độ thay đổi và nhu cầu mở rộng của mỗi tầng khác nhau. Tầng thu thập tăng connector mỗi khi có nguồn mới, tầng lưu trữ tăng dung lượng tuyến tính theo lượng dữ liệu tích lũy, tầng xử lý dao động nhu cầu tài nguyên theo tính chất workload phân tích (batch, thời gian thực, ML). Nếu thiết kế gắn chặt các tầng, thay đổi một phần sẽ lan thành thiết kế lại toàn bộ, còn nếu tách ra thì có thể tiến hóa dần dần kiểu giữ nguyên lưu trữ mà chỉ thay bộ máy xử lý từ Hadoop sang Spark. Sự linh hoạt này là cốt lõi thực tiễn để đồng thời gánh dữ liệu bùng nổ và yêu cầu phân tích thay đổi nhanh.

3. Thiết kế cấu trúc dữ liệu và thiết kế cấu trúc vào–ra (xử lý)

A. Phân tích cấu trúc dữ liệu và lựa chọn kho lưu trữ

Thiết kế cấu trúc dữ liệu bắt đầu từ việc phân loại "xử lý cái gì". Chia dữ liệu thành có cấu trúc (bảng quan hệ), bán cấu trúc (JSON·XML·log), phi cấu trúc (video·âm thanh·tài liệu), và phải nắm nguồn, chu kỳ thu thập, chất lượng, mục đích sử dụng của từng dữ liệu thì mới xác lập được chiến lược kho lưu trữ. Bố trí theo đặc tính: dữ liệu có cấu trúc với lược đồ cố định đặt ở Warehouse, còn dữ liệu bán cấu trúc và phi cấu trúc có hình thái linh động đặt ở Lake.

Data Lake lưu dữ liệu nguồn ở dạng nguyên bản (raw) không qua xử lý. Đây là phương thức lược đồ khi đọc (schema-on-read) không áp đặt lược đồ tại thời điểm lưu, nên ưu điểm lớn nhất là tính linh hoạt: có thể gom trước với chi phí rẻ cả dữ liệu chưa xác định sẽ phân tích gì trong tương lai. Ngược lại, nếu không có kỷ luật quản lý thì có nguy cơ biến thành đầm lầy dữ liệu (data swamp) mà không ai dùng được.

Data Warehouse là kho chuyên dụng cho phân tích, nạp dữ liệu đã làm sạch và cấu trúc hóa bằng cách xác định lược đồ tại thời điểm lưu (schema-on-write). Chất lượng và tính nhất quán được bảo đảm nên mạnh về báo cáo có cấu trúc và BI, nhưng khó tiếp nhận dữ liệu phi cấu trúc và tốn chi phí mô hình hóa trước. Trong thực tế thường dùng cấu trúc 2 tầng: gom nguồn vào Lake và nâng bản đã làm sạch lên Warehouse. Gần đây Lakehouse kết hợp ưu điểm của cả hai đang nổi lên: đặt tầng quản lý giao dịch và lược đồ (ví dụ các định dạng bảng mở như Delta Lake, Apache Iceberg, Hudi) lên trên object storage giá rẻ của Lake để đạt độ tin cậy cấp Warehouse ngay trên Lake.

Kho lưu trữ Phương thức lược đồ Dữ liệu Điểm mạnh / giới hạn
Data Lake schema-on-read Có cấu trúc+bán cấu trúc+phi cấu trúc (nguyên bản) Linh hoạt·chi phí thấp / nguy cơ đầm lầy
Data Warehouse schema-on-write Có cấu trúc đã làm sạch Chất lượng·hiệu năng / yếu với phi cấu trúc
Lakehouse Dựa trên định dạng bảng Lake+giao dịch Tích hợp·tin cậy / độ trưởng thành

B. Cấu trúc vào–ra (xử lý) — Lambda và Kappa

Thiết kế cấu trúc vào–ra xác định dữ liệu được xử lý "khi nào, với độ trễ nào". Batch gom khối lượng lớn để tính chính xác và streaming xử lý ngay khi dữ liệu chảy vào để có độ trễ thấp có yêu cầu mâu thuẫn nhau, nên cần mẫu kiến trúc tích hợp chúng. Sơ đồ khái niệm dưới đây là luồng chi tiết của kiến trúc Lambda vận hành song song hai đường.

flowchart TB
  DATA["Dữ liệu đầu vào"] --> BATCH["Tầng batch<br/>(chính xác·tính lại toàn bộ)"]
  DATA --> SPEED["Tầng tốc độ<br/>(thời gian thực·xấp xỉ)"]
  BATCH --> SERVE["Tầng phục vụ<br/>(hợp nhất batch view+real-time view)"]
  SPEED --> SERVE
  SERVE --> Q["Truy vấn·phân tích"]
  style BATCH fill:#e8f0fe,stroke:#2f6fed,stroke-width:2px
  style SPEED fill:#fef3e8,stroke:#ed8a2f,stroke-width:2px

Kiến trúc Lambda (Lambda Architecture) cho cùng một dữ liệu chảy qua hai đường. Tầng batch định kỳ tính lại toàn bộ dữ liệu nên chính xác nhưng độ trễ lớn, tầng tốc độ chỉ xử lý xấp xỉ thời gian thực dữ liệu gần đây nên độ trễ nhỏ. Tầng phục vụ hợp nhất kết quả của hai bên để cung cấp đồng thời "tính chính xác" và "tính thời gian thực". Nhược điểm là phải xây dựng và duy trì riêng hai bản logic batch và stream nên nhân đôi mã·độ phức tạp vận hành lớn.

Kiến trúc Kappa (Kappa Architecture) loại bỏ batch để xóa sự nhân đôi này và thống nhất mọi xử lý vào một luồng duy nhất. Khi cần xử lý lại dữ liệu quá khứ thì phát lại (replay) log luồng (Kafka) từ đầu. Logic chỉ có một bản nên đơn giản, nhưng hiệu năng tái xử lý quy mô lớn và quản lý trạng thái là then chốt. Chọn bên nào được quyết định bởi sự đánh đổi giữa yêu cầu chính xác và độ phức tạp vận hành. Nếu tính thời gian thực ít quan trọng và tính nhất quán được ưu tiên hàng đầu thì chọn Lambda (hoặc lấy batch làm trung tâm), còn nếu là dịch vụ lấy luồng làm trung tâm và đơn giản hóa logic là quan trọng thì chọn Kappa.

4. So sánh và trường hợp áp dụng thực tế

Lựa chọn giữa batch và streaming không phải sở thích kỹ thuật đơn thuần mà được quyết định bởi độ trễ (latency) mà yêu cầu kinh doanh cho phép. Ví dụ, báo cáo tổng hợp doanh thu ngày hôm trước mỗi sáng không gặp vấn đề với độ trễ vài giờ nên batch là kinh tế, nhưng phát hiện giao dịch gian lận thanh toán thẻ (FDS) phải phán quyết trong vài trăm mili giây nên streaming là bắt buộc. Yêu cầu độ trễ chính là thứ phân định kiến trúc.

Nhìn vào trường hợp thực tế trong ngành sẽ thấy sự khác biệt về triết lý thiết kế. Netflix nổi tiếng với pipeline lấy streaming làm trung tâm, thu thập khối lượng lớn log xem qua Kafka để dùng cho gợi ý và tối ưu mã hóa video, còn Uber đặt xử lý luồng làm cốt lõi để tính nhu cầu và giá cước thời gian thực (surge pricing) đồng thời song hành phân tích batch bằng Data Lake quy mô lớn (tự phát triển Hudi). Tại Hàn Quốc, các doanh nghiệp thương mại điện tử và nhà mạng viễn thông lớn cũng vận hành rộng rãi cấu trúc cho dữ liệu log, đơn hàng chảy qua Kafka→Spark→Warehouse. Điểm chung của họ là không dùng một kiến trúc đáp án duy nhất mà kết hợp batch và stream theo yêu cầu độ trễ, độ chính xác của từng dịch vụ.

Yêu cầu Xử lý phù hợp Trường hợp
Cho phép trễ lớn·ưu tiên nhất quán Batch Quyết toán ngày/tháng, báo cáo quy định
Độ trễ cực thấp·phán quyết tức thì Streaming Phát hiện gian lận, gợi ý thời gian thực
Cần cả hai Lambda/Kappa Song hành dashboard+quyết toán

Một đánh đổi khác thường gặp trong thực tế là sự căng thẳng giữa tính linh hoạt của Data Lake và quản trị. Ban đầu với phán đoán "cứ gom hết lại đã", nguồn được nạp không giới hạn vào Lake, nhưng sau vài năm không có kỷ luật về siêu dữ liệu và chất lượng, sẽ rơi vào trạng thái không ai biết dữ liệu nào ở đâu và có đáng tin không. Việc Uber nói trên phát triển định dạng bảng riêng (Hudi) cũng là kết quả của nỗ lực giải quyết trực diện vấn đề đầm lầy này bằng cách trao cho Lake cỡ petabyte khả năng cập nhật tăng dần, giao dịch và dòng dõi dữ liệu. Tức là xu hướng các trường hợp quy mô lớn hội tụ về Lakehouse không phải trào lưu, mà cần được đọc như sự tiến hóa tất yếu nhằm đồng thời đạt được tính linh hoạt và độ tin cậy.

5. Chuyên sâu — Tiến hóa sang đám mây, Lakehouse và MLOps

Nền tảng dữ liệu lớn gần đây đang tiến hóa nhanh theo ba hướng, và đọc được xu hướng này là quan trọng dưới góc nhìn Kỹ sư chuyên nghiệp.

Thứ nhất là sự dịch chuyển từ Hadoop tại chỗ sang dịch vụ được quản lý trên đám mây. Thay cho gánh nặng tự xây dựng và vận hành cụm hàng trăm máy, phương thức tách lưu trữ (object storage như S3) với tính toán và chỉ gắn tài nguyên xử lý co giãn khi cần đang trở thành chuẩn. Nhờ đó hiệu quả tài nguyên và sự tiện lợi vận hành tăng lên đáng kể.

Thứ hai là sự hội tụ giữa Lake và Warehouse, tức sự nổi lên của Lakehouse. Khi các định dạng bảng mở như Delta Lake, Apache Iceberg, Apache Hudi cung cấp giao dịch ACID, tiến hóa lược đồ, truy vấn theo thời điểm (time travel) trên object storage giá rẻ, xu hướng hợp nhất cấu trúc kép "đặt bản nguyên gốc ở Lake và lại đặt bản làm sạch ở Warehouse" thành một tầng duy nhất trở nên rõ rệt.

Thứ ba là mở rộng từ phân tích sang pipeline AI/ML. Khi dữ liệu lưu trữ vượt qua báo cáo để trở thành nguyên liệu cho huấn luyện và phục vụ mô hình, MLOps — tự động hóa và vận hành đồng thời pipeline dữ liệu và vòng đời mô hình — cùng feature store quản lý các đặc trưng (feature) mà toàn tổ chức tái sử dụng đang được đưa vào như thành phần bắt buộc của nền tảng. Trong xu hướng này, nền tảng dữ liệu lớn đang mở rộng vai trò vượt khỏi nền tảng lưu trữ và phân tích đơn thuần để trở thành xương sống dữ liệu của dịch vụ AI.

6. Lưu ý và hàm ý

  1. Cân bằng giữa khả năng mở rộng và chi phí là then chốt đầu tiên của thiết kế. Dư địa scale-out chuẩn bị cho tăng trưởng dữ liệu là bắt buộc nhưng đầu tư trước quá mức là lãng phí, nên lời giải cho đánh đổi này là tách lưu trữ–tính toán và dùng tự động co giãn trên đám mây để điều chỉnh tài nguyên co giãn theo nhu cầu thực tế.
  2. Phải nội tại hóa quản trị và chất lượng dữ liệu từ đầu. Dù hạ tầng tốt đến đâu, không có quản lý siêu dữ liệu, chất lượng, bảo mật thì Lake sẽ thành 'đầm lầy dữ liệu'. Phải phản ánh danh mục dữ liệu và theo dõi dòng dõi (lineage) ngay ở giai đoạn thiết kế. [[data-governance]]
  3. Phán đoán chiến lược xử lý batch·thời gian thực dựa trên yêu cầu dịch vụ. Thiết kế quá mức muốn biến mọi thứ thành thời gian thực chỉ làm tăng độ phức tạp và chi phí. Cần chọn batch, Lambda, Kappa dựa trên ngưỡng độ trễ cho phép và đánh giá cùng gánh nặng vận hành của logic kép.
  4. Tuân thủ quy định bảo mật và quyền riêng tư là bắt buộc. Vì xử lý khối lượng lớn dữ liệu cá nhân, phải phản ánh vào kiến trúc kiểm soát truy cập, mã hóa, phi định danh và các quy định như Luật Bảo vệ Thông tin Cá nhân của Hàn Quốc, GDPR.
  5. Lấy sự tiến hóa sang Lakehouse, MLOps làm tiền đề, chọn các chuẩn mở (định dạng bảng mở, connector chuẩn) để giảm phụ thuộc nhà cung cấp (lock-in) cụ thể và bảo đảm dư địa mở rộng để liên kết dịch vụ AI là có lợi về chiến lược dài hạn.

Tài liệu tham khảo


Tóm tắt một câu: Kiến trúc nền tảng dữ liệu lớn là cấu trúc phân tầng có khả năng mở rộng hỗ trợ thu thập → lưu trữ → xử lý → phân tích·dịch vụ, đặt Data Lake/Data Warehouse/Lakehouse trên hạ tầng phân tán và kết hợp batch với thời gian thực (Lambda/Kappa); cốt lõi của thiết kế là khả năng mở rộng và chi phí, quản trị, cùng việc ứng phó với sự tiến hóa sang đám mây và MLOps.