Tải bản đầy đủ (.docx) (75 trang)

tổng hợp kho cơ sở dữ liệu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.7 MB, 75 trang )

MỞ ĐẦU: Trình bày lí do chọn đề tài, mục đích, đối tượng và phạm vi nghiên cứu.
TỔNG QUAN: Phân tích đánh giá các hướng nghiên cứu đã có của các tác giả
trong và ngoài nước liên quan đến đề tài; nêu những vấn đề còn tồn tại; chỉ ra
những vấn đề mà đề tài cần tập trung, nghiên cứu giải quyết.
NGHIÊN CỨU THỰC NGHIỆM HOẶC LÍ THUYẾT: Trình bày cơ sở lí thuyết,
lí luận, giả thiết khoa học và phương pháp nghiên cứu đã được sử dụng trong khoá
luận .
TRÌNH BÀY, ĐÁNH GIÁ BÀN LUẬN VỀ CÁC KẾT QUẢ: Mô tả ngắn gọn công
việc nghiên cứu khoa học đã tiến hành, các kết quả nghiên cứu khoa học hoặc kết
quả thực nghiệm. Đối với các đề tài ứng dụng có kết quả là sản phẩm phần mềm
phải có hồ sơ thiết kế, cài đặt, theo một trong các mô hình đã học (UML, )
KẾT LUẬN: Trình bày những kết quả đạt được, những đóng góp mới và những đề
xuất mới. Phần kết luận cần ngắn gọn, không có lời bàn và bình luận thêm.
HƯỚNG PHÁT TRIỂN: Kiến nghị về những hướng nghiên cứu tiếp theo.
DANH MỤC TÀI LIỆU THAM KHẢO: Chỉ bao gồm các tài liệu được trích dẫn,
sử dụng và đề cập tới để bàn luận trong khoá luận .
PHỤ LỤC.
1
2
Chương 1. Kho dữ liệu
1.1. Tổng quan về kho dữ liệu
1 Khái niệm
Khái niệm kho dữ liệu (data warehouse) lần đầu tiên được đưa ra bởi hai kiến
trúc sư người Ireland của công ty IBM là Barry Devlin và Paul Murphy năm
1988. Từ đó đến nay, khái niệm kho dữ liệu hầu như không có nhiều thay đổi.
Theo Barry Devlin và Paul Murphy, kho dữ liệu được hiểu là: “Một nhà kho
luận lí chứa tất cả những thông tin cần thiết phục vụ cho các báo cáo nghiệp vụ”
(Pentaho Solutions – Trang 111).
2 Các nhu cầu thực tế của kho dữ liệu
Kho dữ liệu là một cơ sở dữ liệu được thiết kế đặc biệt cho các nhu cầu liên
quan đến việc hỗ trợ ra quyết định. Từ góc nhìn của người dùng, kho dữ liệu


mang lại những lợi ích sau:
• Dữ liệu lưu trữ tập trung tại một nơi
• Thông tin luôn được cập nhật: Thông tin từ nhiều nguồn được cập nhật
định kì vào kho.
• Truy xuất nhanh: Kho dữ liệu được thiết kế đặc biệt cho việc truy xuất
nhanh với khối lượng thông tin lớn.
• Không giới hạn kích thước
• Lưu mọi thông tin lịch sử: Toàn bộ lịch sử dữ liệu được lưu vết, phục vụ
việc phân tích số liệu theo thời gian.
• Dễ hiểu: Kho dữ liệu được mô hình hoá dựa trên những thuật ngữ nghiệp
vụ, gần gũi và dễ hiểu.
• Rõ ràng và đồng nhất: Dữ liệu được hợp nhất và thống nhất dựa trên các
khái niệm nghiệp vụ.
• Dữ liệu chuẩn hoá: Tất cả dữ liệu được chuẩn hoá theo một chuẩn
chung.
3 Các đặc trưng của kho dữ liệu
Kho dữ liệu có các đặc trưng sau đây (theo Bill Inmon):
• Hướng chủ thể (subject oriented): Tất cả các thực thể và sự kiện liên
quan đến một chủ thể được kết nối với nhau.
3
• Biến thiên theo thời gian: Tất cả các thay đổi trên dữ liệu được theo dõi
để thể hiện sự biến đổi theo thời gian.
• Tính ổn định (non-volatile): Khi dữ liệu được lưu vào kho, nó sẽ không
bao giờ bị ghi đè hoặc xoá. Với nhiều kiến trúc cao cấp, tính chất này
không được duy trì trên từng phần nhưng về tổng thể cần được bảo đảm.
• Tính tích hợp: Kho dữ liệu chứa dữ liệu được tích hợp từ nhiều hệ thống
nguồn sau khi đã được làm sạch và chuẩn hoá.
Kho dữ liệu được xây dựng nhằm mục đích:
• Bảo đảm hiệu suất hoạt động của hệ thống sản xuất không bị gián đoạn
bởi các truy vấn dạng đặc biệt dạng phân tích. Các truy vấn loại này vốn

