Tải bản đầy đủ (.doc) (32 trang)

Thuật ngữ OLAP và cơ sở dữ liệu đa chiề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 (409.14 KB, 32 trang )

Tiểu luận nhóm 5 - Khoa học máy tính 2007

LỜI MỞ ĐẦU
Thuật ngữ OLAP và cơ sở dữ liệu đa chiều hay được đồng nhất với nhau,
gây nên sự mập mờ xung quanh hai khái niệm này. Bản chất của cơ sở dữ liệu đa
chiều là một kiến trúc cơ sở dữ liệu lưu giữ thông tin tổng hợp bao gồm tất cả các
mục dữ liệu chính (hay các chiều) tham chiếu lẫn nhau. Còn bản chất cốt lõi của
OLAP là dữ liệu được lấy ra từ DW hoặc DM sau đó được chuyển thành mô hình
đa chiều và được lưu trữ trong một kho dữ liệu đa chiều (dữ liệu được lưu trữ theo
mảng thay vì bản ghi như mô hình quan hệ). Công cụ OLAP lấy dữ liệu trong kho
dữ liệu để thực hiện các công việc phân tích đặc biệt theo nhiều chiều và phức tạp
hỗ trợ cho việc ra quyết định.
Như vậy, OLAP là một thể hiện mặt trước cho phép người sử dụng đầu cuối
lựa chọn các chiều và các sự kiện tham chiếu lẫn nhau. Các nguồn dữ liệu cho một
ứng dụng OLAP bao gồm cơ sở dữ liệu đa chiều, cơ sở dữ liệu quan hệ và các dữ
liệu bảng tính (lấy từ một kiến trúc CSDL bất kỳ). Nhưng vì kho dữ liệu đa chiều
và các dịch vụ của OLAP thường được kết hợp với nhau nên mới có sự đồng nhất
giữa 2 thuật ngữ trên.
Từ đó nổi lên vấn đề cần quan tâm là: kho dữ liệu đa chiều và các dịch vụ
của OLAP kết hợp với nhau như thế nào để đạt được những yêu cầu đa chiều của
người sử dụng ? Hay đó chính là "vấn đề lưu trữ trong OLAP".
Với mong muốn biết rõ thêm về cách lưu trữ trong OLAP nên trong tiểu luận
của mình, nhóm 5 xin trình bày một số tìm hiểu về:
1. Cách tổ chức hiệu quả đối với mảng đa chiều lớn
2. Lưu trữ tích hợp dữ liệu cho truy vấn đa chiều
3. Sự sắp xếp lại giá trị thuộc tính đối với hiệu quả của HOLAP
4. DROLAP - Một hướng tiếp cận dựa trên miền đặc đối với OLTP
Nhóm 5 xin chân thành cảm ơn sự hướng dẫn, giảng dạy tận tình của TS Trần
Thanh Bình. Chắc chắn tiểu luận còn đơn giản và không tránh khỏi những sai sót,
rất mong được sự chỉ bảo, góp ý của Thầy và các bạn để phần trình bày của nhóm 5
được hoàn chỉnh hơn.


1


Tiểu luận nhóm 5 - Khoa học máy tính 2007

NỘI DUNG
I. CÁCH TỔ CHỨC HIỆU QUẢ CỦA MẢNG ĐA CHIỀU LỚN
Các ứng dụng khoa học và kỹ thuật thường sử dụng các mảng đa chiều lớn.
Phương pháp thông thường của việc lưu trữ một mảng đa chiều là định vị tuyến
tính vì vậy mảng được bố trí một cách tuyến tính bằng một tổ hợp đường ngang của
các trục trong trật tự định trước. Chiến lược này (bắt chước cách mà Fortran lưu trữ
các mảng trong bộ nhớ chính) có thể dẫn đến các kết quả tai hại trên bộ nhớ thứ hai
hoặc thứ ba. Vì thế tối ưu hóa việc định vị mảng là một yêu cầu cấp thiết cho lưu
trữ trong các mảng đa chiều lớn.

1. Vấn đề lưu trữ của các mảng
Chúng tôi bắt đầu phần này bằng việc trình bày mô hình mẫu truy cập mà
chúng tôi sử dụng để tối ưu hóa sự xếp đặt (bố trí) mảng. Sau đó, chúng tôi mô tả
một trong bốn chiến lược tổ chức mảng và phác
họa một thuật toán có thể được sử dụng để thi
hành nó trong một DBMS.
Xét một mảng n chiều. Chúng tôi mô hình
hóa mỗi yêu cầu truy cập của người sử dụng như
là một hình chữ nhất n chiều định vị một nơi nào
đó trong phạm vi mảng. Hơn thế nữa, chúng tôi
nhóm các truy cập người sử dụng thành các tập
hợp các lớp L1,….LK, mỗi Li chứa tất cả các hình
chữ nhật có kích cỡ cụ thể (Ai1,….,Ain). Cuối
cùng, chúng tôi cho một truy cập xuất hiện đến một số hình chữ nhật trong lớp thứ i
với khả năng Pi . Vì vậy, mẫu truy cập đối với một mảng có thể được miêu tả bởi

tập hợp:
{(Pi, Ai1,Ai2,….,Ain) : 1 ≤ i ≤ K}

2


Tiểu luận nhóm 5 - Khoa học máy tính 2007

Hình 1 minh họa một ví dụ trên một mảng 10 x 10. Ba hình chữ nhật tô đậm
(mỗi truy cập với khả năng 1/3) miêu tả việc truy cập vào hai lớp tương ứng với
mẫu truy cập sau:
Mẫu truy cập đó có thể được cung cấp bởi người sử dụng đầu cuối hoặc được
xác định bởi ví dụ thống kê các truy cập mảng trong một hệ thống quản lí cơ sở dữ
liệu.
1.1. Cắt khúc
Thay vì sử dụng cách định vị tuyến tính kiểu FORTRAN, chúng ta có thể
phân tích mảng thành các khúc đa chiều, mỗi kích cỡ của một khối lưu trữ block A
là đơn vị chuyển giao sử dụng bởi hệ thống tệp trong việc di chuyển dữ liệu từ thiết
bị lưu trữ này đến thiết bị lưu trữ khác. Hình dáng của các khúc đó được chọn để
cực tiểu hóa số khối trung bình tìm nạp cho một mẫu truy cập được đưa ra. Để
minh họa ý nghĩa của việc cắt khúc chúng tôi xét ví dụ như hình 2. Hình 2(a) biểu
diễn một mảng 3 chiều có kích cỡ X 1 = 100, X2 = 2000 và X3 = 8000 sử dụng cách
lưu trữ định vị tuyến tính và hình 2(b) minh họa cách lưu trữ tương tự sử dụng sự
biểu diễn cắt khúc. Giả sử mảng được lưu trữ trên một đĩa từ và dữ liệu chuyển
giao giữa bộ nhớ chính và đĩa khoảng 8Kb (trong ví dụ này giả sử rằng 8kb =
8000bytes).

3



Tiểu luận nhóm 5 - Khoa học máy tính 2007

Cho mẫu truy cập đối với mảng này là {(0.5, 10, 400, 10), (0.5, 20, 5, 400)}.
Nếu mảng được lưu trữ tuyến tính với X 3 được xem như là trục trong cùng (as the
innermost axis) theo sau bởi X 2 và kế tiếp là X1, như biểu diễn trong hình 2(a), sau
đó mỗi khối đĩa sẽ nắm giữ chỉ một dòng các giá trị dọc theo X 3. Truy cập đầu tiên
sẽ tìm nạp một tổng 10 x 400 x 1 = 4000 khối, và truy cập thứ hai sẽ tìm nạp 20 x 5
x 1 = 100 khối. Do đó, mẫu truy cập này tìm nạp trung bình 4000 x 0.5 + 100 x 0.5
= 2050 khối. Vì vậy, trung bình số byte yêu cầu có thể vừa khớp 5 khối, số lượng
dữ liệu tìm nạp là gấp 410 lần lượng dữ liệu thực tế được sử dụng.
Giả sử chúng ta chia mảng thành các khúc 8Kb. Hình dạng của mỗi khúc là
một hình khối (20,20,20) như hình 2(b). Với mỗi mẫu truy cập giống nhau, số khối
tìm nạp là 1 x 20 x 1 đối với lần truy cập đầu tiên và 1 x 1 x 20 đối với lần truy cập
thứ hai, cho rằng điểm bắt đầu của hình chữ nhật truy cập sắp hoàn toàn thẳng hàng
với điểm bắt đầu của một khúc. Số khối trung bình tìm nạp là 20 x 0.5 + 20 x 0.5 =
20 trong khi đối với các mảng không cắt khúc là 2050. Như vậy, kết quả cắt khúc
làm giảm hơn 100 lần số khối tìm nạp. Nhằm thực hiện sự cải tiến đó, chúng tôi
cần một cách để tối ưu hóa hình dạng của một khúc.
Bây giờ chúng tôi trình bày một định nghĩa chính xác của bài toán. Cho một
mảng n chiều [X1, X2,….,Xn] trong đó Xi là chiều dài trục thứ i của mảng, kích cỡ
khối C và một mẫu truy cập {(P i, Ai1, Ai2,….,Ain): 1 ≤ i ≤ K}, mục đích là tìm hình
dạng của các khúc mà mảng bị phân tách sao số khối trung bình tìm nạp là nhỏ
nhất. Hình dạng của các khúc đó

