1. Nguồn dữ liệu (Operational Source Systems).
2. Khu vực xử lý (Staging Area).
3. Khu vực trình bày (Data Presentation Area).
4. Công cụ truy cập dữ liệu (Data Access Tools).
Các thành phần trên tương tác với nhau như sau:
- Data từ Nguồn dữ liệu được nạp vào Khu vực xử lý.
- Data đã qua xử lý được nạp từ Khu vực xử lý vào Khu vực trình bày.
- Công cụ truy cập dữ liệu do người dùng cuối thao tác sẽ làm việc trên dữ liệu trong Khu vực trình bày.
I. Nguồn dữ liệu:
Nói một cách đơn giản, đây là nơi mà data xuất phát và thường là cơ sở dữ liệu của một ứng dụng nào đó. Và khách quan mà nói, nguồn dữ liệu là một thành phần nằm ngoài data warehouse. Như đã trình bày trong phần trước, dữ liệu của một hệ thống data warehouse thường đến từ nhiều nguồn khác nhau. Ví dụ: trong cùng một tổ chức, có phòng ban nhập dữ liệu vào Access database, trong khi phòng ban khác lại dùng bảng biểu Excel. Thậm chí có nơi dữ liệu được xuất ra từ những mainframe server 50, 60 tuổi theo dạng csv file. Do tính chất đa dạng của nguồn dữ liệu, nên các phương pháp chuyển tải dữ liệu từ nhiều nguồn về cùng một chỗ khá phong phú. Tùy theo quy định riêng của từng tổ chức, bạn có thể được phép truy cập trực tiếp dữ liệu nguồn. Nhưng cũng có nơi dữ liệu chỉ được truy cập qua Email, FTP, File Sharing... Thậm chí bạn có thể phải tạo ra các modules riêng để truy cập Web Services để lấy dữ liệu về. Nói như vậy để thấy, làm data warehouse không chỉ đơn thuần là database mà đòi hỏi developer phải có kiến thức rộng và tổng hợp cũng như những kỹ năng lập trình ứng dụng khác.
Xác định được dữ liệu đến từ những nguồn nào là một phần quan trọng trong việc xây dựng kiến trúc cho hệ thống data warehouse (data warehouse architecture) và là một trong những bước đầu tiên của ETL process.
II. Khu vực xử lý (Data Staging Area):
Có thể hiểu đây là nơi các hoạt động xử lý data diễn ra. Khu vực xử lý vừa là một nơi lưu trữ dữ liệu vừa nơi diễn ra các quá trình chuyển đổi dữ liệu trước khi chúng được đưa sang Khu vực trình bày.
Lý do cho sự tồn tại của thành phần này trong một hệ thống data warehouse là bởi vì quá trình ETL khá phức tạp. Dữ liệu phải được làm sạch (cleanse), chuyển đổi (convert), chuẩn hóa (conform). Những công đoạn này nhìn chung đòi hỏi phải xây dựng các temp tables để chứa dữ liệu đang được xử lý và các control tables để chứa metadata về quá trình ETL.
Staging Area cũng là nơi mà dữ liệu nguồn được lưu trữ như một dạng backup storage. Do quá trình ETL hoàn toàn có khả năng gặp trục trặc giữa chừng trong khi đang nạp dữ liệu từ Khu vực xử lý sang Khu vực trình bày, nên dữ liệu nguồn cần phải được lưu trữ để lúc nào cũng có thể được sử dụng lại. Có người sẽ hỏi tạo sao không yêu cầu các nguồn dữ liệu cung cấp lại dữ liệu một lần nữa ? Việc này trên thực tế nhiều lúc hoàn toàn không khả thi.
Một ví dụ đơn giản như sau: Quá trình ETL chạy vào buổi tối sử dụng dữ liệu của ngày hôm đó. Vì một lý do nào đó, nó buộc phải dừng lại giữa chừng. Ngày hôm sau, ETL phải chạy lại trong chế độ recovery. Ngoài việc phải dọn dẹp sạch sẽ những gì đã được lưu trữ dở dang trong presentation area, ETL đòi hỏi phải có dữ liệu nguồn để bắt đầu lại từ đầu. Lúc này, do đã sang ngày mới nên dữ liệu trong các cơ sở dữ liệu nguồn hoàn toàn có khả năng đã bị thay đổi và mất đi giá trị nguyên thủy của ngày hôm qua. Nếu vẫn tiếp tục, ETL sẽ sử dụng các dữ liệu không đúng, và do vậy phá vỡ tính đúng đắn của cả hệ thống. Nếu như dữ liệu nguồn đã được lưu trữ trong staging area từ tối hôm trước, mọi việc trở nên đơn giản hơn nhiều mà vẫn đảm bảo được tính vẹn toàn của data warehouse.
Các công cụ ETL hiện đại trên thị trường hiện nay có khả năng xử lý tương đối tốt một lượng lớn những yêu cầu về cleansing & converting, lookup, aggregation.... Nhiều lúc nó khiến người dùng cảm thấy có thể nạp dữ liệu trực tiếp từ nguồn vào data warehouse database, bỏ qua staging area. Nhưng như đã trình bày ở trên, cách làm này tuy có thể tiết kiệm được thời gian và không gian nhưng không hề ổn định. Những người làm data warehouse lâu năm có một nguyên tắc vàng: "Luôn phải có staging area".
Có thể hiểu đây là nơi các hoạt động xử lý data diễn ra. Khu vực xử lý vừa là một nơi lưu trữ dữ liệu vừa nơi diễn ra các quá trình chuyển đổi dữ liệu trước khi chúng được đưa sang Khu vực trình bày.
Lý do cho sự tồn tại của thành phần này trong một hệ thống data warehouse là bởi vì quá trình ETL khá phức tạp. Dữ liệu phải được làm sạch (cleanse), chuyển đổi (convert), chuẩn hóa (conform). Những công đoạn này nhìn chung đòi hỏi phải xây dựng các temp tables để chứa dữ liệu đang được xử lý và các control tables để chứa metadata về quá trình ETL.
Staging Area cũng là nơi mà dữ liệu nguồn được lưu trữ như một dạng backup storage. Do quá trình ETL hoàn toàn có khả năng gặp trục trặc giữa chừng trong khi đang nạp dữ liệu từ Khu vực xử lý sang Khu vực trình bày, nên dữ liệu nguồn cần phải được lưu trữ để lúc nào cũng có thể được sử dụng lại. Có người sẽ hỏi tạo sao không yêu cầu các nguồn dữ liệu cung cấp lại dữ liệu một lần nữa ? Việc này trên thực tế nhiều lúc hoàn toàn không khả thi.
Một ví dụ đơn giản như sau: Quá trình ETL chạy vào buổi tối sử dụng dữ liệu của ngày hôm đó. Vì một lý do nào đó, nó buộc phải dừng lại giữa chừng. Ngày hôm sau, ETL phải chạy lại trong chế độ recovery. Ngoài việc phải dọn dẹp sạch sẽ những gì đã được lưu trữ dở dang trong presentation area, ETL đòi hỏi phải có dữ liệu nguồn để bắt đầu lại từ đầu. Lúc này, do đã sang ngày mới nên dữ liệu trong các cơ sở dữ liệu nguồn hoàn toàn có khả năng đã bị thay đổi và mất đi giá trị nguyên thủy của ngày hôm qua. Nếu vẫn tiếp tục, ETL sẽ sử dụng các dữ liệu không đúng, và do vậy phá vỡ tính đúng đắn của cả hệ thống. Nếu như dữ liệu nguồn đã được lưu trữ trong staging area từ tối hôm trước, mọi việc trở nên đơn giản hơn nhiều mà vẫn đảm bảo được tính vẹn toàn của data warehouse.
Các công cụ ETL hiện đại trên thị trường hiện nay có khả năng xử lý tương đối tốt một lượng lớn những yêu cầu về cleansing & converting, lookup, aggregation.... Nhiều lúc nó khiến người dùng cảm thấy có thể nạp dữ liệu trực tiếp từ nguồn vào data warehouse database, bỏ qua staging area. Nhưng như đã trình bày ở trên, cách làm này tuy có thể tiết kiệm được thời gian và không gian nhưng không hề ổn định. Những người làm data warehouse lâu năm có một nguyên tắc vàng: "Luôn phải có staging area".
Không có nhận xét nào:
Đăng nhận xét