có thời gian truy vấn lâu trên lượng dữ liệu lớn.
• Bảo đảm các thông tin không bị thay đổi trong khi người dùng cuối truy
vấn.
1.2. Kiến trúc kho dữ liệu
4 Các kiến trúc chính
Kiến trúc chung của một kho dữ liệu thường gồm nhiều vùng chứa dữ liệu
(data store) nhỏ. Những vùng chứa dữ liệu này được phân loại dựa trên cấu
trúc bao gồm (Building a DW – With examples in SQL Server – Trang 29-39):
• Vùng xử lí (staging area): Là vùng chứa dữ liệu chuẩn bị cho việc biến
đổi dữ liệu thu được từ nguồn trước khi chuyển qua các vùng chứa dữ
liệu khác trong kho dữ liệu. Trong các hình vẽ, vùng này được viết tắt là
“staging” hay “STG”.
• Vùng chứa dữ liệu dạng chuẩn hoá (normalized data store): Là vùng
chứa dữ liệu trung gian sau khi đã được biến đổi và tích hợp từ nhiều
nguồn khác nhau. Trong vùng này, dữ liệu được lưu trữ ở dạng chuẩn
cao, thường là dạng chuẩn 3. Dữ liệu trong vùng này đã sẵn sàng được
nạp vào vùng kho dữ liệu đầu cuối mà không cần nhiều biến đổi phức
tạp. Trong các hình vẽ, vùng này được viết tắt là NDS.
• Vùng chứa dữ liệu hoạt động (operational data store): Là vùng chứa dữ
liệu dạng lai (hybrid) giữa vùng dữ liệu chuẩn hoá và cơ sở dữ liệu hoạt
động (operational database). Mục đích của nó ngoài việc hỗ trợ cho việc
4
nạp dữ liệu vào kho dữ liệu đầu cuối, còn được dùng như là cơ sở dữ liệu
hoạt động tập trung (centralized).
• Kho dữ liệu đầu cuối, còn gọi là vùng dữ liệu đa chiều (dimesional data
store): Là vùng kho dữ liệu đầu cuối, phía người dùng. Trong vùng này,
dữ liệu được lưu trữ dưới dạng mô hình hoá đa chiều (dimensional
modeling) nhằm hỗ trợ các ứng dụng hay truy vấn dạng phân tích đầu
cuối. Trong các hình vẽ, vùng này được viết tắt là DDS, DW hay DWH.
Kho dữ liệu có rất nhiều loại kiến trúc. Từ đơn giản nhất, chỉ gồm một kho

dữ liệu đầu cuối, đến rất phức tạp, bao gồm nhiều kho dữ liệu trung gian, được
sử dụng trong những hệ thống lớn. Tuy nhiên, hầu hết các kiến trúc đều dựa
trên 3 kiến trúc chung phổ biến sau:
• Kiến trúc DDS đơn (single DDS) chỉ bao gồm kho dữ liệu đầu cuối và
một vùng xử lí.
• Kiến trúc NDS+DDS là kiến trúc bao gồm vùng xử lí, vùng dữ liệu
chuẩn hoá, và kho dữ liệu đầu cuối.
• Kiến trúc ODS+DDS tương tự như kiến trúc NDS+DDS nhưng sử dụng
vùng dữ liệu hoạt động thay cho vùng dữ liệu chuẩn hoá.
Mỗi kiến trúc đều có những ưu điểm và nhược điểm riêng. Sau đây, chúng
ta sẽ phân tích sơ qua từng kiến trúc.
1 Kiến trúc DDS đơn
Hình 1.2.1.1-1: Kiến trúc kho dữ liệu dạng DDS đơn
5
Kiến trúc DDS đơn là một trong những dạng kiến trúc đơn giản nhất của
kho dữ liệu. Kiến trúc này có thành phần chính là một kho dữ liệu trung
tâm.
Dữ liệu từ nhiều hệ thống nguồn được nạp vào vùng xử lí thông qua một
gói ETL (Extract-Transform-Load: Rút trích-Biến đổi-Nạp – Xem chương
3). Gói ETL này sẽ rút trích dữ liệu từ nhiều nguồn khác nhau, thực hiện
một số phép biến đổi dữ liệu đơn giản. Dữ liệu sau đó được chứa trong
vùng xử lí.
Dữ liệu trong vùng xử lí sau khi được xử lí sơ bộ sẽ được biến đổi thông
qua một gói ETL khác để đưa vào kho dữ liệu đầu cuối. Quá trình biến đổi
này bao gồm nhiều công đoạn từ việc làm sạch, chuẩn hoá dữ liệu đến việc
quản lí chất lượng và lịch sử thay đổi của dữ liệu.
Kho dữ liệu đầu cuối chứa những dữ liệu đã được biến đổi, chuẩn hoá,
và lưu trữ dưới dạng mô hình đa chiều, sẵn sàng phục vụ cho các ứng dụng
đầu cuối.
• Ưu điểm:

o Kiến trúc đơn giản.
o Ít công đoạn xử lí.
o Thuận lợi khi xây dựng những kho dữ liệu nhỏ.
• Nhược điểm:
o Không hỗ trợ việc tạo ra nhiều kho dữ liệu phục vụ cho nhiều mục
đích khác nhau dựa trên dữ liệu sẵn có. Nếu có nhu cầu chỉ cần sử
dụng một phần của kho dữ liệu (data-mart) thì phải xây dựng một
gói ETL khác phục vụ quá trình này.
o Không tái sử dụng được gói ETL đã làm. Mỗi một quy trình rút
trích-biến đổi-nạp cho từng thành phần trong kho dữ liệu đầu cuối
được thực hiện độc lập. Việc này gây khó khăn cho việc xây dựng
những kho dữ liệu lớn.
2 Kiến trúc NDS+DDS
6
Hình 1.2.1.2-1: Kiến trúc kho dữ liệu dạng NDS+DDS
Đây là một kiến trúc khá phổ biến. Kiến trúc này tương tự như kiến trúc
DDS đơn, nhưng có thêm một vùng chứa dữ liệu trung gian là vùng chứa
dữ liệu chuẩn hoá NDS.
Dữ liệu sau khi được làm sạch, thay vì đưa thẳng vào kho dữ liệu đầu
cuối, nó được lưu trong vùng chứa dữ liệu trung gian. Vùng chứa dữ liệu
trung gian đóng vai trò như là một cơ sở dữ liệu tập trung, đã được chuẩn
hoá, bao gồm cả dữ liệu lịch sử. Việc nạp vào kho dữ liệu đầu cuối sẽ
không cần qua công đoạn làm sạch và quản lí chất lượng dữ liệu nữa.
• Ưu điểm:
o Lưu trữ dữ liệu tập trung đã được làm sạch.
o Chứa dữ liệu lịch sử.
o Sẵn sàng cho việc nạp vào nhiều kho dữ liệu đầu cuối.
o Tái sử dụng được các gói ETL.
• Nhược điểm:
o Kiến trúc phức tạp