được chỉ định bởi một Tuple

(c1,c2,…,cn) trong đó ci là chiều dài

của trục thứ i của các khúc đa


chiều. Kích cỡ của các khúc nhập

vào theo sự ràng buộc sau

trên mỗi ci:
Số khối trung bình tìm nạp đối với một mẫu truy cập theo lý thuyết và hình
dạng khúc cắt được cho

bởi:

4


Tiểu luận nhóm 5 - Khoa học máy tính 2007

Mục tiêu là chọn hình dạng khúc cắt thõa mãn sự ràng buộc và làm cho (1)
cực tiểu.
Sự hiện diện của hàm trần trong (1) làm cho giải pháp hình thức khép kín
khó khăn. Một cách khác có thể luôn luôn tìm thấy giải pháp tối ưu bằng cách tìm
kiếm hết mọi khía cạnh của tất cả các hình dạng có thể mà thõa mãn sự ràng buộc
kích cỡ. Trong trường hợp này, số lượng hình dạng phát sinh là theo luật số mũ
theo chiều của mảng. Các phương pháp (kỹ thuật) khác có thể được sử dụng để hạn
chế bớt không gian tìm kiếm. Ví dụ:
* Thay vì xét tất cả các hình dạng có thể, chúng ta chỉ tạo ra các hình dạng
lớn nhất. Một hình dạng là lớn nhất khi tăng chiều dài của bất cứ cạnh nào của hình
đó sẽ vi phạm đến sự ràng buộc về kích thước. Ví dụ, nếu C = 15 và n = 2 thì hình
dạng (5,3) là cực đại trong khi (4,3) và (5,2) thì không.
* Thay vì xem xét tất cả các hình dạng có thể, trước tiên chúng ta tạo ra một
giải pháp gấn tối ưu nhất bằng cách chỉ xem xét các hình dạng có chiều dài mỗi
cạnh là lũy thừa 2. Sau đó, giải pháp này được cải tiến bằng cách xét các hình dạng

khác trong “vùng lận cận” với hình dạng đã xét. Vùng lận cận bao gồm các cạnh
biến đổi từ một nữa đến gấp đôi cạnh tương ứng trong giải pháp gần tối ưu.

1.2 Sắp xếp lại thứ tự
Một lần mảng bị cắt khúc, chúng ta cần đến một phương pháp tốt để bố trí
các khúc cắt trên đĩa. Cách tự nhiên là bố trí các khúc bằng cách quay ngang mảng
bị cắt khúc theo thứ tự trục. Do đó, thứ tự các trục khác nhau sẽ dẫn đến việc bố trí
khúc khác nhau. Lần tìm nạp các khối cho một hình chữ nhật yêu cầu có thể được
giảm bằng cách chọn thứ tự trục bên phải. Bây giờ chúng ta xuất phát từ một công
thức đơn giản để tìm một thứ tự tốt của các trục của mảng sao cho khoảng cách tìm
kiếm trung bình để lấy thông tin từ một hình chữ nhật trung bình trong mẫu truy
cập giảm xuống. Chúng ta cho rằng các khối của mảng được sắp đặt (bố trí) kề
nhau trên đĩa và một cylinder (một đơn vị lưu trữ bao gồm một tập các rãnh ghi
chiếm cùng vị trí) được sử dụng hoàn toàn trước khi định vị dữ liệu trên cylinder kế
5


Tiểu luận nhóm 5 - Khoa học máy tính 2007

tiếp. Việc phân tích dưới đây chỉ có liên quan nếu đĩa được sử dụng riêng cho sự
phục hồi mảng dữ liệu (retrievals on the array data).
Xét một mảng n chiều [X1, X2…Xn] chia thành các khúc có dạng [c1,c2,…cn].
Bổ đề 1. Số rãnh ghi để tìm kiếm trên đĩa đối với một yêu cầu truy cập (y 1,
y2,…,yn)

ít

nhất

là:


trong đó zi = [yi/ci], di = Xi /ci (giả sử rằng ci chia Xi chính xác) và B là số
khối một cylinder trên đĩa.
Bổ đề 2: Cho một mẫu truy cập, giá trị của biểu thức (2) tính toán mức trung
bình trên tất cả các phần tử của mẫu truy cập là cực tiểu đối với thứ tự 1,2,…,n (với
n là trục trong cùng) nếu

Để minh họa sự thuận lợi của việc xếp lại thứ tự các trục của mảng ta xét ví
dụ như hình 2(b). Giả sử số khối của một cylinder là 60. Khi đó với mẫu truy cập
cho như hình 2 thì số rãnh trung bình tìm kiếm (theo bổ đề 1) là 67 đối với thứ tự
các trục của mảng là (X 1, X2, X3). Sử dụng bổ đề 2, nếu chúng ta đổi lại thứ tự các
trục là (X1, X3, X2) thì số rãnh tìm kiếm giảm xuống là 17

1.3 Sự dư thừa
Bố trí dữ liệu sử dụng một kích cỡ khúc làm giảm đến mức tối thiểu chi phí
truy cập trung bình, nghĩa là nó có hiệu quả đối với một vài hình chữ nhật nhưng
không hiệu quả đối với các hình khác. Chúng tôi đề xuất việc duy trì các bản sao
dư thừa của mảng mà các bản sao này được tổ chức theo một cách khác để tối ưu
6


Tiểu luận nhóm 5 - Khoa học máy tính 2007

các lớp khác nhau trong mẫu truy cập. Cụ thể, chúng ta chia các lớp trong mẫu
truy cập thành nhiều phân vùng (partition - một phần của khu vực lưu trữ trên đĩa
cứng) như số bản sao đã đề xuất và tối ưu mỗi bản sao cho phân vùng kết hợp của
nó (tức là tạo ra mối liên kết giữa bản sao và phân vùng). Do đó, bước đầu tiên là
tìm R phân vùng, trong đó R là số bản sao thõa thời gian truy cập lũy tích
(cumulative access time) đối với các truy vấn trong các lớp của mẫu truy cập được
cực tiểu. Chúng ta có thể làm điều này bằng cách sử dụng một trong hai hướng tiếp

cận sau:
* Sử dụng brute force để thử tất cả các phân vùng có thể và chọn ra phần
vùng tốt nhất. Trong trường hợp xấu nhất, số phân vùng được xét là thuộc số mũ
theo số phần tử trong mẫu truy cập.
* Sử dụng các phương pháp (kỹ thuật) nhóm vector để nhóm các lớp thành
các cluster. Chúng ta có một tập hợp bắt đầu K lớp và muốn chia chúng thành R
cluster. Ban đầu, mỗi lớp thuộc về một cluster khác nhau và chúng ta dần dần trộn
một cặp các cluster với khoảng cách có trọng số tối thiểu giữa chúng cho đến khi
còn lại R clusters.
Khi một yêu cầu đọc đến một mảng sao thì hệ thống thực hiện theo thời gian
trước tiên sẽ tìm mảng sao (sao chép) với chi phí truy cập ước lượng nhỏ nhất. Chi
phí ước lượng là tổng trọng số của số khối tìm nạp, khoảng cách tìm kiếm và các
chuyển đổi giữa các phương tiện truyền thông (trong trường hợp các thiết bị thứ
ba). Sau đó chi phí bản sao tối thiểu được dùng để trả lời các truy vấn.

