Data Lake
Data lake lưu trữ dữ liệu thô ở mọi định dạng trong hệ thống lưu trữ đối tượng chi phí thấp và áp dụng schema khi đọc dữ liệu. Tìm hiểu cách data lake so sánh với kho dữ liệu và lakehouse.
Data lake là kho lưu trữ trung tâm chứa dữ liệu ở định dạng thô, nguyên bản, từ dữ liệu xuất từ cơ sở dữ liệu và log JSON đến hình ảnh, video, âm thanh và tài liệu, thường nằm trên dịch vụ lưu trữ object cloud chi phí thấp; cấu trúc chỉ được áp dụng khi đọc dữ liệu. James Dixon, khi đó là giám đốc công nghệ của Pentaho, đặt ra thuật ngữ này vào năm 2010 để đối chiếu với data mart, vốn được ông ví như nước đóng chai đã qua xử lý và đóng gói, còn data lake là một khối dữ liệu lớn ở trạng thái tự nhiên mà nhiều người dùng có thể khai thác. Vì không cần mô hình hóa dữ liệu trước, lake có thể lưu giữ mọi thứ tổ chức thu thập, phù hợp với machine learning: dữ liệu huấn luyện cho model của ngày mai thường là dữ liệu thô mà không ai biết sẽ dùng vào việc gì khi lưu trữ.
Cách Data Lake hoạt động#
Lake tách biệt lưu trữ và tính toán. Các file nằm trong dịch vụ lưu trữ object như Amazon S3, Google Cloud Storage hoặc Azure Data Lake Storage; các engine như Spark, Trino hoặc tiến trình Python đọc trực tiếp các file đó, nhờ vậy mỗi team có thể mở rộng tài nguyên tính toán riêng mà không cần sao chép dữ liệu. Dữ liệu dạng bảng thường được lưu ở các định dạng cột mở như Apache Parquet, còn hình ảnh và video vẫn là các file thông thường, thường đi kèm manifest JSON hoặc Parquet chứa metadata và nhãn.
Phần lớn lake được tổ chức thành các zone theo mức độ tinh chỉnh, theo kiến trúc medallion mà Databricks gọi tên: zone thô (bronze) giữ nguyên dữ liệu như khi nhận được, zone đã làm sạch (silver) chứa dữ liệu đã xác thực và loại bỏ trùng lặp, còn zone được tuyển chọn (gold) chứa các bảng và tập dữ liệu sẵn sàng cho báo cáo hoặc huấn luyện. Catalog metadata như AWS Glue Data Catalog, Hive Metastore hoặc Unity Catalog ghi lại nội dung của từng tập dữ liệu, chủ sở hữu và những ai được phép đọc. Lake không có catalog và làm sạch dữ liệu sẽ thoái hóa thành “đầm lầy dữ liệu”: các file mà không ai có thể tìm thấy, tin cậy hoặc xóa an toàn.
Schema-on-Read#
Lake áp dụng schema khi đọc dữ liệu; cách này được gọi là schema-on-read. Người ghi có thể đưa dữ liệu vào ngay khi dữ liệu có sẵn, ngay cả khi hai nguồn không thống nhất về các trường, còn mỗi bên đọc tự quyết định các cột và kiểu dữ liệu cần dùng. Ví dụ này ghi hai file JSON thô có các trường khác nhau, sau đó đọc cả hai bằng một schema với Polars:
import json
from pathlib import Path
import polars as pl
# Vùng thô: hai camera ghi các sự kiện phát hiện dưới dạng JSON lines, mỗi camera có các trường riêng
Path("lake/raw").mkdir(parents=True, exist_ok=True)
Path("lake/raw/dock-1.jsonl").write_text(json.dumps({"label": "forklift", "conf": 0.91}))
Path("lake/raw/dock-2.jsonl").write_text(json.dumps({"label": "person", "conf": 0.62, "lux": 120}))
# Schema-on-read: bên đọc này chọn các cột và kiểu dữ liệu khi truy vấn file
schema = {"label": pl.String, "conf": pl.Float32, "lux": pl.Int32}
events = pl.scan_ndjson("lake/raw/*.jsonl", schema=schema, include_file_paths="source")
print(events.collect())Kết quả có hai hàng với các cột label, conf, lux và source. Camera đầu tiên chưa từng ghi lại lux, vì vậy giá trị của trường này trả về là null, còn source ghi lại file thô chứa từng hàng. Một job khác có thể đọc cùng các file bằng schema khác mà không cần ghi lại chúng.
Data Lake, Data Warehouse và Lakehouse#
- Data warehouse: Lưu trữ các bảng có cấu trúc đã làm sạch theo schema cố định mà dữ liệu phải tuân thủ khi được nạp (schema-on-write), thường sau bước trích xuất, chuyển đổi, nạp (ETL). Các warehouse như Snowflake, BigQuery và Redshift xử lý nhanh truy vấn SQL và business intelligence, nhưng kém linh hoạt hơn với hình ảnh, văn bản và các dữ liệu phi cấu trúc khác.
- Data lake: Lưu trữ mọi định dạng với chi phí thấp và chuyển đổi dữ liệu sau khi nạp (ELT), phù hợp cho khám phá dữ liệu, khai phá dữ liệu và machine learning. Các file lake thông thường không có transaction, vì vậy những bên ghi đồng thời có thể khiến bên đọc nhận được kết quả mới chỉ ghi một phần.
- Lakehouse: Bổ sung các tính năng của warehouse vào kho lưu trữ lake thông qua các định dạng bảng mở như Apache Iceberg, Delta Lake và Apache Hudi, cung cấp transaction ACID, thực thi schema và khả năng xem lại phiên bản bảng trước đó. Các nhà nghiên cứu của Databricks mô tả kiến trúc này trong một bài báo năm 2021.
Data Lake trong Machine Learning#
Với các team thị giác máy tính, lake lưu trữ mọi khung hình camera, metadata ghi nhận, chú thích và dự đoán mà các model đã triển khai tạo ra trên đó. Các chương trình xe tự hành tải log hành trình từ đội xe và khai thác chúng để tìm các tình huống hiếm gặp, chẳng hạn người đi bộ trong đêm mưa, rồi gán nhãn và thêm vào tập huấn luyện. Trong lĩnh vực y tế, ảnh quét và báo cáo đã khử định danh được tập hợp trong cùng một lake cung cấp dữ liệu cho các model phân tích ảnh y tế. Các dự đoán từ production được đưa trở lại lake để rà soát và gán nhãn lại, khép kín vòng lặp dữ liệu; snapshot bảng hoặc công cụ như DVC ghim chính xác phiên bản dữ liệu dùng để huấn luyện từng model. Feature store và cơ sở dữ liệu vector thường được xây dựng trên lake, cung cấp feature hoặc embedding được tạo từ các file thô trong lake.
Ultralytics Platform có thể biến một thư mục trong Amazon S3, Google Cloud Storage hoặc Azure Blob Storage thành tập dữ liệu huấn luyện mà không cần tải lên bản sao: nền tảng lập chỉ mục tại chỗ tối đa 500.000 object cho mỗi lần nhập bằng thông tin xác thực chỉ đọc, phân tích file nhãn YOLO .txt nằm cạnh hình ảnh và phân chia train, val, test dựa trên tên thư mục. Mỗi hình ảnh được lập chỉ mục sẽ gắn với phiên bản object tương ứng, vì vậy Platform sẽ từ chối an toàn mọi hình ảnh có file bị ghi đè trong lake.