o Tốn thêm không gian lưu trữ.
o Thời gian thực hiện một chu kì nạp dữ liệu lâu hơn so với kiến trúc
DDS đơn.
o Vùng chứa dữ liệu trung gian không được tận dụng vào mục đích
khác.
3 Kiến trúc ODS+DDS
7
Hình 1.2.1.3-1: Kiến trúc kho dữ liệu dạng ODS+DDS
Kiến trúc này có nhiều điểm tương đồng với kiến trúc NDS+DDS. Như
trong hình vẽ, thay vì sử dụng một vùng dữ liệu chuẩn hoá làm vùng dữ liệu
trung gian, người ta sử dụng một vùng dữ liệu hoạt động thay cho nó.
Vùng dữ liệu hoạt động này cũng là một cơ sở dữ liệu dạng chuẩn hoá
cao. Tuy nhiên, nó không lưu dữ liệu lịch sử. Vùng dữ liệu hoạt động có
cấu trúc nghiêng về dạng cơ sở dữ liệu phục vụ giao tác (OLTP) nhiều hơn.
Nó đóng vai trò như là một cơ sở dữ liệu tập trung mà ở đó, ứng dụng đầu
cuối cho phép khai thác trên nó.
Có thể thấy những ưu điểm và nhược điểm của nó so với kiến trúc
NDS+DDS như sau:
• Ưu điểm:
o Lưu trữ dữ liệu tập trung đã được làm sạch.
o Tận dụng làm cơ sở dữ liệu tập trung phục vụ giao tác cho ứng
dụng đầu cuối.
• Nhược điểm:
o Không chứa dữ liệu lịch sử.
o Các gói ETL để đưa dữ liệu từ vùng dữ liệu hoạt động vào kho dữ
liệu đầu cuối phức tạp hơn.
o Vùng dữ liệu hoạt động có thể bị gián đoạn khi nạp kho dữ liệu.
o Không tái sử dụng được các gói ETL.
Trong nội dung của cuốn khoá luận này, nội dung sẽ tập trung vào kiến
trúc NDS+DDS.

5 Vùng xử lí
8
Hình 1.2.2-1: Vùng xử lí
Thông thường, trong tất cả các kiến trúc kho dữ liệu, luôn có một vùng
chứa dữ liệu gọi là vùng xử lí. Dữ liệu được chuyển từ nhiều nguồn vào vùng
xử lí mà không thông qua (hoặc rất ít) công đoạn xử lí nào.
Hẳn nhiên, có thể nạp trực tiếp dữ liệu từ nguồn vào kho dữ liệu đầu cuối.
Tuy vậy, việc sử dụng một vùng xử lí có các lợi ích sau:
• Giảm thiểu tối đa thời gian rút trích dữ liệu từ nguồn. Việc này nhằm
tránh gián đoạn đến hoạt động của các cơ sở dữ liệu nguồn. Thông
thường, người ta sẽ sao chép y nguyên dữ liệu nguồn vào vùng này.
• Khi sử dụng các vùng xử lí độc lập cho từng nguồn, cho phép thao tác
trên một tập hợp nhỏ các dữ liệu mà ta cần sử dụng, thay vì truy vấn toàn
bộ dữ liệu nguồn.
• Vùng xử lí nếu được cài đặt chỉ mục hợp lí, sẽ hỗ trợ việc nạp dữ liệu
vào kho dữ liệu nhanh hơn.
• Vùng xử lí cho phép phục hồi sau sự cố. Dữ liệu khi đã được nạp vào
vùng xử lí, có thể được xem là an toàn. Trong quá trình nạp dữ liệu vào
kho dữ liệu, nếu bị gián đoạn do sự cố, quá trình nạp dữ liệu dễ dàng
được phục hồi bằng cách nạp tiếp dữ liệu đang nạp từ vùng này. Bởi vì
trong mỗi lần nạp, dữ liệu ở vùng xử lí không bị thay đổi, nên hoàn toàn
không ảnh hưởng đến quá trình nạp. Nếu nạp trực tiếp từ nguồn, nơi dữ
liệu thay đổi thường xuyên, quá trình nạp phải được làm lại từ đầu, bao
gồm cả việc loại bỏ các dữ liệu đang nạp dở dang.
Vùng xử lí có thể lưu trữ dữ liệu dài hạn, như là một cơ sở dữ liệu trung
gian. Nhưng thông thường, người ta sẽ xoá đi sau mỗi lần nạp dữ liệu. Đặc
9
biết đối với các kiến trúc cấp cao như NDS+DDS hay ODS+DDS, việc lưu trữ
dữ liệu trong vùng xử lí sau mỗi công đoạn nạp là hoàn toàn không cần thiết.
Cấu trúc của dữ liệu vùng xử lí như sau:

• Đối với dữ liệu nguồn là cơ sở dữ liệu: Dữ liệu trong vùng xử lí là tất cả
các bảng chứ dữ liệu cần thiết cho việc nạp dữ liệu, nhưng chỉ chứa các
cột dữ liệu cần thiết mà thôi. Các bảng được loại bỏ các ràng buộc khoá
chính, khoá ngoại và chỉ mục. Việc này nhằm tăng tốc cho sao chép dữ
liệu nguồn. Để tránh việc dữ liệu không nhất quán, các gói ETL cần
được thiết kế cẩn thận để giải quyết việc này.
• Đối với dữ liệu nguồn là dạng tập tin: Đơn giản chỉ cần sao chép nó đến
máy chủ.
6 Cơ sở dữ liệu chuẩn hoá
Hình 1.2.3-1: Cơ sở dữ liệu chuẩn hoá.
Đối với kiến trúc NDS+DDS, vùng chứa dữ liệu dạng chuẩn hoá, còn được
gọi là cơ sở dữ liệu chuẩn hoá đóng vai trò là một cơ sở dữ liệu tập trung. Cơ
sở dữ liệu này có các đặc điểm sau:
• Là nơi tập trung dữ liệu từ nhiều nguồn. Tất cả dữ liệu này đều đã được
làm sạch.
• Cơ sở dữ liệu được tổ chức ở dạng chuẩn hoá cao, nhằm bảo đảm chất
lượng dữ liệu, các ràng buộc toàn vẹn trên dữ liệu cũng như tính nhất quá
của dữ liệu.
• Các thông tin về lịch sử của dữ liệu được lưu lại toàn bộ ở đây. Nếu dữ
liệu nguồn không chứa thông tin lịch sử, gói ETL dùng biến đổi dữ liệu
vào cơ sở dữ liệu chuẩn hoá sẽ đảm nhận việc bổ sung các dữ liệu lịch
10
sử. Thường là ngày tháng khi lấy dữ liệu. Nếu dữ liệu nguồn chứa thông
tin lịch sử, gói ETL dùng biến đổi dữ liệu sẽ chuyển đổi các thông tin
lịch sử tương ứng từ nguồn vào cơ sở dữ liệu chuẩn hoá. Các thông tin
này cho phép nắm bắt lịch sử dữ liệu tại một nơi tập trung duy nhất.
• Cấu trúc của cơ sở dữ liệu chuẩn hoá rất gần với cấu trúc của kho dữ liệu
đầu cuối, tuy nhiên được tổ chứ ở dạng chuẩn cao. Việc này giúp tăng
tốc cho các tính toán số liệu trong khi nạp các dữ kiện vào kho dữ liệu.
Dữ liệu sau mỗi lần nạp thành công vào cơ sở dữ liệu chuẩn hoá, sẽ được

xoá trong vùng xử lí. Khi quá trình nạp dữ liệu bị gián đoạn, quá trình nạp dữ
liệu được thực hiện tiếp tục trên những dữ liệu chưa được nạp thành công, tức
là vẫn còn dữ liệu trên vùng xử lí.
7 Kho dữ liệu đầu cuối
Hình 1.2.4-1: Kho dữ liệu đầu cuối
Trong một hệ thống kho dữ liệu, kho dữ liệu đầu cuối là thành phần quan
trọng nhất, ở đó, dữ liệu được tổ chức theo một cấu trúc đặc biệt: mô hình đa
chiều (dimensional). Đây là cấu trúc dạng tối ưu phục vụ truy vấn đầu cuối
cho các ứng dụng phân tích như OLAP, khai thác dữ liệu,…
Đây là kiểu cấu trúc dựa trên mô hình khối đa chiều (multi-dimension
cube). Mỗi khối đa chiều là bao gồm một bảng dữ kiện (fact) và các bảng
chiều (dimension). Dữ kiện là các độ đo, các số liệu được tính toán từ các
chiều. Cấu trúc dữ liệu này có đặc trưng là phi chuẩn hoá (denormalized). Đây
là một đặc trưng quan trọng của kho dữ liệu mô hình hoá đa chiều.
11
Cấu trúc và phương pháp mô hình hoá đa chiều được đề cập trong Chương
2 - Mô hình hoá sử dụng lược đồ hình sao.
Nói một cách tóm tắt, kho dữ liệu đầu cuối nhằm mục đích sau:
• Tăng tốc tối đa thời gian truy vấn trên các dữ liệu dạng phân tích. Dữ
liệu truy vấn trên kho dữ liệu cho tốc độ rất cao. Ở những hệ thống lớn,
với nhiều nguồn dữ liệu, một câu truy vấn chạy trực tiếp trên dữ liệu
nguồn có thể mất hàng giờ đồng hồ, nhưng khi chạy trên hệ thống kho
dữ liệu chỉ mất vài phút. Việc rút ngắn thời gian như vậy là rất đáng kể.
Ngoài ra, nó còn giúp hạn chế việc gián đoạn hoạt động của các hệ thống
nguồn.
• Hỗ trợ phân tích các thay đổi mang tính lịch sử trên dữ liệu. Kho dữ liệu
được tổ chức để theo dõi toàn bộ các thay đổi của dữ liệu. Vì vậy, các
phân tích dữ liệu theo dòng thời gian là đặc biệt nhanh chóng và hiệu
quả.
• Đối với những truy vấn có được phát biểu dưới dạng tương tự nhau, câu

truy vấn SQL/MDX trên kho dữ liệu có rất ít khác biệt. Các truy vấn phát
biểu dạng này cũng dễ hiểu và gần gũi người dùng cuối. Chẳng hạn: câu
truy vấn “Tương quan tỉ lệ sinh viên đậu/rớt trong năm nay so với các
năm trước?” và “Tương quan giữa thời gian sử dụng hệ thống học tập
trực tuyến và điểm số của sinh viên?” là những câu truy vấn có cấu trúc
tương tự nhau.
• Hỗ trợ xây dựng khối OLAP nhanh, hiệu quả. OLAP là một trong những
ứng dụng đầu cuối phổ biến trong việc sử dụng hệ thống kho dữ liệu.
Khối OLAP mặc dù có thể xây dựng trên cơ sở dữ liệu thông thường,
nhưng nếu được xây dựng trên kho dữ liệu, sẽ giảm thiểu thời gian xây
dựng khối và tăng tốc các truy vấn OLAP.
1.3. Các thách thức đối với kho dữ liệu
Việc xây dựng kho dữ liệu là một công việc phức tạp và đòi hỏi nhiều vấn đề
cần được nghiên cứu kĩ càng trước khi cài đặt. Đối với kho dữ liệu, nhưng thách
thức sau đây luôn được đặt lên hàng đầu:
12
8 Chất lượng dữ liệu
Thách thức lớn nhất là việc quản lí chất lượng dữ liệu. Bởi vì bản thân các
hệ thống nguồn thường không bao giờ không bị lỗi trên dữ liệu, việc xây dựng
kho dữ liệu bảo đảm cung cấp đầy đủ thông tin và nhiều ý nghĩa là liên hệ
sống còn đến tính hiệu quả của kho dữ liệu. Quản lí chất lượng dữ liệu bao
gồm:
• Dữ liệu trùng lắp: Xảy ra khi cùng một dữ liệu được ghi nhiều lần vào
kho, nhưng không thể theo dõi được do thiếu các ràng buộc khoá.
• Dữ liệu không đầy đủ: Dữ liệu thiếu trong quá trình nhập liệu, chẳng hạn
sinh viên thiếu thông tin về địa chỉ tạm trú/thường trú. Việc này làm
giảm hiệu quả của các phân tích đầu cuối.
• Dữ liệu sai: Là trường hợp dữ liệu bị lỗi chẳng hạn như lỗi đánh máy, lỗi
chính tả, chữ hoa, chữ thường…
• Xung đột dữ liệu: Đây là trường hợp cùng một dữ liệu nhưng được lưu

trữ trên nhiều bảng hoặc thậm chí nhiều nguồn khác nhau, nhưng không
nhất quán.
• Siêu dữ liệu không rõ nghĩa: Thường là do cùng một đối tượng dữ liệu
nhưng khác kiểu dữ liệu hoặc sai lệch về ngữ nghĩa của dữ liệu trên các
nguồn khác nhau. Chẳng hạn cùng tên cột, cùng bảng, nhưng trên 2
nguồn khác nhau có ngữ nghĩa hoàn toàn khác nhau.
• Thiếu dữ liệu: Là trường hợp dữ liệu lẽ ra phải có để bảo đảm toàn vẹn
(tham chiếu…), nhưng không tìm thấy các dữ liệu này ở nơi khác.
• Dữ liệu NULL: Đây là dạng dữ liệu rất chung chung và tối nghĩa. Nó cần
được dịch ra để phù hợp với ngữ cảnh.
9 Khối lượng dữ liệu và hiệu suất hoạt động
Nếu như lượng dữ liệu trung bình cho mỗi cơ sở dữ liệu khoảng vài đến vài
chục Gigabyte, dữ liệu trong kho dữ liệu có thể lên đến vài chục Terabyte,
thậm chí còn được tính bằng đơn vị Petabytes (1Petabytes = 1024Terabytes).
Điều này là hoàn toàn dễ hiểu vì 2 lí do sau:
• Dữ liệu được mô hình hoá đa chiều, tổ chức dưới dạng phi chuẩn
(denormalized) khiến cho khối lượng dữ liệu trùng lắp tăng đáng kể.
13
• Dữ liệu lịch sử được lưu lại ở mức chi tiết nhất có thể, theo thời gian, sẽ
tăng lên rất nhanh.
Đối với lượng dữ liệu lớn như vậy, các đề nghị sau cần được xem xét để
tăng hiệu suất hoạt động cho kho:
• Xây dựng hệ thống vật lý độc lập nguồn: Việc này làm giảm tải xử lí cho
hệ thống nguồn. Tuy rằng việc tổ chức trên cùng một hệ thống vật lí với
hệ thống nguồn cho phép tăng thời gian nạp, ngược lại, lại làm giảm hiệu
suất hoạt động của chính hệ thống nguồn. Hơn nữa, các hệ thống nguồn
nằm rải rác thì không thể tổ chức một hệ thống kho dữ liệu phân tán trên
đó được.
• Cài đặt chỉ mục: Hoạt động chính của kho dữ liệu là việc đọc dữ liệu
hơn là ghi dữ liệu lên đó. Các câu truy vấn chủ yếu tốn thời gian ở việc

tìm kiếm dữ liệu. Cài đặt chỉ mục hợp lí là phương pháp hiệu quả để tăng
tốc truy vấn. Các truy vấn thường dùng cần được phân tích cho việc cài
đặt chỉ mục.
• Chỉ mục dạng bitmap: Đây là dạng chỉ mục rất hiệu quả đối với những
bảng có số lượng các giá trị rời rạc (cardinality) thấp. Xem xét việc cài
đặt chỉ mục dạng này cũng làm tăng đáng kể hiệu suất truy vấn.
• Dữ liệu tổng hợp (Aggregation): Có thể xem xét việc tiền xử lí các dữ
kiện, chẳng hạn như xây dựng các bảng trung gian, chứa các dữ liệu
được tổng hợp (sum, count, average) ở độ mịn cao.
10 Nắm bắt các thay đổi trên dữ liệu
Việc nạp dữ liệu từ nguồn vào vùng xử lí thoạt nhìn có vẻ đơn giản. Nhưng
không hẳn như vậy. Người ta không thể mỗi lần nạp dữ liệu đều sao chép toàn
bộ dữ liệu từ nguồn vào vùng xử lí. Đây là việc làm rất tốn kém và không hiệu
quả. Thay vào đó, người ta cố gắng nắm bắt được các thay đổi trên dữ liệu,
bao gồm các dữ liệu mới và các dữ liệu cũ vừa bị thay đổi.
Có 4 kĩ thuật nắm bắt thay đổi dữ liệu nguồn, được chia làm 2 loại chính:
14
• Kĩ thuật xâm nhập (intrusive): Là các kĩ thuật ở đó cần thực hiện truy
vấn trên dữ liệu nguồn mà gây ảnh hưởng đến hiệu suất hoạt động của
nó. Bao gồm:
o Nắm bắt thay đổi dựa trên dữ liệu nguồn: Là kĩ thuật nắm bắt thay đổi
dựa trên chính các thuộc tính trong dữ liệu nguồn.
 Dựa trên nhãn thời gian: dựa vào các nhãn thời gian có sẵn trên dữ
liệu nguồn như nhãn thêm, nhãn sửa…
 Dựa trên định danh tự động tăng: chỉ nắm bắt được thay đổi của dữ
liệu mới.
o Nắm bắt thay đổi dựa trên trigger: Bằng cách cài đặt thêm trigger vào
cơ sở dữ liệu nguồn. Các dữ liệu lịch sử này được lưu riêng, cho phép
hệ thống kho dữ liệu truy vấn để rút trích dữ liệu mới hoặc đã thay
đổi.

o Nắm bắt thay đổi dựa trên ảnh chụp dữ liệu (snapshot): Đây là kĩ thuật
mà ở đó, vùng xử lí lưu lại toàn bộ dữ liệu của lần nạp trước như là
một ảnh chụp dữ liệu. Dữ liệu ở lần nạp sau được so sánh với dữ liệu
trước để so sánh thay đổi trước khi quyết định sẽ lấy dữ liệu nào. Kĩ
thuật này được sử dụng đối với dữ liệu nguồn thiếu thông tin lịch sử,
và tránh việc phải thay đổi hệ thống nguồn (bằng trigger).
• Kĩ thuật phi xâm nhập (non-intrusive): Là các kĩ thuật không gây ảnh
hưởng đến hiệu suất hoạt độn của dữ liệu nguồn.
o Nắm bắt thay đổi dựa trên log: Trên mỗi hệ thống nguồn, có thể sử
dụng có sẵn (đối với cơ sở dữ liệu) hay cài đặt một chương trình ghi
log, quản lí toàn bộ lịch sử thay đổi của nguồn.
11 Yêu cầu người dùng thay đổi
Cũng giống như mọi dự án phần mềm khác, việc xây dựng hệ thống có thể
bảo đảm được cho việc thay đổi yêu cầu người dùng trong tương lai là thách
thức rất lớn.
1.4. Các xu hướng xây dựng kho dữ liệu
• Kho dữ liệu ảo
• Kho dữ liệu thời gian thực
• Kho dữ liệu phân tích
15
16
Chương 2. Mô hình hoá sử dụng lược đồ hình sao
Như đã đề cập ở chương 1, việc tối ưu hoá tốc truy vấn cho kho dữ liệu là điều
kiện tiên quyết cho hiệu quả triển khai một dự án kho dữ liệu. Vì vậy cấu trúc cơ sở
dữ liệu của kho dữ liệu cần được tổ chức theo một mô hình đặc trưng riêng. Đó là
phương pháp mô hình hoá đa chiều.
2.1. So sánh phương pháp mô hình hoá của Bill Inmon và Ralph Kimball
Việc tổ chức dữ liệu trong cơ sở dữ liệu của kho dữ liệu được tiếp cận theo 2
hướng sau:
• Phương pháp mô hình hoá dạng chuẩn hoá của Bill Inmon (lược đồ

bông tuyết): Cơ sở dữ liệu được tổ chức dưới dạng chuẩn hoá, tuân theo luật
chuẩn hoá như đối với cơ sở dữ liệu quan hệ thông thường (dạng chuẩn 3).
o Ưu điểm:
 Dữ liệu được nạp từ nguồn vào đích dễ dàng.
 Dạng chuẩn cao giúp bảo đảm các ràng buộc toàn vẹn của dữ liệu,
tránh trùng lắp.
o Nhược điểm:
 Việc kết các bảng để cho ra kết quả truy vấn mong muốn phức tạp
 Đòi hỏi người dùng phải hiểu được cấu trúc tổ bên dưới của kho dữ
liệu.
 Tốc độ truy vấn chậm do việc kết các bảng có kích thước lớn.
• Phương pháp mô hình hoá đa chiều của Ralph Kimball (lược đồ hình
sao): Cơ sở dữ liệu được lưu trữ dưới dạng phi chuẩn hoá. Bao gồm bảng
dữ kiện (fact) chứa thông tin các giao tác và các bảng chiều (dimension)
đóng vai trò như là bảng tham chiếu lấy thông tin. Các bảng này đều được
lưu dưới dạng chuẩn thấp (dạng chuẩn 1 hoặc 2)
o Ưu điểm:
 Truy vấn người dùng cuối dễ dàng được thực hiện mà không đòi hỏi
người dùng phải hiểu rõ về cấu trúc của kho dữ liệu.
 Thiết kế hướng nghiệp vụ, là ánh xạ trực tiếp từ quy trình nghiệp vụ
của doanh nghiệp.
 Tốc độ truy vấn cao.
o Nhược điểm:
 Dữ liệu nguồn cần phải được phi chuẩn hoá (denormalized) và bảo
đảm ràng buộc toàn vẹn trong quá trình nạp dữ liệu vào kho.
17
 Trùng lắp dữ liệu nhiều, khiến cho kích thước kho lớn (Trong điều
kiện công nghệ hiện nay, đây không hẳn là một trở ngại lớn!)
Xu hướng hiện tại, đa số các dự án trên kho dữ liệu được cài đặt dưới dạng mô
hình hoá đa chiều bằng lược đồ hình sao do hiệu suất hoạt động vượt trội của nó.

Các nhược điểm của mô hình dạng này không phải là trở ngại lớn.
Trong nội dung của luận văn này, chúng ta chỉ bàn đến các thiết kế dựa trên
lược đồ hình sao.
2.2. Lược đồ hình sao
Như đã nói ở trên, phương pháp mô hình hoá đa chiều với lược đồ hình sao
thể hiện những ưu điểm vượt trội của mình. Bởi vì kho dữ liệu được thiết kế cho
mục đích đọc nhiều hơn là ghi trên nó, đặc biệt, nó không phải là cơ sở dữ liệu
phục vụ giao tác (OLTP), việc tránh dư thừa dữ liệu là không cần thiết.
Hình 2.2-1: Lược đồ hình sao.
Lược đồ hình sao được gọi theo mô hình của nó. Như mô tả trong hình vẽ,
lược đồ hình sao bao gồm một bảng trung tâm gọi là bảng dữ kiện. Bảng này
tham chiếu đến các bảng xung quanh, gọi là bảng chiều.
12 Bảng chiều và bảng dữ kiện
Để hiểu một cách đơn giản cho khái niệm bảng chiều và bảng dữ kiện, ta
hãy xem xét ví dụ sau:
18
Hệ thống của trường ghi lại việc “Một sinh viên SV vào trang web Moodle
của khoa để xem thông tin của một môn học MH vào lúc 12h trưa ngày
06/06/2006, thời gian truy cập 60 giây.”
Ta xem mỗi lần sinh viên vào trang web môn học được xem như một giao
tác. Như vậy, hệ thống đã ghi nhận có một giao tác, liên quan đến các đối
tượng sau:
• Sinh viên SV
• Môn học MH,
• 12h trưa
• Ngày 06/06/2006
Ở đây, ta có một ngữ cảnh liên quan đến 4 đối tượng trên, và một con số đo
thời gian 60 giây.
Các đối tượng tham gia vào giao tác, hay là ngữ cảnh của giao tác đó,
được gọi là chiều.

Con số thể hiện một độ đo của một giao tác gọi là dữ kiện của giao tác đó.
Ở đây, con số 60giây là dữ kiện của giao tác truy cập trang web trên. Ta có thể
vẽ một lược đồ hình sao như sau:
Hình 2.2.1-1: Ví dụ lược đồ hình sao
13 Các đặc trưng của lược đồ hình sao
Xem xét cấu trúc một lược đồ hình sao như sau:
19
Hình 2.2.2-1: Cấu trúc lược đồ hình sao
• Tất cả các dòng trong bảng dữ kiện được lưu với độ mịn thấp nhất có thể.
Độ mịn là mức độ chi tiết của dữ liệu. Một dữ kiện được tính theo ngày
có độ mịn thấp hơn dữ kiện được tính theo giờ…
• Độ mịn của dữ kiện được xác định bằng độ mịn của các chiều liên quan.
• Tất cả các độ đo trong bảng dữ kiện có thể được cuộn lên (roll-up) hoặc
gom nhóm theo chiều. Chẳng hạn có thể tính doanh thu theo tháng, năm,
gom nhóm theo sản phẩm,…
2.3. Truy vấn trên lược đồ hình sao
(Cần bổ sung các so sánh truy vấn giữa lược đồ hình sao và lược đồ chuẩn
hoá)
2.4. Kiến trúc buýt
Để đưa ra thiết kế chính xác cho kho dữ liệu, người ta sử dụng ma trận kiến
buýt (bus matrix) (Ralph Kimball - The Data Warehouse Toolkit). Đây là một
bảng mô tả mối liên hệ giữa các nghiệp vụ với các đối tượng liên quan.
Hình 2.4-1: Ma trận kiến trúc buýt
Bảng trên đây mô tả mối liên hệ giữa các nghiệp vụ:
• Các dòng: Thể hiện các nghiệp vụ
• Các cột: Thể hiện các đối tượng
• Các ô: Mô tả một đối tượng có liên quan đến nghiệp vụ đó hay không.
20
Bằng việc phân tích yêu cầu người dùng và đưa ra được ma trận kiến trúc
buýt, có thể dễ dàng xây dựng lược đồ hình sao cho kho dữ liệu trong dó:

• Các dòng: Là các bảng dữ kiện.
• Các cột: Là các bảng chiều.
Chú ý rằng các bảng dữ kiện khác nhau có thể cùng tham chiếu đến một chiều.
Các chiều này được gọi là các chiều chuẩn (conformed dimension)
2.5. Các nguyên tắc thiết kế
Có một số nguyên tắc chung khi thiết kế kho dữ liệu như sau:
14 Sử dụng khoá đại diện:
Thông thường, mỗi bảng đều có một khoá chính dùng định danh cho từng
dòng của nó. Khoá này có thể tạo bởi 1 hay nhiều cột. Trong dữ liệu nguồn,
khoá này là không thống nhất, và có thể mang nhiều kiểu khác nhau, cũng có
thể được tạo tự động bởi cơ sở dữ liệu nguồn. Chẳng hạn môn học TTH-294 là
một khoá chính. Trong kho dữ liệu, khoá này gọi là khoá tự nhiên. Vì những lí
do trên đây, khoá tự nhiên của dữ liệu nguồn không thể được sử dụng trong
một hệ thống chung của kho dữ liệu. Thay vào đó, người ta sử dụng khoá đại
diện, với các đặc điểm sau:
• Chỉ bao gồm 1 cột: Đơn giản cho phép kết
• Là số nguyên không âm: Tăng tốc cho việc đánh số chỉ mục và kết bảng
• Tạo bởi gói ETL trong lúc nạp dữ liệu: Thống nhất giữa nhiều nguồn dữ
liệu.
15 Quy tắc đặt tên và kiểu
Để dễ hiểu cho người dùng cuối trong khi truy vấn, người ta sử dụng các
quy tắc sau:
• Đặt tên bảng có chứa tiền tố (fct_ cho bảng dữ kiện, dim_ cho bảng chiều,
lkp_ cho bảng tìm kiếm…)
• Tất cả các khoá của chiều được đặt tên theo tên bảng với hậu tố _key
• Tất cả khoá của các chiều sử dụng số nguyên không âm nhỏ nhất có thể.
• Tên của các cột phải có ý nghĩa, tránh viết tắt.
• Sử dụng những tên chuẩn cho các cột theo dõi (xem mục 2.5.4)
16 Độ mịn và mức tổng hợp
21

Đối với việc lưu dữ liệu ở nhiều độ mịn, quy tắc duy nhất: Lưu với độ mịn
thấp nhất có thể.
Đối với việc tổng hợp dữ liệu: Tất cả các dữ kiện có nhu cầu truy xuất trong
khi truy vấn cần được tính toán sẵn ở mức thấp nhất. Tránh việc phải tính toán
lại trong quá trình truy vấn đầu cuối. Chẳng hạn: Truy vấn đầu cuối có mục
tiêu phải tính được thời gian truy cập của từng lượt truy cập, trong khi dữ liệu
nguồn chỉ lưu thời gian bắt đầu và kết thúc của một truy cập. Như vậy, cần
phải tính sẵn thời gian truy cập để lưu vào bảng dữ kiện thay vì lưu thời gian
bắt đầu và kết thúc riêng!
17 Ngày giờ
Thời gian là một đối tượng đặc biệt trong kho dữ liệu. Chi tiết việc nạp
chiều thời gian (bao gồm ngày và giờ) được mô tả trong Chương 3 – Tích hợp
dữ liệu. Một số chú ý sau:
• Độ mịn được đặt ở mức thấp nhất có thể theo yêu cầu của người dùng.
• Lưu riêng ngày và giờ trong ngày thành 2 chiều khác nhau.
• Sử dụng giờ chuẩn quốc tế.
• Sử dụng khoá thông minh cho ngày giờ, với định dạng: YYYYMMDD
hay HHMMSS. Ở đây ta không sử dụng khoá đại diện vì việc sử dụng
khoá chính cho chiều thời gian cho phép phân vùng (partitioning) dữ liệu
theo thời gian. Hơn nữa, chiều thời gian là chiều được nạp độc lập với
các chiều khác.
18 Khoá vô danh
Mỗi bảng chiều có một dòng với khoá đại diện là 0, các trường khác đặt giá
trị mặc định. Dòng này mô tả trạng thái nạp một dữ kiện vào bảng dữ kiện
nhưng không tìm thấy đối tượng tương ứng với dữ kiện đó trong chiều mà nó
tham chiếu tới.
Việc này giúp tránh dữ liệu NULL ở khoá ngoại bảng dữ kiện, đồng thời
mang ý nghĩa rõ ràng cho người dùng cuối rằng: “không tìm thấy đối tượng
liên quan đến ngữ cảnh đang có!”
22

Chương 3. Tích hợp dữ liệu
3.1. Khái niệm
Hệ thống tích hợp dữ liệu, hay còn gọi là hệ thống ETL (Extract-Load-
Transform) là một hệ thống được thiết kế để làm các nhiệm vụ sau:
• Kết xuất dữ liệu từ các hệ thống nguồn.
• Kiểm tra chất lượng dữ liệu và các tiêu chuẩn toàn vẹn.
• Biến đổi dữ liệu để dữ liệu từ nhiều hệ thống có thể được sử dụng cùng
nhau.
• Nạp dữ liệu vào một dạng trung gian cho phép các nhà phát triển cho thể
xây dựng ứng dụng và người dùng cuối có thể ra quyết định dựa trên dữ
liệu và ứng dụng đó.
3.2. Các bước tiến hành của quá trình tích hợp dữ liệu
19 Kết xuất dữ liệu:
Một công ty hoặc tổ chức thông thường cần nhiều hệ thống tin học để điều
khiển hoạt động của mình. Ví dụ: hệ thống quản lý bán hàng, quản lý kho, quản
lý nhân viên, quản lý sản phẩm Những hệ thống này có thể không tương thích
về mặt logic hoặc vật lý, điều này gây ra những khó khăn cho việc tích hợp dữ
liệu. Những khó khăn đó có thể do các hệ thống khác nhau về:
• Hệ quản trị CSDL.
• Hệ điều hành.
• Phần cứng.
• Các giao thức truyền thông tin giữa nguồn dữ liệu và bên ngoài.
Như vậy, với những nguồn dữ liệu khác nhau, để tích hợp dữ liệu vào kho dữ
liệu, ta phải xây dựng các quy tắc ánh xạ dữ liệu từ dữ liệu nguồn đến kho dữ
liệu. Với kiến trúc và tính chất của nguồn dữ liệu khác nhau, đòi hỏi phải xây
dựng một bảng ánh xạ vật lý từ dữ liệu được lưu trữ ở nguồn đến kho dữ liệu.
Trước khi xây dựng một bảng ánh xạ vật lý, ta cần một bảng ánh xạ dữ liệu logic
từ các trường của nguồn dữ liệu đến các trường của bảng trong kho dữ liệu.
Cấu trúc của một bảng ánh xạ dữ liệu logic phải bao gồm các thông tin sau:
+ Tên bảng đích: tên vật lý của bảng trong kho dữ liệu.

+ Tên cột đích: tên cột trong bảng trong kho dữ liệu.
23
+ Loại bảng: xác định đó là bảng fact, bảng chiều hay bảng chiều con.
+ SCD: xác định loại chiều thay đổi chậm (Slowly Changing Dimension),
dùng để lưu lịch sử dữ liệu.
+ CSDL nguồn: tên CSDL phía nguồn.
+ Tên bảng nguồn: tên bảng phía nguồn.
+ Tên cột nguồn: tên cột trong bảng phía nguồn.
+ Biến đổi: cách xử lý logic đối với dữ liệu nguồn để đưa về cùng định dạng
với dữ liệu đích. Phép biến đổi này thường được viết bằng mã giả SQL.
24
Ví dụ về bảng ánh xạ dữ liệu logic:
25

×