1.4. Phân chia
Thiết bị nhớ thứ ba là các hệ thống lưu trữ robo-line gồm có một số lượng
lớn phương tiện truyền thông (các băng từ và đĩa) và một vài ổ đĩa đọc-ghi. Một
đầu đọc (robot arm) chuyển đổi phương tiện (media) giữa các ngăn xếp (shelves)
và ổ đĩa trong mười giây. Để cải tiến sự thực hiện số lần chuyển đổi giữa các
phương tiện được yêu cầu để truy cập thì hình chữ nhật yêu cầu nên được làm nhỏ
đi. Mảng nên được phân chia sao cho các phần của mảng thường xuyên bị truy cập
7


Tiểu luận nhóm 5 - Khoa học máy tính 2007

cùng nhau nằm trên cùng phương tiện. Chúng ta có thể mở rộng phương pháp cắt
khúc để xử lý việc chuyển đổi phương tiện bằng cách:
* Xây dựng kích cỡ khúc cắt (chunk) của một đĩa thay vì một khối đĩa (disk

block).
* Cực tiểu hóa số lượng đĩa chuyển đổi đĩa thay vì số lượng trang tìm nạp
(number of page fetches).
Việc phân chia có thể được sử dụng để cực tiểu hóa sự chuyển đổi các
phương tiện cho cả đĩa lẫn các thiết bị băng từ. Tuy nhiên, đối với băng từ thời gian
tìm kiếm trung bình (45 giây) là lớn so với thời gian chuyển đổi. Do đó, cực tiểu
hóa sự chuyển đổi giữa các phương tiện là ít quyết định (crucial) hơn cực tiểu hóa
thời gian tìm kiếm.
II. LƯU TRỮ TÍCH HỢP CHO TRUY VẤN ĐA CHIỀU
Hệ thống OLAP là một hệ thống hỗ trợ những công cụ phân tích xử lý dữ
liệu đa chiều. Ngày nay một vấn đề đặt ra đối với công nghệ kho dữ liệu là giải
quyết được sự mẫu thuẫn giữa việc càng ngày các truy vấn càng phức tạp, với
nhiều đòi hỏi cấp bậc cao với việc không ngừng nâng cao, cải tiến tốc độ trả lời
truy vấn, tích hợp dữ liệu. Một trong những phương pháp giải quyết vấn đề đó,
chúng ta tìm hiểu về ứng dụng cache hoạt động (Active cache).
1. Chunk-based caching:
Chunk-based caching là lý thuyết nâng cao hiệu quả xử lý dữ liệu OLAP đa
chiều, trong đó các chiều được tổ chức thành những không gian đa chiều (multidimension space) và các dữ liệu tham chiếu vào những không gian đó. Với mỗi
chiều (dữ liệu) thì những giá trị phân biệt khác nhau thì được phân vào các vùng
riêng biệt, do đó không gian đa chiều cũng phân thành từng chunk (khúc dữ liệu).
Hình 1: chiều Sản phẩm và Thời gian được tổ chức vào một không gian đa chiều.
Trong mô hình (lược đồ) chunk-based caching thì những kết quả truy vấn mà
chứa trong cache được nằm trong các chunk và các chunk này chịu sự quản lý của
cache. Và khi có một truy vấn thì nhiệm vụ của cache là xác định và dò ra chunk
8


Tiểu luận nhóm 5 - Khoa học máy tính 2007

lưu kết quả truy vấn đó. Với phương thức đó, thì danh sách chỉ mục chunk gồm 2

phần, một phần chứa những trả lời truy vấn đã nạp vào cache, phần hai là những
chunk còn thiếu (chưa nạp vào cache), và để hoàn thiện việc trả lời truy vấn thì
những chunk còn thiếu này được nạp bằng những truy vấn lựa chọn SQL (selection
SQL) từ backend.
2. Tích hợp trong cache:
Trong một mô hình đa chiều, có nhiều cấp bậc tích hợp khác nhau, mỗi cấp
bậc tương ứng với hoạt động group-by khác nhau. Các group-by này được tổ chức
dưới dạng mạng lưới mà nối với nhau bằng các mối quan hệ “có thể xử lý bằng”.
Với bất kỳ group-by nào thì có rất nhiều mối quan hệ đó.
Một cách tổng quát, một group-by (x1, y1 , z1) có thể xử lý bởi group-by (x2,
y2 , z2) nếu x1 ≤ x2, y1 ≤ y2 và z1 ≤ z2 thì xét ví dụ sau: group-by (0,2,0) có thể xử lý
bằng (0,2,1) hoặc (1,2,0).
Khi chúng ta sử dụng chunk-based caching thì vấn đề đã nảy sinh những
phức tạp khó khăn hơn nhiều. Vói tính chất đóng kín nên sự tương ứng giữa chunk
với các cấp bậc tích hợp là khá đơn sơ. Ví dụ chunk ở cấp bậc (0,2,0) có thể xem là
chunk 0 sẽ ánh xạ đến một tập hợp chunk cấp bậc (1,2,0) mà ta gọi là các chunk 0
và 1. Để xử lý chunk 0 (0,2,0) từ (1,2,0), chúng ta cần các chunk 0 và 1 (1,2,0).
Điều đó có lẻ xảy ra chỉ với chunk 0 (1,2,0) lưu trong cache trong khi chunk 1 thì
được xử lý thông qua các chunk khác, và điều này có nghĩa là chỉ có chunk 0 là
được xử lý tại cache. Do đó, để biết được một chunk có phải được xử tại cache hay
không, thì ta phải dò hết các mối quan hệ liên quan đến chunk đó trong mạng lưới
từ group-by chứa chunk đó đến group-by nền. Hình 3 chỉ ra rằng có nhiều cách
khác nhau để xử lý chunk (0,2,0) từ mạng lưới, đây cũng là một ví dụ của việc
dùng phương pháp thông thường để xử lý chunk tại cache.
3. Phương pháp tìm kiếm vét cạn:
Phương pháp tìm kiếm vét cạn (ESM) là một phương pháp tìm kiếm thông
thường đối với những chunk được xử lý từ cache. Nếu chunk là thuộc vào chunk
9



Tiểu luận nhóm 5 - Khoa học máy tính 2007

còn thiếu, thì nó sẽ được tìm kiếm theo các đường dẫn đến group-by nền để nạp
chunk đó vào xử lý tại cache. Ta có thuật toán như sau:

Bổ đề 1: Cho một lược đồ n chiều, hi là bậc kích thước của chiều i. Giả sử
(l1, l2, l3...ln) là cấp bậc của một group-by, thì ta có (0,0,0...) là cấp bậc tích hợp và
(h1, h2, h3...hn) là cấp bậc nền. Khi đó số đường dẫn trong mạng lưới từ một cấp bậc
group-by bất kỳ đến group-by nền được tính theo công thức:

4. Phương pháp dựa trên bộ đếm ảo:
Phương pháp dựa trên bộ đếm ảo (VCM) là một cải tiến của phương pháp
thông thường (ESM), xuất phát từ hai ý tưởng:
1. Do cấu trúc mạng lưới nên khi ESM tìm kiếm theo các đường dẫn khác
nhau thì sẽ có các đỉnh được thăm nhiều lần.
2. Có quá nhiều truy vấn về một chunk theo nghĩa đó thì ta có thể dùng chỉ
mục trạng thái của cache như một siêu thông tin về mỗi chunk.
Ví dụ 3:

10


Tiểu luận nhóm 5 - Khoa học máy tính 2007

Theo thuật toán ESM, tìm kiếm từ chunk 0 bậc (0,0) đến (1,1) thì có thể đi
theo hai đường, nhưng cả hai đường này cuối cùng đều phải duyệt qua các chunk
0,1,2,3 tại bậc (1,1). Nó không tận dụng kết quả đã có được, và đây là một sự lãng
phí về thời gian.
Theo cách tiếp cận VCM, thì VCM sẽ duy trì bộ đếm mỗi chunk tại mỗi bậc
group-by. Một chunk có thể được lưu ở cache hoặc có thể truy vấn thông qua

