Trong các hệ thống lưu trữ dữ liệu tập trung lớn Data warehouse, tạm gọi là kho dữ liệu bao gồm nhiều thành phần, mỗi thành phần có một chức năng riêng trong đó thành phần chịu trách nhi
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
-QUẢN ĐÌNH THĂNG
NGHIÊN CỨU QUY TRÌNH ETL TRONG
XÂY DỰNG KHO DỮ LIỆU
Chuyên ngành: Khoa học máy tính
Mã số: 60.48.01
TÓM TẮT LUẬN VĂN THẠC SĨ
HÀ NỘI -2013
Trang 2Luận văn được hoàn thành tại:
HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
Người hướng dẫn khoa học: TS VŨ VĂN THỎA
Phản biện 1: ……… Phản biện 2: ………
Luận văn sẽ được bảo vệ trước Hội đồng chấm luận văn thạc sĩ tại Học viện Công nghệ Bưu chính Viễn thông
Vào lúc: giờ ngày tháng năm
Có thể tìm hiểu luận văn tại:
- Thư viện của Học viện Công nghệ Bưu chính Viễn thông
Trang 3MỞ ĐẦU
1 Lý do chọn đề tài
Tại Việt Nam, các tập đoàn kinh tế hiện đang có rất nhiều dữ liệu cần khai thác và cũng đang từng bước xây dựng và hoàn thiện hệ thống dữ liệu để phục vụ công tác khai thác nguồn tài nguyên
Trong các hệ thống lưu trữ dữ liệu tập trung lớn (Data warehouse), tạm gọi là kho dữ liệu bao gồm nhiều thành phần, mỗi thành phần có một chức năng riêng trong đó thành phần chịu trách nhiệm cho việc trích xuất, chuyển đổi và tải dữ liệu (Extract, Transform, Load hay gọi tắt là ETL) đóng vai trò then chốt Cụ thể hơn, hệ thống ETL đảm nhiệm việc trích rút các dữ liệu từ nhiều nguồn khác nhau, làm sạch, tùy chỉnh theo khuôn dạng nhất định và tải dữ liệu vào trong kho dữ liệu Việc xây dựng ETL chiếm phần lớn trong thời gian xây dựng hệ thống kho dữ liệu Vì vậy, việc đánh giá đúng vai trò và đầu tư đúng hướng cho việc xây dựng ETL sẽ giúp cho việc xây dựng kho dữ liệu được tốt nhất
Với những lý do nêu trên, luận văn chọn đề tài nghiên cứu về thiết kế, cài đặt và phát triển quá trinh ETL trong xây dựng kho dữ liệu Đồng thời, trong luận văn sẽ xây dựng ứng dụng ETL phục vụ cho hệ thống dữ liệu của doanh nghiệp viễn thông
1 Mục đích của đề tài: Nghiên cứu mô hình một quá trình ETL, phương pháp xây dựng
một chương trình ETL và áp dụng để xây dựng module ETL
2.Đối tượng và phạm vi nghiên cứu:Lý thuyết xây dựng một hệ thống ETL, tìm hiểu
một số hệ thống ETL trên thế giới, xây dựng mô hình một module ETL
3 Phương pháp nghiên cứu: Tìm hiểu các tài liệu xây dựng ETL trong kho dữ liệu, một
tài liệu của các hệ thống ETL trên thế giới
4 Kết cấu của luận văn
Luận văn gồm 3 chương
Chương 1: Tổng quan về ETL trong kho dữ liệu
Trình bày tóm lượt một số kiến thức quả kho dữ liệu và vị trí vai trò của ETL trong kho dữ liệu
Chương 2: Kiến trúc và các thành phần ETL
Kiến trúc của một hệ thống ETL, cách thức hoạt động và xây dựng một hệ thống ETL Một số những khó khăn gặp phải khi xây dựng hệ thống
Chương 3: Xây dựng module ETL
Tìm hiểu về một số hệ thống ETL trên thế giới, xây dựng một module ETL Áp dụng
cho doanh nghiệp viễn thông
Trang 4CHƯƠNG 1 TỔNG QUAN VỀ ETL TRONG KHO DỮ LIỆU
1.1 Kho dữ liệu
1.1.1 Khái niệm kho dữ liệu
Định nghĩa kho dữ liệu do W.H.Inmon [3] đưa ra : Kho dữ liệu (Data Warehouse) là tập hợp dữ liệu tích hợp theo hướng chủ đề từ nhiều nguồn khác nhau, tương đối ổn định trong khoảng thời gian, được cập nhật định kỳ nhằm hỗ trợ quá trình tạo quyết định
1.1.2 Các đặc trưng của kho dữ liệu
1.1.3 Mục tiêu của kho dữ liệu
Mục tiêu chính của kho dữ liệu là nhằm đáp ứng các tiêu chuẩn cơ bản sau:
- Truy cập dễ dàng
- Thông tin nhất quán
- Bảo mật
- Hỗ trợ ra quyết định
1.1.4 Kiến trúc kho dữ liệu
Mô hình kiến trúc của hệ thống kho dữ liệu cơ bản gồm có ba thành phần: Dữ liệu nguồn, vùng dữ liệu trung gian và kho dữ liệu
Trang 5Hình 1.1 Kiến trúc kho dữ liệu
1.1.3.1 Kho dữ liệu chủ đề
Kho dữ liệu chủ đề (Datamart - DM) là CSDL có những đặc điểm giống với kho dữ liệu nhưng với quy mô nhỏ hơn và lưu trữ dữ liệu về một lĩnh vực, một chủ đề Các Datamart có thể được hình thành từ một tập con dữ liệu của kho dữ liệu hoặc cũng
có thể được xây dựng độc lập và sau khi xây dựng xong các Datamart có thể được kết nối, tích hợp lại với nhau tạo thành kho dữ liệu
Có thể chia Datamart ra làm 2 loại: Datamart độc lập và Datamart phụ thuộc
1.1.3.2 Siêu dữ liệu
Trong việc tổ chức kho dữ liệu, không chỉ những người dùng đầu cuối mà ngay cả những nhân viên quản trị đều cần truy nhập toàn bộ thông tin trong bảng gồm các đối tượng cũng như các thuộc tính Do đó họ muốn biết một số vấn đề:
• Có thể tìm thấy dữ liệu ở đâu?
• Tồn tại những loại thông tin, dữ liệu nào?
• Dữ liệu thuộc loại nào, có dạng ra sao?
• Trong các cơ sở dữ liệu khác nhau thì dữ liệu có liên quan với nhau như thế nào?
• Dữ liệu được lấy từ đâu và thuộc ai quản lý?
Vì vậy hình thành một dạng cơ sở dữ liệu khác được gọi là siêu dữ liệu nhằm mô tả cấu trúc nội dung của cơ sở dữ liệu chính
1.1.3.3 Cơ sở dữ liệu kho dữ liệu
Cơ sở dữ liệu kho dữ liệu hầu hết được cài đặt dựa trên công nghệ của Hệ thống quản trị cơ sở dữ liệu quan hệ (RDBMS)
Trang 61.1.4 Xây dựng CSDL cho kho dữ liệu
Những dự án dùng phương pháp kho dữ liệu buộc phải lựa chọn giữa một mô hình
dữ liệu và một giản đồ dữ liệu liên quan trực quan cho việc phân tích nhưng không phong phú về thể hiện Khi phương pháp kho dữ liệu được tiếp tục phát triển thì những cách tiếp cận mới cho việc thiết kế giản đồ dữ liệu phù hợp hơn với việc phân tích được hình thành và đó là điều cốt yếu dẫn đến thành công của phương pháp kho dữ liệu Có các loại thiết kế giản đồ như sau:
- Giản đồ hình sao
- Giản đồ hình tuyết rơi
- Giản đồ kết hợp
1.2 ETL và vai trò ETL trong kho dữ liệu
1.2.1 Khái niệm ETL
Hệ thống ETL (Extract-Transform-Load) là nền tảng của kho dữ liệu Một hệ thống ETL được thiết kế cho việc trích xuất dữ liệu từ các hệ thống nguồn, chuyển đổi dữ liệu đảm bảo các nguồn độc lập có thể tích hợp, và cuối cùng dữ liệu sau chuyển đổi được đưa vào kho dữ liệu phục vụ mục đích phát triển ứng dụng hay phục vụ các mục đích kho dữ liệu
1.2.2 Vị trí và vai trò của ETL trong kho dữ liệu
Hệ thống ETL phải đóng một vai trò quan trọng trong việc cung cấp cho các ứng dụng người sử dụng một khuôn dạng dữ liệu phù hợp Quá trình ETL bắt đầu từ các hệ thống nguồn đến khi dữ liệu được đưa vào các bảng chiều, bảng sự kiện tốn kém phần lớn
thời gian của việc xây dựng kho dữ liệu
Trang 7CHƯƠNG 2 KIẾN TRÚC VÀ CÁC THÀNH PHẦN CỦA ETL
2.1 Kiến trúc của quá trình ETL trong kho dữ liệu
2.1.1 Các thành phần của ETL
Hình 2.1 Các thành phần của ETL
Trích xuất: Dữ liệu nguồn từ rất nhiều nguồn khác nhau và có thể có rất nhiều cấu trúc dữ
liệu khác nhau như nhiều loại cơ sở dữ liệu, từ tệp dữ liệu excel hay từ tệp dữ liệu thô Vì thế nhiệm vụ chính của bước này là trích xuất dữ liệu từ hệ thống nguồn để xử lý
Chuyển đổi : Đây là quá trình rất phức tạp dùng để chuyển đổi dữ liệu nguồn một mô hình
khác phù hợp và chuyển vào cơ sở dữ liệu đích Ở bước này sẽ phải sử dụng các phép chuyển đổi:
Chọn các cột dữ liệu phù hợp (chỉ chọn các cột cần thiết )
Chuyển đổi dữ liệu
Tạo ra các trường dữ liệu cần thiết mới
Lọc dữ liệu theo chủ đề
Sắp xếp dữ liệu theo các tiêu chí lưu chữ
Thực hiện các phép tổng hợp dữ liệu từ dữ liệu nguồn
Tạo ra các giá trị mới
Tìm kiếm hay so sánh dữ liệu
Trang 8Có thể nói đây là bước quan trọng nhất trong tiến trình ETL , nó thực hiện hầu hết các nhiệm vụ của tiến trình ETL
Tải dữ liệu: Đây là quá trình đẩy dữ liệu sau khi đã được chuyển đổi vào kho dữ liệu Dữ
liệu sau khi đã được chuyển đổi sẽ được tải vào kho dữ liệu
2.1.2 Yêu cầu với ETL
Danh sách sau đây liệt kê các hoạt động và tác vụ tạo nên quy trình ETL Danh sách này không hoàn toàn đúng với tất cả các kho dữ liệu, nhưng cho ta cái nhìn về những gì cần
được thực hiện để hoàn thành quá trình ETL
ETL Cho bảng sự kiện ETL cho bảng chiều Viết các thủ tục cho tải tất cả dữ liệu
Tổ chức vùng xử lý dữ liệu và công cụ kiểm thử
Kế hoạch cho các bảng tổng hợp Xác định các dữ liệu chuyển đổi và các luật làm sạch Thiết lập các luật trích xuất dữ liệu
Chuẩn bị cho việc ánh xạ giữa các thành phần dữ liệu đích với dữ liệu nguồn
Xác định nguồn dữ liệu, cả dữ liệu trong và ngoài Xác định các dữ liệu đích cần thiết trong kho dữ liệu
Hình2.1 Các bước chính của một quy trình ETL
- Kết hợp nhiều nguồn dữ liệu có cấu trúc vào bản ghi của cơ sở dữ liệu đích của kho
dữ liệu
- Chia nhỏ một dữ liệu nguồn dữ liệu có cấu trúc vào một số bản ghi của cơ sở dữ liệu đích
- Đọc dữ liệu từ các danh mục dữ liệu từ điển của hệ thống nguồn
- Đọc dữ liệu từ nhiều file có cấu trúc bao gồm tệp phẳng, tệp chỉ mục (VASM), và các hệ thống cơ sở dữ liệu cũ
- Tải các chi tiết cho việc tập hợp các bảng sự kiện
- Tổng hợp hoặc tóm tắt cho bảng sự kiện
- Chuyển đổi dữ liệu từ một định dạng nguồn thành định dạng khác trong nền tảng đích
- Lấy giá trị mục tiêu từ các trường đầu vào
Trang 9- Thay đổi giá trị khó hiểu bằng giá trị có nghĩa cho người dùng
2.1.3 Các yếu tố quan trọng đối với ETL
- Sự phức tạp của các chức năng trích xuất và chuyển đổi có nguyên nhân từ sự đa dạng của hệ thống nguồn
- Chức năng tải dữ liệu khi làm mới kho dữ liêu hoặc tải dữ liệu phải làm việc với lượng lớn dữ liệu vì vậy cần đảm bảo thời gian chạy
2.1.4 Các khó khăn gặp phải khi xây dựng hệ thống ETL
- Trích xuất dữ liệu phụ thuộc vào độ phức tạp của hệ thống nguồn
- Các chức năng chuyển đổi dữ liệu có thể thực hiện hàng loạt các phương thức chuyển đổi khác nhau
- Với chức năng tải dữ liệu Kích thước dữ liệu ban đầu được tải vào vùng đệm là rất lớn và được cập nhật từ nhiều nguồn khác nhau với nhiều tiến trình chạy
2.2 Vùng dữ liệu trung gian
Trong kiến trúc kho dữ liệu, thường có một vùng chứa dữ liệu gọi là vùng trung gian giành cho việc tiền xử lý dữ liệu Dữ liệu được chuyển từ nguồn vào vùng xử lí mà không qua (hoặc rất ít) xử lí nào
2.3 Trích xuất dữ liệu
Trích xuất dữ liệu hiệu quả là chìa khóa cho sự thành công của việc xây dựng kho dữ liệu Trong quá trình xây dựng hệ thống trích xuất ta cần quan tâm đến các vấn đề quan trọng và xây dựng một chiến lược trích xuất cho kho dữ liệu Đây là các vấn đề quan trọng trong trích xuất dữ liệu
2.3.1 Xác định nguồn dữ liệu
Xác định nguồn dữ liệu bao gồm việc xác định tất cả các nguồn dữ liệu thích hợp, các dữ liệu cần thiết để đưa vào kho dữ liệu
Trang 10Hình 2.3 Các bước xác định nguồn dữ liệu
2.3.2 Các kỹ thuật trích xuất dữ liệu
2.3.2.1 Các loại kỹ thuật trích xuất
- Nắm bắt dữ liệu tĩnh
- Nắm bắt dữ liệu tăng thêm
2.3.2.2 Các kỹ thuật trích xuất dữ liệu thời gian thực
Hình 2.5 Trích xuất dữ liệu theo thời gian thực
Trang 11- Nắm bắt dữ liệu qua bản ghi giao dịch
- Nắm bắt thông qua trigger cơ sở dữ liệu
- Nắm bắt trong các ứng dụng nguồn
2.3.2.3 Các kỹ thuật trích xuất dữ liệu chậm
Nắm bắt dựa trên ngày tháng và nhãn thời gian Mỗi khi một bản ghi được tạo ra hoặc cập
nhật nó có thẻ được đánh dấu bởi một nhãn biểu diễn bởi ngày và thời gian Nhãn thời gian cung cấp cơ sở cho việc chọn ra các bản ghi cho việc trích xuất
Trích xuất bằng cách so sánh tập tin Nếu các kỹ thuật trên không khả thi cho tập tin nguồn
cụ thể, khi đó kỹ thuật này được xem như biện pháp cuối cùng Kỹ thuật này cũng được gọi với tên khác là kỹ thuật so sánh sự khác nhau giữa ảnh chụp bởi vì nó so sánh 2 ảnh chụp của nguồn dữ liệu
2.3.2.4 Đánh giá các kỹ thuật trích xuất
2.4 Làm sạch và chuyển đổi dữ liệu
2.4.1 Các nhiệm vụ cơ bản của chuyển đổi dữ liệu
Trích chọn Nhiệm vụ này nằm ở phần đầu của toàn bộ quá trình chuyển đổi Có thể toàn
bộ hoặc một số bản ghi từ dữ liệu nguồn
Tách/Nhập Nhiệm vụ này bao gồm các loại thao tác dữ liệu để thực hiện việc chọn các
phần dữ liệu nguồn
Chuyển đổi chuẩn hóa giữa dữ liệu trích xuất từ các nguồn khác nhau và tạo ra các trường
mà người dùng thể sử dụng và có thể hiểu được
Tổng hợp.Khi việc lưu trữ dữ liệu tổng hợp được yêu cầu thay vì lưu trữ dữ liệu ở mức
thấp
Làm giàu dữ liệu: Nhiệm vụ này sắp xếp và đơn giản hóa các trường riêng biết để làm cho
chúng trở nên hữu dụng hơn cho kho dữ liệu
2.4.2 Các kiểu chuyển đổi dữ liệu
- Cơ cấu lại khóa
- Xóa bản ghi trùng
- Sửa lại định dạng
- Giải mã các trường
- Giá trị tính toán và giá trị thứ phát
- Chia nhỏ các trường đơn
- Gộp thông tin
Trang 12- Chuyển đổi Bộ ký tự
- Chuyển đổi đơn vị đo lường
- Chuyển đổi thời gian
- Tổng hợp
2.4.3 Tích hợp và hợp nhất dữ liệu
2.4.3.1 Xác định thực thể trong chuyển đổi dữ liệu
Thực thể có thể xuất hiện trong nhiều hệ thống khác nhau, làm thế nào để tổng hơp các nguồn này mà không sợ bị trùng lặp hay bị thiếu
- Bước đầu tiên, tất cả các bản gi, không phân biệt có trùng nhau hay không, được định danh duy nhất
- Bước thứ hai là hợp các bản ghi trùng một cách định kỳ thông qua các giải thuật tự động và kiểm tra thủ công
2.4.3.2 Tích hợp nhiều nguồn dữ liệu
Vấn đề này là kết quả của việc một phần tử dữ liệu có nhiều hơn một nguồn dữ liệu Một giải pháp đơn giản là đặt ưu tiên cho các nguồn và chọn nguồn có độ ưu tiên cao
2.4.4 Chuyển đổi các thuộc tính chiều
Trong phần này xem xét các loại thay đổi với thuộc tính chiều, các phương pháp để xử lý các loại thay đổi dữ liệu chiều
- Thay đổi loại 1 là sửa lỗi Các loại này được áp dụng cho kho dữ liệu không cần giữ tính lịch sử
- Loại 2 thay đổi giữ tính lịch sử của kho dữ liệu
- Loại 3 thay đổi là những thay đổi dự kiến nơi người dùng cần có khả năng phân tích các số liệu trong cả 2 cách – có thay đổi, không thay đổi
2.5 Tải dữ liệu
2.5.1 Các loại tải dữ liệu
Tải lần đầu tiên – tập hợp tất cả các bảng kho dữ liệu cho lần đầu tiên
Tải bổ sung – áp dụng trên những thay đổi khi cần thiết một cách định kì
Làm mới toàn bộ - xóa hoàn toàn nội dung của 1 hoặc nhiều bảng và tải lại với dữ liệu mới
Trang 132.5.1 Kỹ thuật và quy trình tải dữ liệu
Load.Nếu bảng mục tiêu đã tồn tại và dữ liệu đã tồn tại trong bảng, quá trình tải sẽ xóa dữ
liệu đã có và tải dữ liệu từ tập tin đến Nếu bảng đã rỗng trước khi tải, tiến trình tải đơn giản tải dữ liệu từ file đến
Append Tải append giống như một mở rộng của Load Nếu dữ liệu đã tồn tại trong bảng,
tiến trình append sẽ thêm vô điều kiện các dữ liệu vào, giữ nguyên dữ liệu hiện có trong các bảng mục tiêu Khi một bản ghi trùng với một bản ghi đã có, ta có thể xác định cách xử lý
dữ liệu đẩy trùng Các bản ghi đầu vào có thể cho phép thêm vào như là dữ liệu trùng Trong trường hợp khác, bản ghi trùng ở đầu và bị loại bỏ trong quá trình append
Destructive Merge.Trong mô hình này,ta tải dữ liệu đầu vào vào bảng dữ liệu đích Nếu
khóa chính của bản ghi đầu với giống khóa của một bản ghi đã có, khi đó nó cập nhật bản ghi đích tương ứng Nếu bản ghi đầu vào là một bản ghi mới không trùng khóa với bản ghi
đã có, khi đó bản ghi được thêm vào bảng dữ liệu đích
Constructive Merge.Chế độ này hơi khác so với Destructive Merge Nếu khóa chính của
một bản ghi trùng với khóa của bản ghi đã có, để lại bản ghi này, thêm bản ghi mới và đánh dấu bản ghi thêm mới như bản ghi thay thế cho bản ghi cũ
Cách áp dụng cho 3 loại tải của kho dữ liệu
*)Quy trình tải cho từng loại
Tải ban đầu: Với lần chạy đầu tiên của tải ban đầu ta sử dụng kiểu tải Load, sau đó tiếp tục
với chế độ Append
Tải gia tăng.Các ứng dụng liên tục thay đổi theo các hệ thống nguồn Vì vậy, ta cần một
phương pháp để nắm bắt được chu kỳ thay đổi
Tải làm tươi toàn bộ Loại ứng dụng liên quan đến định kỳ ghi lại toàn bộ kho dữ liệu Đôi
khi, ta cần làm mới lại một số bảng cụ thể Làm tươi một phần rất hiếm bởi vì mọi bảng chiều được gắn với bảng sự kiện
2.5.2 Làm tươi dữ liệu và cập nhât dữ liệu
Sau tải ban đầu, ta có thể duy trì kho dữ liệu và cập nhật nó với 2 phương thức:
Cập nhật - ứng dụng cho dữ liệu thay đổi trong hệ thống nguồn
Làm tươi – tải lại toàn bộ theo chu kỳ
2.5.3 Phương pháp tải với các bảng chiều
Trong kho dữ liệu, ta sử dụng khóa sinh bởi hệ thống Bản ghi trong hệ thống nguồn
có khóa của chúng Vì vậy, trước khi dữ liệu nguồn có thể đưa vào bảng chiều, cho dù là tải