- Một kho dữ liệu đƣợc thiết kế dựa trên một mô hình dữ liệu đa chiều, mô hình cung cấp khả năng xem dữ liệu dƣới dạng một khối dữ liệu.
- Một khối dữ liệu cho phép dữ liệu đƣợc mô hình hóa và xem ở nhiều chiều(thuộc tính) khác
nhau:
o Các chiều của một khối dữ liệu đƣợc thể hiện thông qua bảng theo chiều
(Dimension), chẳng hạn nhƣ bảng các mặt hàng bao gồm các thuộc tính (tên
mặt hàng, thƣơng hiệu, loại hàng), hoặc bảng thời gian bao gồm các thuộc
tính (ngày, tuần, tháng, quý, năm).
o Bảng sự kiện (Fact) chứa các giá trị đo lƣờng đƣợc (nhƣ số tiền bán đƣợc - dollars_sold) và các khóa tới mỗi bảng theo chiều liên quan.
83
- Trong các tài liệu nói về công nghệ kho dữ liệu, một khối dữ liệu cơ sở n chiều (n-D base
cube) đƣợc gọi là một khối (hình đƣợc bao bọc bởi 6 mặt- cuboid) cơ bản. Khối ở mức trên cùng là khối 0-D với số chiều là 0 chứa số liệu tổng hợp ở mức cao nhấtđƣợc gọi là khối dữ liệu mức đỉnh. Lƣới chia ngăn của các khối dữ liệu đó tạo thành các khối dữ liệumức thấp hơn. Chúng ta sẽ xem xét ví dụ dƣới đây để hiểu rõ hơn về khái niệm khối dữ liệu này.
84
Mô hình hóa dữ liệu cho kho dữ liệu
Bao gồm 3 loại lƣợc đồ: hình sao, hình bông tuyết và dải thiên hà
- Lƣợc đồhình sao: Một bảng Fact ở giữa kết nối với nhiều bảng theo chiều
- Lƣợc đồ hình bông tuyết: Là một dạng chuẩn hóacủa mô hình hình sao trong đó sự phân cấp của các chiều đƣợc chuẩn hóa thành một tập hợp các bảng theo chiều có kích thƣớc nhỏ hơn, tạo thành một hình dạng tƣơng tự nhƣ bông tuyết.
- Lƣợc đồdải thiên hà: gồm nhiều bảng Fact có chung các bảng theo chiều, mà mỗi bảng Fact cùng các bảng theo chiều là mô hình hình sao, đƣợc coi nhƣ một ngôi sao vì thế mô hình này đƣợc xem nhƣ là một bộ sƣu tập của các ngôi sao, và đƣợc gọi là lƣợc đồ dải thiên hà hay một dải các bảng fact.
85 Ví dụlƣợc đồ hình bông tuyết
86
Ngôn ngữ truy vấn khai phá dữ liệu (Data Mining Query Language)
Bao gồm các hàm nguyên thủy nhƣ sau
- Định nghĩa một khối dữ liệu: vì bảng Fact cũng là một khối dữ liệu ở mức thấp nhất, chứa thông tin ở mức chi tiết nhất nên đây cũng là câu lệnh đểđịnh nghĩa một bảng Fact
define cube <tên_khối> [<danh sách các chiều >]: <danh sách các độ đo > - Định nghĩa các chiều (bảng theo chiều)
define dimension <tên_chiều> as (<danh sách các thuộc tính hoặc thuộc tính con >) - Trƣờng hợp đặc biệt (dùng chung các bảng theo chiều)
o Bảng theo chiều đƣợc khai báo lần đầu khi định nghĩa khối dữ liệu liên quan o Nếu muốn dùng lại bảng theo chiều này trong những trƣờng hợp về sau thì khai
báo với cú pháp nhƣ sau
define dimension < tên_chiều > as <tên_chiều_đƣợc khai báo lần đầu > in cube
<tên_khối_đầu_tiên_sử_dụng_chiều_đó >
Sử dụng các hàm nguyên thủy định nghĩa lƣợc đồ hình sao đƣợc thể hiện trong ví dụtrên nhƣ
sau:
define cube sales_star [time, item, branch, location]:
87
define dimension time as (time_key, day, day_of_week, month, quarter, year)
define dimension item as (item_key, item_name, brand, type, supplier_type)
define dimension branch as (branch_key, branch_name, branch_type)
define dimension location as (location_key, street, city, province_or_state, country)
Định nghĩa lƣợc đồ hình bông tuyết đƣợc thể hiện trong ví dụtrên nhƣ sau:
define cube sales_snowflake [time, item, branch, location]:
dollars_sold = sum(sales_in_dollars), avg_sales = avg(sales_in_dollars), units_sold = count(*)
define dimension time as (time_key, day, day_of_week, month, quarter, year)
define dimension item as (item_key, item_name, brand, type, supplier(supplier_key, supplier_type))
define dimension branch as (branch_key, branch_name, branch_type)
define dimension location as (location_key, street, city(city_key, province_or_state, country))
Định nghĩa lƣợc đồ dải thiên hà đƣợc thể hiện trong ví dụtrên nhƣ sau:
define cube sales [time, item, branch, location]:
dollars_sold = sum(sales_in_dollars), avg_sales = avg(sales_in_dollars), units_sold = count(*)
define dimension time as (time_key, day, day_of_week, month, quarter, year)
define dimension item as (item_key, item_name, brand, type, supplier_type)
define dimension branch as (branch_key, branch_name, branch_type)
define dimension location as (location_key, street, city, province_or_state, country)
define cube shipping [time, item, shipper, from_location, to_location]: dollar_cost = sum(cost_in_dollars), unit_shipped = count(*)
define dimension time as time in cube sales
define dimension item as item in cube sales
define dimension shipper as (shipper_key, shipper_name, location as location in cube sales, shipper_type)
define dimension from_location as location in cube sales
define dimension to_location as location in cube sales
Thuộc tính độ đo trong lƣợc đồ đƣợc là một hàm đƣợc tính toán trên những dữ liệu đã đƣợc tích hợp lại dựa trên những cặp giá trị theo chiều cho trƣớc. Thuộc tính độđo có thể thuộc một trong ba loại nhƣ sau:
88
- Phân phối: nếu hàm có thể đƣợc tính theo phƣơng cách phân phối. Ví dụ nhƣ các hàm count(); sum(); min(),max().
- Đại số: nếu nó có thểđƣợc tính từcác đối sốthu đƣợc bằng cách áp dụng các chức năng
phân phối tổng hợp. Ví dụ: avg()=sum()/count(), min_N(), standard_deviation(). - Loại khác nếu nhƣ không phải đại số. Ví dụ median(),mode(),rank()
Các loại hàm phân phối và đại số thích hợp một cách lý tƣởng cho việc tính toán các khối dữ liệu bởi chúng phân mảnh nhỏhơn đƣợc, phƣơng thức áp dụng tính toán ở mức thấp rồi tích hợp lên mức cao đƣợc áp dụng dễdàng đối với các hàm loại này. Việc tính toán các độ đo ở mức độ chi tiết hơn (sẽđƣợc xem xét đến trong phần cài đặt kho dữ liệu) sẽđƣợc sử dụng lại trong quá trình tính toán ở các cấp chi tiết cao hơn. Mặt khác, các hàm thuộc loại khác khó tính toán một cách hiệu quảnhƣ vậy, chỉthƣờng có thể tính toán xấp xỉ một cách hiệu quả.
Khái niệm phân cấp
Các phân cấp khái niệm cho phép dữ liệu có thể đƣợc xử lý tại các mức trừu tƣợng khác nhau. Ta cùng xét ví dụ cho khái niệm phân cấp với một khối dữ liệu ba chiều đƣợc thể hiện trong hình vẽdƣới đây bao gồm các chiều thể hiện sản phẩm (Product), thời gian là các tháng (month) và vị trí địa lý của sản phẩm là vùng miền sản xuất (Region). Mỗi một chiều dữ liệu có thể có các phân cấp khác nhau để thể hiện các mức độ trừu tƣợng khác nhau của dữ liệu. Ở ví dụ này, chiều dữ
liệu Product có một phân cấp IndustryCategory Product để thể hiện một sự tổng quát hóa(summaried) hay chi tiết hóa các dữ liệu trong một chiều. Ý nghĩa của phân cấp này nói rằng: một ngành công nghiệp (Industry) thì có nhiều loại sản phẩm (Category) và mỗi loại sản phẩm thì có nhiều sản phẩm khác nhau vì thế khi biết sốlƣợng hàng bán đƣợc của mỗi sản phẩm thì sẽ
tổng hợp đƣợc số hàng bán đƣợc của mỗi loại sản phẩm, cũng nhƣ tổng hợp đƣợc số hàng bán
đƣợc của mỗi ngành công nghiệp, nhờ phân cấp chúng ta thiết kế ra cho kho dữ liệu.
Tƣơng tựnhƣ vậy, ta thiết kế một phân cấp cho chiều Region nếu nhƣ chúng ta muốn phân tích dữ liệu cho chiều này ở các mức chi tiết (trừu tƣợng) khác nhau. Cụ thể phân cấp nhƣ sau:
RegionCountryCityOffice. Ý nghĩa của phân cấp này nói rằng: mỗi vùng địa lý trên thế
giới có nhiều nƣớc, mỗi nƣớc có nhiều thành phố, và mỗi thành phố có thể có một hoặc nhiều
văn phòng đại diện của công ty đó. Vì thế, nếu biết sốlƣợng tiền lãi thu đƣợc của mỗi văn phòng đại diện thì sẽ tổng hợp đƣợc tiền lãi của từng thành phố, của từng quốc gia và của từng vùng địa
89
lý. Phân cấp cho chiều thời gian từ năm đến ngày đƣợc thể hiện trong hình vẽ dƣới đây
Nhờ có phân cấp, chúng ta biết đƣợc mức độ chi tiết của dữ liệu trong từng chiều của kho dữ liệu và thiết kế đƣợc cách tổng hợp dữ liệu sử dụng cho việc phân tích từ mức cao tới mức thấp hay
ngƣợc lại.
Các thao tác cơ bản của xử lý phân tích trực tuyến
Xử lý phân tích trực tuyến bao gồm các thao tác cơ bản sau đây
- Cuộn lên (Drill-up): dùng để tổng hợp dữ liệu từ mức thấp lên mức cao. Thao tác đƣợc dùng khi tổng hợp dữ liệu ở các mức độ khác nhau từ thấp đến cao trong một phân cấp của một chiều nào đó hoặc khi muốn giảm chiều dữ liệu, cung cấp dữ liệu tổng hợp theo
mộtsố lƣợng chiều ít hơn số lƣợng chiều dữ liệu ban đầu của khối dữ liệu (sẽ xem xét ví dụ minh họa sau)
- Khoan xuống (Drill-down): ngƣợc với thao tác cuộn lên, dùng để xem dữ liệu ở mức độ chi tiết hơn của một phân cấp theo một chiều nào đó hoặc khi muốn tăng số chiều của dữ liệu, xem chi tiết theo số lƣợng chiều nhiều hơn dữ liệu hiện tại.
- Cắt ngang (dice) và cắt dọc (slide): giống nhƣ phép chiếu và phép chọn trong đại số quan hệ
- Xoay (pivot): dùng để định hƣớng hay xoay lại khối dữ liệu theo một số chiều mà ngƣời sử dụng quan tâm, hoặc để thể hiện biểu diễn dữ liệu một cách trực quan, chuyển dạng biểu diễn 3 chiều thành một chuỗi các biểu diễn 2 chiều.
- Các thao tác khác: xuất phát từ những thao tác cơ bản trên
o Khoan chéo (Drill across): bản chất giống thao tác khoan xuống và cuộn lên nhƣng ở đây thao tác không chỉ liên quan tới một bảng Fact mà liên quan tới
90
nhiều bảng Fact có chung một số thuộc tính (chiều) để cuộn lên xuống ở các mức
khác nhau
o Khoan xuyên suốt (Drill through): cuộn lên từ đáy của khối dữ liệu lên đến mức các bảng quan hệ đầu cuối (sử dụng ngôn ngữ SQL để thực hiện)
Để thực hiện một truy vấn trong kho dữ liệu chúng ta có thể sử dụng một mô hình mạng hình sao (Star-Net) để thiết lập câu lệnh. Xét ví dụ trong hình vẽdƣới đây để hiểu đƣợc mô hình này
Giả sử cho sẵn một kho dữ liệu có các 8 chiều nhƣ hình vẽ trên bao gồm: Time (thời gian),
Shipping Method (phuơng thức chuyển hàng), Customer Orders (các loại đơn đặt hàng của khách hàng), Customers (Khách hàng), Product (Sản phẩm), Organization (loại tổ chức bán hàng), Promotion (loại khuyến mại), Location (vị trí bán hàng). Một số chiều có phân cấp đƣợc thể hiện trong hình vẽ, nhƣ chiều Time có phân cấp theo annually (hàng năm), qtrly (hàng quí),
daily (hàng ngày), chiều Organization đƣợc phân cấp thành các Division (chi nhánh), District (một nhóm ngƣời), Sales Person (ngƣời bán hàng), Customer Orders đƣợc phân cấp thành mua theo Hợp đồng (Contracts) và mua theo từng đơn đặt hàng một (Order) v.v…
Chúng ta cần trả lời một câu truy vấn nhƣ sau: hãy tính số tiền thu đƣợc của việc bán hàng theo mỗi nhóm sản phẩm, của từng nhóm ngƣời, của từng nƣớc, hàng quí và của từng hợp đồng đƣợc
đặt mua. Câu truy vấn này sẽ cần lấy dữ liệu theo 5 chiều là Product, Organization, Region,Time và Customer Orders, trong đó mỗi chiều đều có phân cấp dữ liệu ở mức độ chi tiết khác nhau. Mức độ ở chiều Product là Product Group (vì cần tổng hợp theo từng nhóm mặt hàng), ở chiều
91
Organization là District (vì theo từng nhóm ngƣời), ở chiều Location là Country (vì theo từng
nƣớc), ở chiều Time thì là Qtrly, ở chiều Customer Orders là Contracts (vì theo từng hợp đồng), câu truy vấn lấy dữ liệu ở 5 chiều trong tổng số 8 chiều và ở các mức nhƣ trên nên đƣợc thể hiện bởi một hình đa giác 5 cạnh nhƣ trên hình vẽ, đấy chính là mô hình mạng sao của truy vấn. Quay trở lại thiết kế của kho dữ liệu, bảng Fact chứa dữ liệu với số chiều lớn nhất và ở mức thấp nhất
ở mỗi chiều có phân cấp. Qui chiếu vào mô hình mạng sao trên thì bảng Fact chính là tâm điểm của sơ đồ trên.
3.3 Kiến trúc của kho dữ liệu Tiến trình thiết kế một kho dữ liệu