đường dẫn trên mạng lưới. Bộ đếm ảo cho một chunk được định nghĩa như sau:
Định nghĩa 1: (Bộ đếm ảo) Bộ đếm ảo cho một chunk số các nút cha của
nút mà được tìm thấy thành công trên một tuyến đường dẫn của mạng lưới. Bộ đếm
sẽ tăng lên 1 nếu chunk được tìm ra nạp vào cache và được xử lý.
Hệ quả: Chỉ khi nào chunk được xử lý tại cache thì bộ đếm ảo mới có giá trị
lớn hơn 0.
Ví dụ 4: Xét lại sơ đồ ở Ví dụ 3. Ở bậc (1,1) có 4 chunk; bậc (1,0) và (0,1)
mỗi bậc có 2 chunk và bậc (0,0) chỉ có 1 chunk. Hình 4 cho biết chunk nào đang
hiện có ở cache và được bộ đếm lưu giữ bằng VCM. Chunk 0 ở bậc (1,1) có bộ
đếm là 1 vì nó đang hiện diện ở cache và chắc chắn được xử lý. Chunk 1 ở bậc
(1,1) không hiện diện ở cache và không được xử lý nên bộ đếm của nó là 0. Chunk
0 ở bậc (1,0) có bộ đếm của nó là 1 vì mặc dù nó không hiện diện ở cache nhưng
nó lại được xử lý thông qua việc tìm kiếm trên đường dẫn của mạng lưới,...
11


Tiểu luận nhóm 5 - Khoa học máy tính 2007

Ta có giải thuật dưới đây quy trình thực hiện theo VCM:

4.1. Việc duy trì bộ đếm
Việc duy trì bộ đếm ảo sẽ giúp cho quá trình tìm kiếm đảm bảo tức thời. Tuy
nhiên, điều này dẫn đến việc cần phải thêm thủ tục bổ sung khi chunk được chèn
vào hoặc xóa ra khỏi cache do vậy bộ đếm lúc này cần phải tiến hành cập nhật.
Thuật toán dưới đây thực hiện việc cập nhật bộ đệm:

12


Tiểu luận nhóm 5 - Khoa học máy tính 2007


Bổ đề 2: Giả sử rằng ta chèn một chunk bậc mới vào cache (l1, l2, l3...ln). Số
lượng bộ đếm cập nhật bằng n ∗ ∏ i =1 (li + 1)
n

Điểm đáng chú ý của thuật toán VCM là nó chỉ duy trì những thông tin vừa
đủ để xác định một chunk là được xử lý trong khi vẫn thực hiện việc cập nhật bộ
đếm với chi phí rất nhỏ. Độ phức tạp của một lần chèn phụ thuộc vào nội dung của
cache. Việc giảm độ phức tạp của tất cả các lần chèn chi phí sẽ thấp hơn rất nhiều
nếu như ta chỉ tiến hành theo từng trường hợp. Điều này là do những cập nhật chỉ
được thông tin khi một chunk lần đầu xử lý. Trạng thái lần đầu tiên xử lý này chỉ
có một lần, và chỉ thay đổi khi thực hiện việc xóa và có thể nó lại được cập nhật lại.
Tuy nhiên điều đó là điều ta không mong đợi. Thông thường, một chunk được chèn
thì quá trình cập nhật sẽ được thực hiện chỉ đối với bậc của chunk đó. Khi một
chunk bị đưa ra khỏi cache thì bộ đếm cũng phải được cập nhật.
5. Phương pháp dựa vào chi phí:
Cả hai thuật toán ESM và VCM đều chỉ xác định được chỉ một đường dẫn để
tìm và xử lý một chunk. Cho một chi phí tuyến tính của việc tích hợp, thì chi phí
cho việc xử lý một chunk tương đương với số lượng tuple (bậc) được tích hợp. Như
ta đã biết để tìm và xử lý một chunk thì có nhiều đường dẫn trên mạng lưới để thực
hiện, và mỗi đường có chi phí khác nhau. Và với ý tưởng đó thì ta có thể cải tiến
ESM hoặc VCM để tìm đường dẫn có chi phí thấp nhất.
Ví dụ 5:
Theo hình 5 có hai đường dẫn để xử lý chunk 0 bậc (0,0), đường thứ nhất là
tích hợp chunk 1 bậc (1,0) và chunk 0 và 2 bậc (1,1); đường thứ hai là tích hợp
chunk 0 và 1 bậc (0,1). Chi phí tích hợp hai đường này là khác nhau do số lượng
bậc tích hợp mỗi đường là khác nhau.

13



Tiểu luận nhóm 5 - Khoa học máy tính 2007

Hình 5: Chi phí tích họp khác nhau theo từng đường khác nhau
5.1 ESM dựa trên chi phí (ESMC):
Ta cải tiến thuật toán ESM thay vì kết thúc việc tìm kiếm ngay khi có đường
dẫn đầu tiên thì ta tiếp tục tìm kiếm để có được đường dẫn có chi phí thấp nhất. Độ
phức tạp của ESMC trong từng trường hợp là tương đương ESM. Tuy nhiên hao
phí trung bình theo trường hợp là cao hơn.
5.2. VCM dựa trên chi phí (VCMC):
VCMC tìm kiếm đường dẫn tốt nhất cho việc xử lý chunk bằng cách duy trì
thông tin chi phí để thêm vào cho thông tin bộ đếm. Với mỗi chunk được xử lý thì
thông tin bộ đếm sẽ có chi phí của đường dẫn chi phí thấp nhất để xử lý và nút cha
đã duyệt qua mà có đường dẫn chi phí thấp nhất. VCM và VCMC tương đồng nhau
cả về thuật toán lẫn thuật toán cập nhật, chỉ có điểm khác nhau duy nhất và quan
trọng nhất đó là việc chuyển cập nhật của VCMC có hai trường hợp: trường hợp
khi một chunk được xử lý lần đầu tiên và trường hợp chi phí thấp nhất xử lý một
chunk thay đổi.
Một lợi điểm khác của việc duy trì chi phí theo phương pháp VCMC là nó có
thể cho kết quả chi phí thấp nhất của việc xử lý một chunk ngay lập tức mà không
cần phải tiến hành tích hợp. Điều này rất hữu ích cho việc tối ưu hóa dựa trên chi
phí để có thể quyết định xem liệu tích hợp trong cache hay tiếp cận dữ liệu backend
cái nào là tốt hơn.
14


Tiểu luận nhóm 5 - Khoa học máy tính 2007

6. Nguyên tắc thay thế:
Trong một cache đơn giản, những chunks được tích họp ở mật độ cao hơn thì

khi truy xuất cache (caching) thì nó sẽ có độ ưu tiên (benefit) cao hơn và trong quá
trình thực hiện caching nó được ưu tiên cao hơn. Trong việc tích hợp các lược đồ
caching, việc gắn độ ưu tiên với một chunk là một điều khó khăn do bởi hai lý do
sau:
1. Nhiều chunk khác nhau được dùng để trả lời các truy vấn ở cùng bậc, một
chunk có thể được dùng để trả lời các truy vấn ở nhiều cấp độ tích hợp.
2. Một chunk có thể được sử dụng để trả lời một truy vấn ở nhiều cấp độ tích
hợp trên cơ sở các chunk khác hiện có trong cache. Ta có thể làm được điều này là
vì một chunk được tích hợp ánh xạ đến một tập các chunk ở cấp độ chi tiết hơn mà
nhờ chúng để xử lý chunk được tích hợp đó.
Ví dụ 6:

Hình 6: Độ ưu tiên
Chunk 0 bậc (1,1) hình 6(a)có độ ưu tiên thấp hơn chunk 0 bậc (1,1) hình
6(b), điều này là do chunk sự có mặt của chunk 1 bậc (1,1) hình 6(b) đã làm cho độ
ưu tiên của cả hai chunk 0 và 1 này cao hơn.
6.1 Xử lý độ ưu tiên:
Độ ưu tiên của chunk được xử lý tươi phụ thuộc vào cách thức xử lý:

15


Tiểu luận nhóm 5 - Khoa học máy tính 2007

1. Chunk được xử lý cache: là chunk được xử lý bởi hoạt động tích hợp các
chunk được xử lý cache. Khi đó độ ưu tiên của nó tính bằng chi phí tích hợp.
2. Chunk Backend: là chunk được xử lý tại backend, độ ưu tiên của nó là
tổng hợp chi phí kết nối tới backend, chi phí sản sinh truy vấn và nạp kết quả truy
vấn. Những chunk được xử lý tại backend trong quá trình caching sẽ được đánh giá
cao hơn chunk được xử lý từ những chunk khác hiện có trong cache, do đó tổng chi

phí của việc nạp kết quả truy vấn từ backend là rất cao.
6.2 Tổ chức nhóm của chunk
Trong việc thực hiện nguyên tắc thay thế tối ưu thì ta nên tổ chức nhóm bao
gồm những chunk hữu ích vì các nhóm như vậy sẽ có được độ ưu tiên của các
chunk trong nhóm cao hơn như ở ví dụ 6. Tuy nhiên thực hiện được điều này là
việc không hề đơn giản, do đó nó chỉ có ý nghĩa trong việc ước đoán chunk sẽ được
nạp vào cache để xử lý. Ta vẫn có thể giải quyết được vấn đề trên bằng cách tiền
xử lý hoàn toàn các group-by và nạp vào cache. Do toàn bộ chunk ở group-by đều
được nạp vào cache nên ta có thể dùng để xử lý mọi chunk ở cấp độ tích hợp cao
hơn. Như vậy quá trình tiền xử lý group-by là quá trình lấy thông tin nhóm chunk
hữu ích.
6.3 Nguyên tắc hai cấp bậc
Chúng ta để xuất các nguyên tắc sau trên cơ sở trực quan nghiên cứu:
- Các chunk backend do có độ ưu tiên cao hơn nên có thể dùng thay thế
chunk được xử lý cache. Ta chỉ có thể thực hiện việc thay thế này trong mỗi nhóm
theo nguyên tắc độ ưu tiên chuẩn (những chunk được tích hợp cao hơn thì sẽ có độ
ưu tiên cao hơn).
- Khi một nhóm chunk được dùng để xử lý nhóm chunk khác, thì giá trị khóa
(ta xấp xỉ LRU bằng KHÓA) của toàn bộ chunk trong nhóm được tăng lên một
lượng bằng độ ưu tiên của những chunk đã được tích hợp. Vì lý do này nên ta phải
luôn duy trì các nhóm chunk tích hợp hữu ích trong cache.

16


Tiểu luận nhóm 5 - Khoa học máy tính 2007

- Để hỗ trợ trong việc hình thành các nhóm hữu ích, chúng ta phải thực hiện
việc tải trước cache mà đã được nạp một group-by và phải có một số lượng lớn các
nhóm cấp thấp (descendent) trong mạng lưới. Tổ chức được một group-by như thế

thì có thể trả lời các truy vấn ở bất kỳ bậc (cấp độ) nào của nó.
Như vậy, rõ ràng nguyên tắc thay thế này là không phải tối ưu và do đó vấn
đề cải tiến nguyên tắc này là một đề tài rất hứa hẹn trong tương lai.
Việc cung cấp một cache có thể xử lý tích hợp dữ liệu cache linh hoạt cho
phép đảm bảo cache truy vấn đến những dữ liệu mà không hiện có tại cache. Và
đây là những thành tựu góp phần thúc đẩy nâng tầm ý nghĩa cache so với quan
niệm trước đây.
III. SỰ TÁI TỔ CHỨC GIÁ TRỊ THUỘC TÍNH ĐỐI VỚI HIỆU QUẢ
CỦA HOLAP
Xử lý phân tích trực tuyến (OLAP) là một kỹ thuật làm tăng tốc độ truy xuất
cơ sở dữ liệu sử dụng cho phân tích suy diễn. Mục đích chính của OLAP là phải có
hằng số thời gian hoặc gần như hằng số thời gian giải đáp cho nhiều câu truy vấn
tiêu biểu. Chẳng hạn, trong một cơ cở dữ liệu chứa sự biểu diễn của người bán
hàng, một mặt có thể muốn tính toán trực tuyến số lượng việc bán hàng đã làm tại
Ontario trong 10 ngày cuối cùng, chỉ bao gồm những người bán hàng mà có nhiều
hơn 2 năm khinh nghiệm. Sử dụng một cơ sở dữ liệu quan hệ chứa đựng những
thông tin người bán hàng, như thế một sự ước tính có lẽ được đắt hơn. Tuy nhiên,
sử dụng OLAP, phép tính có thể điển hình được thực hiện trực tuyến. Để hoàn tất
một cách nhanh chóng có thể tạo ra một khối dữ liệu, một lượt đồ từ tất cả các giá
trị thuộc tính dựa vào một sự đo lường.. Trong ví dụ trên, một cách có thể vạch ra
một lược đồ gồm ngày , kinh nghiệm của người bán hàng, và vị trí tương ứng số
lượng của việc bán hàng.
Chúng ta phân biệt giữa hai kiểu của phương pháp OLAP: OLAP quan hệ
(ROLAP) và OLAP đa chiều (MOLAP). Trong ROLAP, dữ liệu được lưu trữ chính
nó trong một cơ sở dữ liệu quan hệ, ngược lại với MOLAP, một mảng đa chiều lớn
được dựng nên bằng một dữ liệu. Trong MOLAP, một bước quan trọng trong việc
xây dựng dữ liệu là một khối dữ liệu được chọn lựa một “chuẩn”, mà là một ánh xạ
từ các giá trị thuộc tính đến số nguyên sử dụng để sắp xếp mảng. Một khó khăn đối
với MOLAP là mảng thường thưa thớt. Chẳng hạn, không có các bộ (tuples) nào
(ngày, kinh nghiệm, địa điểm) sẽ thoả người bán hàng. Mặt dù thưa thớt như vậy,

ROLAP có thể có được nhiều hiệu quả hơn trong điều kiện của sự lưu trữ. Ngoài
17


Tiểu luận nhóm 5 - Khoa học máy tính 2007

ra, có thuật toán nén để giúp làm giảm các yêu cầu lưu trữ của ROLAP. Trong một
các khác, MOLAP có thể nhanh hơn, đặc biệt là các tập hợp con của các khối dữ
liệu được dày đặc. Có các phần ngoại vi như Speedware và Microsoft được sử dụng
ghép lai OLAP (HOLAP), các vùng lưu trữ dày đặc của khối sử dụng MOLAP và
lưu trữ tạm thời sử dụng gần như ROLAP. Trong các từ khác một sự thay đổi thuận
lợi và có hiệu quả của khối dữ liệu mỏng đã được hoàn chỉnh khi các vùng dày đặc
được lưu trữ như là các mảng đa chiều và phần còn lại thưa thớt được mô tả bằng
một danh sách các giá trị với một cơ sở dữ liệu quan hệ.
<1 yrs
Ottawa
Toronto
Montreal
Halifax
Vancouve
r

>2 yrs
$732
$643
$450

$43
$76
<1 yrs


Halifax
Montreal
Ottawa
Vancouve
r
Toronto

1-2 yrs

$54
$12
1-2 yrs

$43

>2 yrs

$54
$450
$732

$76

$12
$643

Bảng 1: Hai bảng miêu tả khối lượng của việc bán hàng theo ngày bằng mức kinh
nghiệm của người bán hàng. Cho rằng ba thành phố chỉ có người có kinh nghiệm,
vài thứ tự (trên cùng) sẽ khiến chính chúng ta lưu trữ có hiệu quả hơn (HOLAP)

những cách khác (dưới cùng)
Trong khi tồn tại các phương pháp giải quyết có hiệu quả khác nhau để tìm khối
con dày đặc trong các khối dữ liệu, một vấn đề chúng ta vẫn đối diện đó là các khối
con (sub-cube) là phụ thuộc chuẩn hoá, vì thế tương tự dữ liệu với các giá trị thuộc
tính đã sắp thứ tự khác nhau có lẽ có các khối con dày đặc khác hoàn toànvà có thể
được lưu trữ nhiều hiệu quả đáng kể. Một vấn đề có liên quan với MOLAP hoặc
HOLAP đó là các giá trị thuộc tính có thể không có một quy tắc sắp xếp, vì thế sự
miêu tả chính xác lựa chọn cho khối là tuỳ ý. Trong ví dụ người bán hàng, hình
dung rằng “vị trí” có thể có giá trị “Ottawa”, “Toronto”, “Montreal”, “Halifax”, và
“Vancouver”. Cách nào chúng ta sắp xếp những thành phố: trong điều khoảng dân
số, khoảng cách, kinh độ hoặc thứ tự abc? Coi ví dụ cho trong bảng 1: rỏ ràng cách
18


Tiểu luận nhóm 5 - Khoa học máy tính 2007

thực hiện HOLAP sẽ phụ thuộc vào chuẩn của khối dữ liệu. Chúng ta cũng tin rằng
một chuẩn lưu trữ hiệu năng có thể thường dẫn đầu để thực thi các truy vấn tốt hơn.
Một cách mà tiêu chuẩn chỉ áp dụng khi các giá trị thuộc tính không được
các số mẫu đều nhau. Một tham số chuẩn trái ngược của các giá trị thuộc tính số
mà được lưu trữ một sơ đồ chỉ mục từ những giá trị đến chỉ mục thực tế trong
lượng khối để lưu trữ mở rộng. Một khối dữ liệu với n giá trị thuộc tính trong mỗi
chiều: chúng ta nói rằng một khối là regular hoặc n-regular. Hầu hết các cách khờ
khạo để lưu trữ như một lựơc đồ cho mỗi giá trị thuộc tính hợp lý được lưu trữ một
chỉ mục mời như là một số nguyên từ 1 đến n. Ra vẻ rằng chỉ số so sánh được sử
dụng lưu trữ khoảng logn bits, có nghĩa rằng nlogn bits được đòi hỏi. Tuy nhiên,
mảnglưu trữ cơ sở của một khối dữ liệu thông thường sử dụng n bits. Trong một
khía cạnh khác, ngoại trừ d=1, dạng chuẩn không phải dễ nhận thấy chủ đề và tất
cả các chiều có thể được chuẩn hoá. Trong trường hợp d=2 là tương tự để nén một
bức tranh, nơi mà các pixel được sắp xếp lại theo một chiều rộng sử dụng kỹ xảo.

Trong các khối dữ liệu đa chiều, khả năng có lợi là có thật.
1. Các khối dữ liệu sắp thứ tự khối
Trong phần này, cho d là số chiều (hoặc thuộc tính) của khối dữ liệu C và n i ,
với 1 <= i <= d, là số của giá trị thuộc tính của chiều i. Như vậy, C có kích thước
là n1 x n2…x n d. Rỏ ràng, chúng ta nhận ra giữa các cell và các chỉ mục (indices) của
khối dữ liệu.
“Cell” là khái niệm logic và mỗi cell tương ứng với khoá duy nhất để kết
hợp của các giá trị (v1, v2,…vd), với một giá trị vi cho mỗi thuộc tính i. Trong bảng
1, một trong 15 cell ứng với (Montreal, 1-2 yrs). Cấp phát (allocated ) cell, như
(Vancouver, 1-2 yrs) để lưu trữ các giá trị đo lường, ngược lại những cell không
được cấp phát như (Montreal, 1-2 yrs), Do đó, chúng ta sẽ cho rằng một vài chuẩn
ban đầu đã áp dụng đến các khối và thuộc tính giá trị của i là {1, 2, ….ni}. “Index”
là một khái niệm vật lý và mỗi bộ d (d-tuple) của các chỉ mục định rỏ một vị trí lưu
trữ bên trong một khối, Tại vị trí này đó là một cell, được cấp phát hoặc không cấp
phát. Sự chuẩn hoá thay đổi các cell và các chỉ mục của khối. Sự chuẩn hoá làm
thay đổi chỉ định của các cell đến các chỉ mục.
Chúng ta sử dụng #C để chỉ rỏ con số cấp phát các cell trong khối C. Vã lại,
ta nói rằng C có mật độ ρ =

#C
. Để hỗ trợ chính xác câu trả lời cho câu
n1 x n2 … x nd

truy vấn, chúng ta tìm một kỹ thuật lưu trữ hiệu quả để lưu trữ tất cả các cell phấp
phát #C.

Có nhiều cách để lưu trữ các khối dữ liệu sử dụng các luật khác nhau cho các
miền dày đặc hơn các miền thưa thớt. Ví dụ: Trong một khối con (sub-cube) đơn
19



Tiểu luận nhóm 5 - Khoa học máy tính 2007

dày đặc với d chiều tìm được và phần còn lại thưa hơn. Nó cũng có thể sử dụng
một lớp miền rộng.
Để minh chứng kế hoạch lưu trữ tốt nhất cho các khối dữ liệu, ta tính đến
việc nén một bức ảnh, nơi mà các khối đơn được sử dụng trong nhiều định dạng
nén ảnh gồm JPEG. Trong khi một vài nổ lực nhằm cải tiến các định dạng hiện tại
bằng cách chia nhỏ các hình ảnh vào các vùng có hình dáng tuỳ tiện nhờ các thuật
toán tương thích. Chúng có cho các quy định khác mà đủ để đáp ứng cho các thuật
toán không tương thích. Nó không xoá sạch theo cách suy diễn rằng nhiều hình thù
phức tạp chỉ dẫn đến nhiều cách lưu trữ có hiệu quả. Tham số khác cho các khối dữ
liệu sắp thứ tự khối mà nhiều lược đồ trung gian có hiệu quả trong phạm vi OLAP
truy vấn dựa vào chính nó trong các quy tắc khối.
Chúng ta theo dõi và cắt giữa khối dữ liệu trong block1. tháo rời d chiều khối
con che đậy toàn bộ khối dữ liệu. Chúng ta nghĩ rằng hằng số kích thước của khối
(block) m1 x … md; do đó, có

n1
nd
x…x
block.
m1
md

HÌNH 1: A 3x3x3 khối (cube) C với lát C 13 phần tô mờ
Rất dễ dàng, ta cho rằng mk chia nk cho tất cả k ∈ {1,…,d}. Mỗi block có thể
được lưu trữ trong một cách tin cậy. Chẳng hạn, với mật độ dày đặc. Đúng hơn xét
các lớp khác nhau của lược đồ nén, ta sẽ minh chứng chỉ hay chiều rộng sử dụng
lược đồ mã hoá cho các khối dữ liệu, tương ứng với thứ tự định sẵn ROLAP đơn và

MOLAP đơn. Có nghĩ rằng, cả chúng mô tả block như là một danh sách các bộ
(tuple), mỗi một địa chỉ được cấp phát cell trong block, hoặc ngược lại chúng mã

20


Tiểu luận nhóm 5 - Khoa học máy tính 2007

hóa block như là một mãng (array). Trong hai trường hợp cao nhất, một block rất
dày đặc, một block rất thưa thớt, MOLAP và ROLAP đã được định sẵn.
Có lẽ rằng một khối dữ liệu được lưu trữ sử dụng mã hoá block, chúng ta cần
đánh giá giá trị lưu trữ. Một mô hình đơn giản được đưa ra như sau. Giá trị lưu trữ
một cell đơn thưa thớt, như là một tuple chưa đựng vị trí của giá trị trong block là
thuộc tính giá trị d và giá trị đo lường của chính nó, được giả định là d/2+1. Ví dụ,
trong khi chúng ta có thể lưu trữ giá trị là 32 bits, giá trị số mỗi thuộc tính có vẽ là
216 . Thậm chí có thể nhiều hơn, chúng ta chỉ cần nhận ra giữa (chừng 2 16 ) giá trị
được sử dụng trong một block đã định sẵn. Do đó, việc lưu trữ dày đặc một block
với D cell đuợc cấp phát có giá trị là M = m1 x m2 x…x md, nhưng việc lưu trữ nó
các giá trị thưa là (d/2+1)D.
Đó là cách tiết kiệm nhiều để lưu trữ một block dày đặc nếu (d/2+1)D >M,
có nghĩa là, nếu D

D
1
>
. Chúng ta sẽ cho thấy việc mã hoá
m1 x m2 x … x md
d / 2 +1

các block này được hiệu quả thấp nhất khi một khối dữ liệu có mức độ dày đặc đều

nhau ρ trên tất cả các block. Trong trường hợp như vậy, nó có giá trị lưu trữ thưa là
d/2+1 cho mỗi cell được cấp phát nếu ρ <=
của ρ cho mỗi cell được cấp phát nếu ρ >

1
hoặc một giá trị lưu trữ thưa
d / 2 +1

1
d / 2 +1

Dựa vào một khối dữ liệu C, H(C) biểu hiện giá trị lưu trữ của chính nó.
Chúng ta có #C <= H(C) <= n1 ×. . .×nd . Do đó, chúng ta đo lường giá trị cho mỗi
cell được cấp phát E(C) là

H (C )
với quy ước rằng nếu #C = 0 thì E(C) =1. Chú ý
#C

rằng 1<= E(C) <= d/2+1. Một nhược điểm của mô hình này là nó bỏ qua lưu trữ rỏ
ràng vượt mức tương ứng kích thước số block,

n1
nd
x…x
. Tuy nhiên hằng số
m1
md

còn lại của số block lớn hơn, đó là điều hợp lý để thừa nhận rằng phần trên là một

hằng số. Như trong trường hợp khi chúng ta minh chứng một khối dữ liệu tương tự
dưới một dạng chuẩn khác sử dụng các chiều block cố định.
2. Các biện pháp toán học
Bây giờ chúng ta định nghĩa một mô hình HOLAP đơn, chúng ta xem lại hai
ngữ cảnh quan trọng nhất trong trang này: lát cắt (slices) và sự chuẩn hoá
(normalizations). Trong khi thực chất lát cắt xác định một trong các thuộc tính, một
dạng chuẩn có thể xem như là một tuple của các phép hoán vị.
2.1. Lát cắt (Slices): xác định một khối C n-quy tắc (n-regular) d - chiều (ddimensional) và đặt Ci1,…,id biểu thị các cell đã lưu trữ tại các chỉ mục (i 1, …, id) ∈
21


Tiểu luận nhóm 5 - Khoa học máy tính 2007
j
(1, … , n) d . Do đó, C có kích thước là nd. Lát cắt C v của C, cho mục v và chiều j
j

(1 <= j <= d và 1 <= v <= n) là khối có d-1 chiều tạo thành C[Vi1,...,ij −1,ij +1,...id ] =
C [Vi1,...,ij −1,v ,ij +1,...id ] . Nhìn Hình 1 cho ví dụ, và quan sát sự chuẩn hoá không ảnh hưởng
đến tập hợp của các cell trong một lát cắt - chỉ tên của lát cắt và các chỉ mục của lát
cắt của các cell bên trong lát cắt
Trong thao tác chuẩn hoá, các giá trị dữ liệu thực tế không quan trọng và
chúng ta cần biết rằng các chỉ mục chứa đựng các cell cấp phát. Kể từ đây chúng ta
thường nhìn một lát cắt như là một mảng Boolean d-1 chiều và chúng ta chứng tỏ
j
lát cắt tương ứng bằng C ^v . Chúng ta cũng có thể nhìn thấy một lát cắt như là
một vector có chiều dài là n d-1. chứa đựng cả giá trị đo lường hoặc giá trị Booleans,
1
sự quyết định trong luật lệ của chúng. Trong trường hợp, lát cắt C 3 nhận biết trong
hình 1 có lẻ được trình bày như là [4,0,0,5,9,2,0,1,0] hoặc [1,0,0,1,1,1,0,1,0], nếu
j

chúng mô tả các cell không được cấp phát bằng zero. Đặt # C ^v chỉ rỏ con số của
các cell cấp phát trong lát cắt

C

j
v

2.2. Sự chuẩn hoá và các phép hoán vị (Normalizations and
Permutations):
Cho một danh sách n mục (item), có n! phép hoán vị hợp lý và chúng ta
chứng tỏ cách thiết lập tất cả các phép hoán vị là Γn. Phép hoán vị đồng nhất được
biểu hiện là ι. Trong cách làm trái ngược trước trong việc nén cơ sở dữ liệu (ví dụ:
với mô hình HOLAP của chúng ta không có sự thực hiện thuận tiện từ phép hoán vị
các thứ tư của các thuộc tính của chính chúng (ngăn chặn xử lý tất cả các chiều đối
xứng). Thay vì chúng ta tập trung cho sự chuẩn hoá mà làm ảnh hưởng đến việc
sắp xếp mỗi giá trị của các thuộc tính. Một sự chuẩn hoá số π của một khối dữ liệu
C là d-tuple ((γ1, . . . , γd) của các phép hoán vị nơi mà γi ∈ Γn với i =1,…, d, và
việc chuẩn hoá khối dự liệu được đưa ra bởi π(C)i1,...,id = Cγ1(i1),...,γd (id ) cho tất
cả i1, . . . , id) ∈ {1, . . . ,n}d. gọi lại hoán vị đó, và do đó sự chuẩn hoá không
được thay đổi. Tuy nhiên, các sự chuẩn hoá luôn luôn bị đảo ngược, và có (n!) d
dạng chuẩn trong một khối dữ liệu n- quy tắc. Đặt Ξn biểu thị việc thiết lập tất cả
các dạng chuẩn, và chúng ta hoàn toàn viết Ξ khi các chiều của khối được nhận
biết. Dạng chuẩn đồng nhất được biểu hiện I = (ι, . . . , ι). Chúng ta nói rằng hai
khối dữ liệu C và C’ là tương đương (C ~ C’) nếu tồn tại một hoán vị π như là π(C)
= C’. Các yếu tố của lớp tương đương là số của các khối dữ liệu C riêng biệt trong
lớp này. Các yếu tố của một tập hợp lớn nhất cho bởi (n!) d và có các lớp tương
đương: chiếu đến các lớp tương đương tích hợp bởi một đường chéo (diagonal)
khối dữ liệu Ci1,...,id = 1 nếu i1 = i2 = . . . = id và 0 nếu ngược lại. Tuy nhiên cũng có
các lớp tương đương đơn (singleton ) từ đó một vài khối bất biết dưới dạng chuẩn:

22


Tiểu luận nhóm 5 - Khoa học máy tính 2007

chiếu đến một khối dữ liệu null cho bởi Ci1,...,id = 0 với tất cả (i1, . . . , id) ∈
{1, . . . ,n}d.
Để đếm số các tập hợp của một lớp thuộc các khối dữ liệu, nó đủ để hiểu
j
nhiều lát cắt C v của khối dữ liệu C được đồng nhất, do đó, chúng ta có thể đưa vào
trương mục bất biến dưới các phép hoán vị. Xét về tất cả n lát cắt trong chiều r,
chúng ta có thể đếm số các lát cắt đơn nhất d r và số bản sao nr,1, . . . ,nr,dr của mỗi
n!

cái. Do đó, số các hoán vị đơn nhất trong chiều r là nr,1! x...x nr, dr! và đưa ra các
yếu tố của một lớp tương đương là
đương được xuất phát bởi C =



d
r =1

n!

( nr,1! x...x nr, dr! ). Chẳng hạn, các lớp tương

0 1
có tập hợp 2 mặt dù có 4 dạng chuẩn thích
0 1


hợp. Hồi tưởng rằng E(C) đo lường giá trị mỗi cell cấp phát, chúng ta định nghĩa
nhân (kernel ) κm1,...,md là thiết lập tất cả các khối dữ liệu C của các chiều nhất định
như là E(C) là tối thiếu (E(C) =1) cho một vài chiều block cố định m 1, …, md. Khác
nữa, nó được thiết lậo cho tất cả các khối dữ liệu C nơi tất cả các block có mật độ 1
hoặc 0. Chúng ta định nghĩa bán kính phần lõi (kernel radius)
ρ=

max

Π∈ Ξ ,C ∈ m1,..., md

E(π(C))

Bởi vì các phép hoán vị có thể đảo ngược, chúng ta cho rằng tồn tại một khối dữ
liệu C là E(C) = ρ và nó có thể chuẩn hoá lại sử dụng một vài số π như là
E(π(C)) = 1. Trong trường hợp khác, bán kính phần lõi cho chúng ta một thước đo
của cách tác động chuẩn hoá. Bởi vì 1 ≤ E(C) ≤ d/2+1, chúng ta nói rằng bán
kính phần lõi là lớn nhất nếu ρ=d/2+1. Bán kính phần lõi là lớn nhất có nghĩa
rằng nhu cầu lưu trữ có thể giảm bớt một thừa số là d/2+1.
Chúng ta có thể đặt một ví dụ để trình bày kết quả sau:
Bổ đề 1. Cho các khối dữ liệu với các chiều n1, . . . ,nd với các block của các
chiều là m1, . . . ,md, Nếu (d/2+1) chia cho nk và

nk
chia nk và mk cho một vài k ∈
d

{1, …, d}, khi đó bán kính của phần lõi là lớn nhất.
3. Độ phức tạp của dạng chuẩn tối ưu

Xem ra đó là điều khó tính toán để tìm ra một dạng chuẩn tốt nhất π ∈ Ξ. Cho một
khối C và cho các chiều của block. Lúc này, khi sự giới hạn thích hợp bị áp đặt,
một dạng chuẩn tối nhất có thể được ước tính trong thời gian đa thức. Đoạn này là
nỗi bậc vào hiệu ứng của kích thước block trong sự khó làm.
3.1. Các trường hợp đặc biệt dễ vận dụng: các vấn đề của chúng ta có thể
được giải quyết trong thời gian đa thức, nếu sự hạn chế xấu nhất được thay thế
trong số lượng các chiều hoặc kích thước block. Ví dụ, đó là điều không đáng kể để
23


Tiểu luận nhóm 5 - Khoa học máy tính 2007

tìm một chuẩn tốt nhất trong 1-d. Trường hợp không đáng kể khác xuất hiện khi
các block có kích thước là 1, khi sự chuẩn hoá không ảnh hưởng đến giá trị lưu trữ.
Do vậy, một vài sự chuẩn hoá là “tối ưu nhất”. Trạng thái được nhiều chú ý nhất
cho block có kích thước bằng 2; nghĩa là, với m i = 2 cho 1 ≤ i ≤ d và mj = 1 cho 1
≤ j ≤ d với i ≠ j. Một sự chuẩn hoá tối nhất có thể tìm thấy bằng thời gian đa
thức, dựa trên những kỹ thuật so khớp trọng lượng (weighted-matching) mô tả phần
tiếp theo.
3.1.1. Sử dụng Weighted Matching. Cho một biểu đồ không có chỉ dẫn trọng
lượng, vấn đề weighted-matching hỏi cho một tập cạnh có tổng trọng lượng là lớn
nhất, do vậy không có hai cạnh chia nhau điểm cuối. Nếu biểu đồ là hoàn tất, thậm
chí có số đỉnh và chỉ có các trọng lượng rỏ ràng, khi đó số lớn nhất thoả các cặp
đỉnh thực sự .
Vấn đề cho chúng ta quan sát rằng tác động của sự chuẩn hoá trong chiều k,
cho 1 ≤ k ≤ d, tương đương với việc bố trí lại sắp xếp n k lát cắt C vk tại nơi mà 1 ≤ v
≤ nk . Trong trường hợp của chúng ta sử dụng một block kích thước 2 cho chiều k.
vì thế, chúng ta chọn hai lát cắt C vk và C vk' đến đôi đầu tiên của các lát cắt, chúng ta
sẽ có hình thể lớp tầng đầu tiên của các block và đã lưu trữ tất cả các cell được cấp
phát thuộc về hai lát cắt. Tổng giá trị lưu trữ của khối được cộng lại theo cách đó,

trên tất cả các đôi của lát cắt, giá trị từng đôi của hai lát cắt được xếp theo đôi. Chú
ý rằng, các sắp xếp trong các đôi mà được chọn là không thích hợp, chỉ thoả mãn
trên thực tế của các đôi vào vấn đề từng đôi. Chiếu cố đến các vector Boolean b=
k
k
C ^v và b’ = C ^v ' . Nếu cả hai bi và b’i là đúng, khi đó block thứ i trong đôi là đầy
đủ hoàn toàn và giá trị 2 được lưu trữ, tương tự, nếu chính xác một trong b i và b’i là
đúng, khi đó block đầy một nữa. Dưới mô hình của chúng ta, một block đầy một
nữa cũng mang giá trị 2, nhưng một block rổng mang giá trị 0. Do đó, dựa theo hai
lát cắt, chúng ta có thể tính được giá trị các đôi chúng bằng tổng cộng giá trị lưu trữ
của tất cả các block. Nếu chúng ta nhận biết mỗi lát cắt với một đỉnh của một biểu
đồ trọng lượng đầy đủ, rất dễ để tạo thành một trường hợp của cân bằng (Xem ví dụ
hình 2). May thay, thuật toán bậc ba thời gian tòn tại trong cân bằng, và n k thường
đủ nhỏ mà thời gian chạy bậc ba không quá mức. Đáng tiếc, phép tính trọng lượng
2

cạnh Θ ( nk ) là cao, mỗi lần phải đòi hỏi hai vector Boolean lớn với

1 d
Π i =1 ni yếu tố
nk

cho tổng thời gian tính cạnh của Θ(nkΠ i=d 1ni ) . Cho toàn block bóng mờ, thuật toán
này không tối ưu hơn nữa nhưng tuy nhiên cung cấp một đều cơ bản cho một
phương pháp nhạy bén.

24


Tiểu luận nhóm 5 - Khoa học máy tính 2007


Hình 2: Biểu đồ một vấn đề của sự chuẩn hoá để so khớp trọng lượng bài
toán trong đồ thị. Các dòng (rows) được đánh nhãn và chúng ta cố gắng sắp xếp lại
chúng, đưa block chiều 2x1 (với 2 là chiều đứng) Trong ví dụ này, giải pháp tối ưu
bao gồm A, B, C, D và C, D, B, A.
   k −1  

Bổ đề 4.1. Cho block kích thước 1x...x1x 2 x1x...x1 , dạng chuẩn tốt nhất được
tính O(nk ×(n1×n2×. . .×nd)+ nk3 thời gian.
Bổ đề 4.2. Đó là NP-cứng (NP-hard ) để tìm một sự chuẩn hoá tốt nhất, nếu
1 x 3 block được sử dụng.
Chúng ta dự đoạn rằng NP-cứng để tìm sự chuẩn hoá tốt nhất mỗi khi cố
định tại một vài kích thước lớn hơn 2.
4. Chuẩn sắp xếp lát cắt cho các khối độc lập tương đối (Quasiindependent)
Trên thực tiển, dù có hay không một cell được cấp phát có thể phụ thuộc vào
giá trị các thuộc tính tương ứng độc lập với mỗi cell khác. Ví dụ nếu một kho hàng
được đóng trong ngày thứ 7 cả năm, một lát cắt tương ứng “Ngày cuối tuần = ngày
thứ 7” sẽ chi riêng từng thuộc tính khác. Trong trường hợp như vậy, chỉ cần nói
rằng việc chuẩn hoá khối dữ liệu chủ sử dụng một phương pháp thông thạo tượng
trưng. Hơn nữa, như chúng ta thấy, một phần có thể dễ dàng tính toán mức độ độc
lập của các thuộc tính, do đó quyết định được hay không khả năng thuật toán tốn
kém hơn so với nhu cầu cần sử dụng. Chúng ta bắt đầu với một trong các lớp đơn
giản nhất của thuật toán chuẩn hoá, và chúng ta sẽ thừa nhận khối dữ liệu n-quy tắc
cho n ≥ 3. Chúng ta nói rằng một đoạn giá trị x1, . . . ,xn được sắp xếp tăng dần

(theo thứ tự, giảm dần) nếu x1 ≤ xi+1 (theo thứ tự, x1 ≥ xi+1 ) với i ∈ {1,…..n-1}

Thuật toán 1. (Chuẩn sắp xếp lát cắt) Cho một khối C có n-quy tắc, khi đó
các lát cắt có S = nd-1 cell. Cho một hàm cố định g: {true, false} S  R, khi đó với
j

j
mỗi thuộc tính j, chúng ta tính được thứ tự fv = g (C ^ v ) cho tất cả các giá trị thuộc
tính v = 1, …, n. Đặt γj là một phép hoán vị như γj ( fj ) để sắp xếp tăng dần và cả
giảm dần, khi đó một chuẩn sắp xếp lát cắt được đưa ra bởi (γj ,…, γd ).
25


×