Lý do chính cho việc sử dụng cấu trúc tạo chỉ mục theo cây R-Tree là: chúng ta cần tạo chỉ mục không chỉ cho dữ liệu dạng điểm trong khơng gian mà cịn cho các dữ liệu khơng gian mở rộng khác như: đa giác, hình hộp. Thực tế cho thấy cấu trúc tạo chỉ mục dựa trên cây R-Tree thích hợp cho các kiểu dữ liệu này.
Nhiều nghiên cứu trước đây trong việc tạo chỉ mục cho dữ liệu nhiều chiều đã được thực hiện và đã thu được nhiều kết quả quan trọng, chủ yếu tập trung vào hai giải pháp khác nhau:
Giải pháp thứ nhất: dựa trên việc khảo sát theo cơ sở là dữ liệu khơng gian nhiều
chiều có mối quan hệ và có tính phân vùng cao. Vì thế, dữ liệu chỉ thuộc vào không gian con của không gian nhiều chiều (thường là không gian 3D). Các giải thuật như giải thuật ánh xạ nhanh (fast map algorithm), giải thuật theo phương pháp tỉ lệ trong không gian nhiều chiều đã có những thành tựu giúp cho việc chuyển các đối tượng dữ liệu nhiều chiều xuống các khơng gian ít chiều hơn để có thể tạo chỉ mục một cách
hiệu quả dựa trên các kỹ thuật tạo chỉ mục cho dữ liệu nhiều chiều truyền thống. Một ví dụ cho giải pháp này là tạo chỉ mục theo cây SS-Tree, đây cũng là một cây dựa theo cấu trúc của cây R-Tree. Cây SS-Tree sử dụng vùng biên bao nhỏ nhất dưới dạng Ellipse (Ellipsoid Minimal Boundary Region) cho các node trong cây.
Giải pháp thứ hai: dựa trên việc khảo sát theo cơ sở là trong hầu hết các tập dữ liệu
nhiều chiều thì số lượng đối tượng dữ liệu có số chiều nhỏ (2 hoặc 3 chiều) là dữ liệu chính. Một ví dụ cho giải pháp này là tạo chỉ mục theo cây TV-Tree. Cây TV-Tree sắp xếp các node theo cách chỉ có các thơng tin cần thiết để phân biệt giữa các đối tượng dữ liệu mới được lưu trữ trong các node. Điều này giúp cho việc cải thiện hiệu suất
truy vấn dữ liệu tốt hơn.
Đối với các tập dữ liệu nhiều chiều, việc làm giảm số chiều xuống là một việc làm cần
thiết và cực kỳ quan trọng. Việc làm giảm số chiều được thực hiện bất cứ khi nào có thể để tăng hiệu suất truy vấn dữ liệu. Trong thực tế, có rất nhiều trường hợp sau khi
đã làm giảm số chiều của tập dữ liệu ban đầu thì tập dữ liệu kết quả vẫn cịn có số
chiều khá lớn. Số lượng các chiều cịn lại, tất cả đều có mối quan hệ chặt chẽ lẫn nhau, nghĩa là việc sử dụng bất kỳ giải pháp tạo chỉ mục nào cũng cần phải đảm bảo cho
việc truy vấn tốt trên tất cả các chiều này. Thật sự không may là các cấu trúc tạo chỉ mục cho dữ liệu không gian theo cây R-Tree không hỗ trợ phù hợp cho việc tạo chỉ mục đối với dữ liệu có số chiều lớn hơn năm. Thực tế chứng minh rằng hiệu suất truy vấn của cây R-Tree giảm xuống nhanh chóng khi số chiều tăng cao, do sự trùng lắp (overlap) giữa các MBR (Minimal Boundary Rectangle) trong các node của cây R-
Tree. Cụ thể là sự trùng lắp của các MBR nhanh chóng tăng lên 90% khi số chiều tăng
đến năm. Mức độ trùng lắp giữa các MBR cao không chỉ là vấn đề của cấu trúc chỉ
mục theo cây R-Tree mà còn là vấn đề chung trong các cấu trúc tạo chỉ mục cho dữ liệu không gian nhiều chiều.
Từ đó chúng cần một cấu trúc tạo chỉ mục nhằm cải tiến sao cho mức độ trùng lắp của các MBR ở mức nhỏ nhất có thể. Cây X-Tree là một giải pháp phù hợp.
Ý tưởng chính của cây X-Tree để tránh sự trùng lắp của các MBR giữa các node với nhau là dùng một cấu trúc mới cho các node nhằm để lưu trữ tối ưu cho các đối tượng dữ liệu trong không gian nhiều chiều. Cây X-Tree cố gắng tránh tách node (split) khi mà việc tách node dẫn đến kết quả cho mức độ trùng lắp giữa các MBR quá cao. Thay vì cho phép tiến hành tách node dẫn đến mức độ trùng lắp cao thì các node sẽ tự mở
rộng kích thước (capacity) của mình lên để trở thành supernode. Khi supernode trở nên lớn dần thì việc duyệt tuyến tính trên supernode trở thành một vấn đề cần phải giải quyết.
Ví dụ dữ liệu có số chiều lớn hơn hai thì cấu trúc tạo chỉ mục theo cây X-Tree cho phép truy vấn nhanh hơn cây R-Tree 400 lần và nhanh hơn cây TV-Tree 12 lần (theo giáo sư Stefan Berchtold của Đại Học Munich).
Sự trùng lắp:
Khi đánh giá hiệu suất của cây R-Tree thì khi số chiều dữ liệu tăng lên thì hiệu suất truy vấn dữ liệu giảm xuống nhanh chóng. Ngun nhân chính dẫn đến tình trạng này là khi số chiều tăng thì mức độ trùng lắp giữa các MBR cũng tăng lên nhiều lần. Sự trùng lắp giữa các node tác động trực tiếp đến hiệu suất truy vấn bởi vì ngay cả đối với các truy vấn dữ liệu dạnng điểm mà phải duyệt qua nhiều đường dẫn mới đến được kết quả.
Định nghĩa sự trùng lắp:
Sự trùng lắp là phần trăm thể tích chung của các MBR của các node. Nếu cây R-Tree
có N node ứng với N MBR {B1, B2…BN} thì mức độ trùng lắp được định nghĩa chính quy như sau:
( ) U U N i i N j i j i j i B B B Overlap 1 , 1 , = ≠ = ∩ = ||A|| : là thể tích của A.
Theo định nghĩa này hiệu suất truy vấn chỉ tốt khi các đối tượng dữ liệu phân bố với
mật độ đều. Trong các trường hợp đặc biệt các đối tượng dữ liệu thường phân bố
khơng đều thì hiệu suất truy vấn không cao.
Sự trùng lắp theo trọng số là phần trăm các đối tượng dữ liệu rơi vào vùng không gian trùng lắp của các MBR. Nếu cây R-Tree có N node ứng với N MBR {B1, B2…BN} thì mức độ trùng lắp được định nghĩa chính quy như sau:
Luận văn tốt nghiệp GVHH: Nguyễn Hữu Hải. ( ) ⎭ ⎬ ⎫ ⎩ ⎨ ⎧ ∈ ⎭ ⎬ ⎫ ⎩ ⎨ ⎧ ∩ ∈ = = ≠ = U U N i i N j i j i j i B p p B B p p erlap WeightedOv 1 , 1 , | |
|A|: là số lượng dữ liệu chứa trong A
Ở đây chúng ta sẽ quan tâm đến định nghĩa Overlap là phần không gian được bao bởi
nhiều hơn một MBR (theo định nghĩa a). Số lượng các MBR có overlap trong một vùng khơng gian cũng đóng một vai trị quan trọng. Vì vậy, multi_overlap được định nghĩa là tổng thể tích của vùng khơng gian trùng lắp nhân với số lượng MBR có liên quan đến thể tích của vùng khơng gian này.
X-Tree (eXtended node Tree) là một cấu trúc tạo chỉ mục mới hỗ trợ một cách hiệu
quả trong việc xử lý truy vấn dữ liệu nhiều chiều. Mục tiêu của X-Tree là không những hỗ trợ dữ liệu dạng điểm mà cịn hỗ trợ cho nhiều dạng dữ liệu khơng gian mở rộng hơn như tam giác, đa giác, hình hộp. Cũng vì vậy mà X-Tree sẽ dùng khái niệm trùng lắp (overlap region). Như đã đề cập ở phần trên, chúng ta cần phải tránh sự trùng lắp trong các node để tăng hiệu suất truy vấn khi tạo chỉ mục cho dữ liệu nhiều chiều. Vì thế cây X-Tree sẽ khơng cho phép tách node để tránh có quá nhiều sự trùng lắp giữa các MBR bất cứ khi nào có thể. Mặt khác, cây X-Tree cịn sử dụng một cấu trúc dữ liệu mới là supernode. Supernode là một node có khả năng mở rộng dung lượng của mình một cách tuỳ ý. Việc thêm vào supernode này thật sự phù hợp với dữ liệu nhiều chiều. Cấu trúc tổng quát của cây X-Tree được biểu diễn như hình sau:
Hình 2-4. Cấu trúc của X-Tree.
Datanode của X-Tree bao gồm các MBR chứa các đối tượng dữ liệu thật sự và các con
trỏ chỉ đến các đối tượng dữ liệu đó.
Dirnode của X-Tree bao gồm các MBR chứa các node con của nó và các con trỏ chỉ
đến các node con đó. Các Dirnode có một dung lượng giới hạn tối đa (PAGE-
CAPACITY).
Supernode của X-Tree là các Dirnode biến thể thành khi nó mở rộng kích thước lớn
hơn dung lượng giới hạn tối đa. Mục tiêu chính của Supernode là để tránh việc tách node dẫn đến các trường hợp tạo thành các node mới có mức độ trùng lắp quá cao gây giảm hiệu suất truy vấn dữ liệu.
Số lượng và kích thước của Supernode sẽ tăng khi số chiều của dữ liệu tăng. Do đó chiều cao của cây X-Tree tương ứng sẽ giảm, dẫn đến số lượng node cần phải duyệt trong quá trình truy vấn cũng sẽ giảm theo.
Supernode chỉ được tạo ra trong quá trình chèn (Insert) dữ liệu khi khơng cịn khả
năng nào để tránh sự trùng lắp. Trong một số trường hợp việc tạo ra Supernode hoặc
tăng kích thước của Supernode có thể tránh được bằng cách chọn ra một cách để tách node mà có mức độ overlap nhỏ nhất (overlap_minimal_split). Để xác định nhanh
được overlap_minimal_split thì mỗi Dirnode cần chứa thêm thông tin gọi là Split-
history.
Giải thuật quan trọng nhất của cây X-Tree là giải thuật chèn dữ liệu. Giải thuật chèn dữ liệu sẽ quyết định cấu trúc của cây X-Tree. Ý tưởng chính của giải thuật chèn là
tránh phải tách node làm phát sinh overlap.
Giải thuật Insert của cây X-Tree:
Xác định node có MBR phù hợp để chèn đối tượng dữ liệu. Sau đó gọi đệ quy giải
thuật chèn cho node này.
Nếu khơng có sự tách node xảy ra trong q trình đệ quy thì chỉ có kích thước của
MBR tương ứng được cập nhật.
Tuy nhiên, nếu có sự tách node xảy ra, việc thêm một MBR vào node hiện tại có thể dẫn đến quá tải dung lượng cho phép của node đó. Trong trường hợp này, node hiện tại sẽ gọi giải thuật tách node (Split algorithm).
Giải thuật tách node của cây X-Tree:
Cố gắng tìm cách tách node theo mơ hình Topo của dữ liệu hoặc theo đặc tính của dạng MBR.
Nếu sự tách node dựa trên mơ hình Topo của dữ liệu hoặc theo đặc tính của dạng
MBR cho kết quả.