Blog

[Nhập môn Data Warehouse] Xây dựng bảng Fact

Bảng Fact chứa các đại lượng về hoạt động sản xuất kinh doanh của doanh nghiệp.

Các loại bảng Fact

Bảng fact mức chi tiết (Transaction grain fact table)

  • Bảng fact mức chi tiết mô tả các sự kiện xảy ra trong thế giới thực và được ghi vào DW.
  • Các tiêu chí và chiều trong bảng này không mô tả quá trình, chỉ ghi nhận giá trị thời điểm xảy ra sự kiện.
  • Bảng fact có quy mô (số lượng) lớn nhất và chi tiết nhất (gồm cả thời gian chính xác sự kiện xảy ra). Vì vậy ít được sử dụng ở mức người dùng cuối và là đầu vào để tổng hợp lên các bảng fact có mức tổng hợp cao hơn.

Bảng fact tổng hợp thường kỳ (Periodic snapshot fact table)

Đại diện cho một khung thời gian nhất định và sẽ lặp lại sau mỗi chu kỳ. Một số dạng thường gặp là tổng hợp theo ngày, theo tháng, theo năm.

Có 2 cách xây dựng dữ liệu cho bảng fact này:

  • Đợi đến cuối chu kỳ (thường là tháng) rồi tính một lần.
  • Duy trì và cập nhật bản ghi luỹ kế tháng, cộng dồn kết quả hàng ngày lại cho đến đầu tháng sau thì chốt tháng cũ và sinh ra bản ghi mới.

Bảng Fact luỹ kế (Accumulating snapshot fact table)

Loại bảng Fact này sẽ đại diện cho toàn bộ vòng đời của quy trình kinh doanh từ đầu đến cuối (tức là xử lý đơn hàng, xử lý yêu cầu).

Bảng Fact
Bảng Fact trong DW

Những vấn đề thường gặp khi ghi dữ liệu vào Fact

Vì là nơi tập trung số lượng lớn bản ghi trong DW nên việc ghi dữ liệu vào Fact không phải là việc đơn giản, cần phải được xử lý cẩn thận. Sau đây là một số vấn đề thường gặp khi ghi dữ liệu vào Fact:

Indexing

Index rất hữu ích đối với query, nhưng ảnh hưởng tiêu cực đến việc ghi dữ liệu. Trong một số trường hợp, bảng fact có nhiều index làm chậm việc ghi như thể cả tiến trình không hoạt động.

Cách xử lý: Xoá hết index trước khi ghi dữ liệu; ghi xong tạo lại index.

Partitioning

Partition cho phép bảng fact (và cả index) được chia thành các bảng dữ liệu nhỏ hơn về mặt vật lý. Điều này cho phép câu truy vấn có thể chạy đến đúng phân khu chứa dữ liệu cần thiết mà không cần tìm kiếm trên toàn bộ bảng dữ liệu.

Partitioning thường trong suốt với người dùng, được vận hành với DBA. Kỹ thuật thông dụng nhất là partitioning theo trường thời gian (năm/quý/tháng/tuần/ngày). Sai lầm thường thấy là người thiết kế thêm một trường thời gian vào bảng Fact và dùng trường đó để đánh partition. Nếu trường thời gian không xuất hiên trong câu truy vấn, partitioning là vô nghĩa. Vì vậy chỉ làm partitioning vào trường thời gian được người dùng quan tâm, sử dụng.

Rollback log

Mặc định tất cả CSDL quan hệ đều hỗ trợ xử lý lỗi khi transaction thất bại. Khi có lỗi, DB đọc bản ghi log này và sửa chữa tất cả thao tác cập nhật chưa được commit. Việc commit một transaction là thông báo cho DB biết giao dịch đã thành công và các tác động phải được cập nhật vào cơ sở dữ liệu.

Rollback log, hay còn gọi là redo log, có ý nghĩa rất lớn trong hệ thống nghiệp vụ. Nhưng trong DW lại là tính năng gây phiền phức, gây cản trở việc ghi dữ liệu vào bảng Fact:

  • Dữ liệu được ghi vào DW bằng một tiến trình được giám sát kỹ càng – các luồng ETL.
  • Dữ liệu được ghi hàng loạt vào DW.
  • Nếu bị lỗi, người vận hành có thể dễ dàng khắc phụ và cho chạy lại tiến trình.

Ghi dữ liệu

Một số kỹ thuật khi ghi một lượng lớn dữ liệu vào DW:

  • Tách ghi dữ liệu cũ và cập nhật dữ liệu mới: 
    • Cập nhật trước
    • Sau đó ghi dữ liệu mới.
  • Dùng công cụ ghi dữ liệu của DW: Các hệ quản trị CSDL thường cung cấp công cụ ghi dữ liệu, áp dụng nhiều kỹ thuật độc quyền nên tốc độ ghi nhanh hơn dùng câu lệnh INSERT.
  • Chia luồng ghi dữ liệu chạy song song: Khi phải ghi số lượng lớn bản ghi vào DW nên chia nhỏ khối dữ liệu ra nhiều phần, cho nhiều luồng ETL chạy song song.
  • Hạn chế sửa đổi: Chạy lệnh UPDATE trong DW thường chậm chạp và khó theo dõi. Một kỹ thuật thông dụng là xoá bản ghi cũ cần cập nhật rồi ghi lại chính bản ghi đó với thông tin đã được sửa.
  • Tạo bảng tổng hợp bên ngoài DB: Các phép sắp xếp, giao, tổng hợp dữ liệu nên được thưc hiện bên ngoài DW để đạt hiệu quả cao hơn. Nguyên nhân là tài nguyên cho DW thường có hạn và khó nâng cấp (theo chiều dọc: RAM, CPU; hay chiều ngang: thêm server).

>> Đọc thêm:

KHOÁ HỌC TRUY VẤN VÀ THAO TÁC DỮ LIỆU SQL TỪ CƠ BẢN ĐẾN NÂNG CAO

KHÓA HỌC DATA WAREHOUSE : TỔNG HỢP, CHUẨN HÓA VÀ XÂY DỰNG KHO DỮ LIỆU TRONG DOANH NGHIỆP

KHÓA HỌC DATA MODEL – THIẾT KẾ MÔ HÌNH DỮ LIỆU TRONG DOANH NGHIỆP

LỘ TRÌNH TRỞ THÀNH DATA ENGINEER CHO NGƯỜI MỚI BẮT ĐẦU

DATA ENGINEER LÀ GÌ? CÔNG VIỆC CHÍNH CỦA DATA ENGINEER? CÁC KỸ NĂNG CẦN THIẾT

Leave a Reply

Your email address will not be published. Required fields are marked *