0

Áp dụng ETL trong Datawarehouse

ELT là gì ?

ETL là thuật ngữ viết tắt của: Etract - Transform - Load và nó là 1 quá trình làm thế nào để chuyển biến dữ liệu thô (raw data) thành dữ liệu có thể đưa vào kho dữ liệu (hoặc Datawarehouse)

ELT đơn giản gồm 3 bước

1. Etract data: tức là ta thu gom dữ liệu từ nhiều nguồn khác nhau. Ví dụ như 1 bài toán thực tế mình đã từng gặp: đó là dữ liệu của các vendor (đối tác) cho công ty du lịch như booking.com, tripping.com, agoada.com v..v... Các vendors này có thế là site về khách sạn, nhà nghỉ hoặc vé máy bay

2. Transforms data: tức là quá trính chuyển đổi dữ liệu, như ví dụ mình đưa ra bên trên dữ liệu raw rất là phức tạp, vì nó tổng hợp từ nhiều nguồn, nhiều format, nhiều nghiệp vụ khác nhau. Nhiệm vụ của người phát triển ở đây là làm sao chuyển đổi các nguồn dữ liệu này thành một dữ liệu chuẩn cho sản phẩm của mình (khâu này khá là khó và cần người hiểu biết nghiệp vụ sâu 😄).

3. Load data: sau khi chuyển đổi dữ liệu thì dữ liệu mới này sẽ được đưa vào dữ liệu mới (thường được gọi là Datawarehouse). Các dữ liệu này sẽ được dùng cho BI hoặc các nghiệp vụ tương tự

Các vấn đề gặp phải khi triển khai ETL

1. Dữ liệu: Các dữ liệu gốc thường phức tạp, nhiều format, nghiệp vụ đa đạng và nhiều khi khá là nặng (có thể lên đến 10GB text). Vậy chúng ta sẽ xử lý thế nào:

  • Đầu tiên chúng ta phải chọn 1 ngôn ngữ xử lý văn bản tốt: Perl, Python ...
  • Regular Expression là việc không thể thiếu trong quá trình này
  • Và điều cuối cùng là nguồn dữ liệu chính xác (thông thường phải mua)

2. Cấu trúc dữ liệu phân tích: Dữ liệu phân tích là dữ liệu sau khi được transform(biến đổi), bạn hình dung là có rất nhiều vendors có nhiều cấu trúc và loại dữ liệu khác nhau. Mục đích của người phát triển là phải biến đổi tất cả các dữ liệu này thành 1 cấu trúc dữ liệu chuẩn. Ví dụ là 1 bảng gồm các cột như thế nào, điều này đòi hỏi quá trình xây dựng lâu dài

3 Cơ chế lưu Datawarehouse: Như đã biết dữ liệu phân tích phải được lưu trữ ở đâu (MySQL, SQL Server, Oracle ...), việc chọn lựa 1 hệ quản trị cơ sở dữ liệu khác nhau phụ thuộc vào nghiệp vụ và cách thức yêu cầu của từng doanh nghiệp.

4 Cơ chế xử lý data: Việc xây dựng 1 cơ chế load data là khá quan trọng. Vì hệ thống ETL là 1 hệ thống chạy liên tục khi có dữ liệu mới, do đó việc extract - transfrom - load data phải thực hiện liên tục và có độ trễ thấp. Như MySQL khi chúng ta insert 1 triệu bản ghi thì khá là mất công, thay vào đó ta nên dùng việc load data infile, quá trình này khá nhanh và an toàn

Mô hình ETL thực tế

Đây là mô hình thiết kế ETL cho 1 doanh nghiệp là đối tác của các hãng du lich, mục đích của doanh nghiệp này là collect và trung gian cho việc cho thuê và booking khách sạn, nhà nghỉ trên khắp thế giới.

Dữ liệu: à các data của các site booking có tiếng trên thế giới: booking.com, agoda.com, rental.com v....v...

Ngôn ngữ và DB: Perl và MySQL

Cơ chế xử lý data: Xây dựng các job hoạt động hàng tuần, hàng ngày hoặc hàng giờ để tiến hành collect thông tin đến các site vendors. Phân tích dữ liệu theo 1 cấu trúc đã xác định và tiến hành load data vào DB

Master - Slave: mster slave được xây dựng để đảm bảo quá trình xử lý ETL không ảnh hưởng đến người dùng và đảm bảo dữ liệu luôn luôn được cập nhật


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí