TRUY VẤN CÁC ĐỐI TƯỢNG KHÔNG GIAN

Một phần của tài liệu XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG BẰNG NGÔN NGỮ C++ (Trang 39)

IV.1. Các loại câu truy vấn thường dùng trong dữ liệu không gian.

Đối với dữ liệu không gian nói chung, TIN nói riêng, ta thường thực hiện hai loại truy vấn phỗ biến : truy vấn theo vùng – region query, và truy vấn các đối tượng lân cận – neighbour query.

• Truy vấn theo vùng trả về các đối tượng không gian có vùng bao nhỏ nhất giao với vùng do người dùng đưa vào.

• Truy vấn lân cận trả về các đối tượng lân cận với một đối tượng xác định một khoảng cách cho trước.

Việc truy vấn dữ liệu là một chức năng cơ bản của một DBMS, do đó, ta hãy xem xét cách thức thực hiện truy vấn của Versant và mức độ hỗ trợ của nó đối với các yêu cầu truy vấn trên dữ liệu không gian.

IV.2. Truy vấn trong Versant.

Do cơ sở lý thuyết của truy vấn trên ODB là còn khá mới so với RDB, nên các câu truy vấn được hỗ trợ bởi Versant là còn hạn chế. Chỉ những câu truy vấn tìm kiếm – Search query – là được hỗ trợ trực tiếp từ DBMS.

a.Search query.

Truy vấn tìm kiếm, search query, là xem xét một nhóm đối tượng và trả về những đối tượng thỏa điều kiện dò tìm.

Trong Versant, điều kiện dò tìm được gọi là perdicate, mỗi predicate là kết hợp bởi một hay nhiều predicate term. Mỗi predicate term bao gồm ba thành phần: thuộc tính cần kiểm tra, phép toán so sánh và giá trị khóa. Các predicate term kết hợp với các phép logic toán and, or, not tạo thành predicate.

Predicate ::= PredicateTerm [ AND|OR PredicateTerm ]*

PerdicateTerm ::=[NOT] AttributeName COMPARISION_OPERATOR KeyValue

Trong đó:

AttributeName: tên thuộc tính cần so sánh của đối tượng. Tên thuộc tính phải

được đặt theo đúng quy cách. Thuộc tính phải thuộc một trong các kiểu sau: kiểu vô hướng; kiểu mảng tĩnh các phần tử 1 byte; Vstr của kiểu 1 bytes; các

Link, LinkVstr và mảng các Link; chuỗi kiểu PString hoặc VString; các kiểu lưu trữ thời gian: VDate, VTime, o_date, o_time, o_timestamp, o_interval.

COMPARISION_OPERATOR: là các phép toán so sánh. Có 4 loại phép toán so sánh: quan hệ (=,>=,…), so sánh chuỗi (O_MATCH, O_NOT_MATCH), kiểm tra đối tượng có thuộc lớp hay không (O_ISA_EXACT, O_NOT_ISA_ EXACT) và các phép toán tập hợp.

KeyValue: là giá trị cho trước dùng để so sánh với thuộc tính của các đối tượng.

Như vậy, ta có thể hiện thực câu truy vấn theo vùng bằng predicate như sau:

(xmin<= x)and(x <= xmax)and(ymin<= y)and(y <= ymax)and(zmin<= z)and(z <= zmax). Do hạn chế của mệnh đề truy vấn chỉ lượng giá giá trị thuộc tính với một giá trị khác, nên ta không thể thiết lập biểu thức truy vấn lân cận theo cơ chế trên. Vì vậy, để có thể

truy vấn các đối tượng lân cận một đối tượng, ta phải viết giải thuật hiện thực ở cấp chương trình.

b.Ch mc cho Search query.

Việc truy tìm các đối tượng thỏa mệnh đề truy vấn theo vùng sẽ trở nên rất nặng nề do, DBMS phải tiến hành lượng giá sáu mệnh đề logic, sau đó phải giao các kết quả trung gian với nhau mới đưa ra được kết quả cuối cùng. Do đó, để tăng hiệu suất tìm kiếm ta phải giảm bớt số lượng đối tượng lượng giá mà không ảnh hưởng đến kết quả. Để làm

được điều này, Versant cung cấp khả năng tạo chỉ mục trên các thuộc tính.

Chỉ mục chỉ áp dụng trên một thuộc tính đơn của một lớp và ảnh hưởng đến tất cả các

đối tượng của lớp này. Nó là một danh sách của các cặp gồm giá trị khóa và định danh của đối tượng. Chỉ mục không có tên và được quản lý tựđộng, nó có thể là duy nhất hoặc không duy nhất. Tuy nhiên, một chỉ mục chỉ có tác dụng đến một lớp duy nhất, nó không có tính kế thừa. Vì vậy, để chỉ mục cho một thuộc tính của lớp cha có tác dụng trên các lớp con, ta phải thiết lập chỉ mục tường minh cho các lớp con này. Mỗi thuộc tính có thể có hai loại chỉ mục: chỉ mục B-Tree và chỉ mục bảng băm – hash table. Tùy vào các câu truy vấn dựđịnh trên thuộc tính đế có thểđặt các loại chỉ

mục phù hợp.

• Chỉ mục B-Tree: thường phù hợp cho các câu query theo đoạn. Như vậy, trong câu truy vấn theo vùng, các thuộc tính tọa độ của đối tượng nên được đặt chỉ

mục B-Tree.

• Chỉ mục bảng băm: thường phù hợp với phép so sách trùng các chuỗi.

c.Ch mc cho d liu đa chiu.

Ta thấy, đối với các đối tượng không gian dựa vào cơ chế truy vấn của Versant chỉ

giải quyết được một phần nhỏ các yêu cầu truy vấn do cơ chế chỉ mục của Versant là chỉ mục của thuộc tính đơn. Vì vậy, ta cần xây dựng một cấu trúc chỉ mục khác phù hợp với dữ liệu đa chiều.

Lun văn tt nghip GVHH: Nguyn Hu Hi.

IV.3. Chỉ mục cho đối tượng đa chiều - họ cây R.

IV.3.1.Gii thiu.

Trong nhiều ứng dụng, các DBMS (Database Management System) không quản lý hiệu quả dữ liệu nhiều chiều như: hình hộp, đa giác, điểm trong không gian 3D… Do

đó, việc tạo chỉ mục (indexing) cho dữ liệu nhiều chiều ngày càng trở nên rất quan trọng.

Bởi vì DBMS có thể dùng để lưu trữ dữ liệu một chiều như: số nguyên, số thực, chuỗi ký tự… Từđó, một yêu cầu cần đặt ra là phát triển các DBMS để lưu trữ dữ liệu nhiều chiều. Nghĩa là, DBMS có thể dùng để lưu trữ và truy xuất bất kỳ dữ liệu, thông tin phức tạp nào. Tuy nhiên, trên thực tế, các mô hình dữ liệu và ngôn ngữ truy vấn chưa hỗ trợ một cách tích cực cho việc thao tác trên dữ liệu quá phức tạp.

Để việc truy vấn các loại dữ liệu phức tạp, thiết yếu cần phải dùng các kỹ thuật tạo chỉ

mục phù hợp và cung cấp cách truy xuất hiệu quảđối với dữ liệu nhiều chiều. Sau đây, tập luận văn này xin giới thiệu một vài cấu trúc tạo chỉ mục nhằm tăng hiệu xuất cho việc truy vấn trên dữ liệu nhiều chiều. Cụ thể phục vụ cho luận văn này là dữ liệu không gian 3D.

IV.3.2.H cây R-Tree.

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. Nguyên 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:

Lun văn tt nghip GVHH: Nguyn Hu Hi. ( ) ⎭ ⎬ ⎫ ⎩ ⎨ ⎧ ∈ ⎭ ⎬ ⎫ ⎩ ⎨ ⎧ ∩ ∈ = = ≠ = 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 quá 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

Một phần của tài liệu XÂY DỰNG THƯ VIỆN PHẦN MỀM HỖ TRỢ HỆ THỐNG THÔNG TIN ĐNA LÝ GIS 3D DỰA TRÊN CƠ SỞ DỮ LIỆU HƯỚNG ĐỐI TƯỢNG BẰNG NGÔN NGỮ C++ (Trang 39)

Tải bản đầy đủ (PDF)

(117 trang)