Cập nhật và các thao tác khác

Một phần của tài liệu phát triển hệ thống hỗ trợ tìm đường trên các thiết bị di động có gps (Trang 31 - 33)

CHƯƠNG 3 XỬ LÝ TRUY VẤN KHÔNG GIAN

3.1. Cấu trúc R-Tree index

3.1.3. Cập nhật và các thao tác khác

Nếu một tuple dữ liệu được cập nhật thì hình chử nhật bao của nó củng bị thay đổi, bản ghi index của nó cũng phải được xóa, cập nhật, và sau đó chèn lại, do đó nó sẽ phải tìm một vị trí phù hợp của nó trên cây.

Những loại tìm kiếm khác với tìm kiếm ở trên, ví dụ: để tìm tât cả các đối tượng dữ liệu chứa hoàn tồn một diện tích tìm kiếm, hoặc tất cả các đối tượng chứa 1 vùng tìm kiếm, có thể được thực hiện bởi sự biến đổi của các thuật tốn đã đưa ra. Tìm kiếm một entry có ID đã biết được u cầu bởi thuật tốn xóa và được thực hiện bởi thuật toán FindLeaf. Những biến thể của xóa miền, trong những index entries của tất cả các đối tượng dữ liệu trong 1 vùng đăc biệt được xóa, cũng được hổ trợ bởi R-tree.

Chia Node

Để thêm 1 entry mới vào 1 node đã đầy chứa M entries, cần phải chia tập M+1 entries thành 2 node. Việc chia phải được thực hiện sao cho các tìm kiếm tiếp theo khả năng phải thăm cả 2 node càng thấp thì càng tốt. Vì một node có được chọn để để thăm hay khơng phụ thuộc vào hình chử nhật nó bao phủ có bao vùng tìm kiếm hay khơng, do đó để tối ưu, tổng diện tích của cả 2 hình hình chử nhật

25

bao phủ phải là nhỏ nhất. Hình 2 minh họa trường hợp này. Diện tích của hình chử nhật trong trường hợp “bad split” lớn hơn nhiều trong trường hợp “good split”.

Hình 7 – Chia node

Khi thực hiện thuật toán ChooseLeaf cũng xảy ra vấn đề tương tự. Do đó thuật tốn để phân chia tập M+1 entries thành 2 nhóm có ảnh hưởng rất lớn đến hiệu năng của R-tree và cần được tối ưu.

Một số thuật tốn phân chia:

Thuật tốn tồn diện

Cách dễ nhất để tìm một node bị chia có diện tích nhỏ nhất là sinh ra tất cả các nhóm có thể và chọn nhóm tốt nhất. Tuy nhiên, với cách này số lượng các nhóm phải kiểm tra là 2M-1 mà trong R-tree giá trị hợp lý của M là 50, do đó số lượng cách phân chia có thể là rất lớn.

Thuật tốn Quadratic-Cost

Thuật tốn này cố gắng tìm một phép phân chia tối ưu, nhưng khơng đảm bảo là tối ưu nhất. Chi phí của thuật tốn là dạng bậc 2 của M và tuyến tính theo số các chiều. Thuật toán lấy 2 trong số M+1 entries làm 2 thành phần đầu tiên của 2 group mới, 2 entries sẽ được chọn sao cho nếu chúng cùng nằm trong một nhóm thì sẽ gây nhiều lãng phí nhất đến diện tích hình chử nhật bao của chúng. Có nghĩa là diện tích của hình chử nhật bao cả 2 entries, trừ đi diện tích của 2 entries, là lớn nhất. Những entries còn lại sẽ được phân vào từng nhóm từng cái một. Ở mỗi bước, việc thêm một entry vào một nhóm được chọn sao cho diện tích mở rộng là nhỏ nhất.

Thuật toán Linear-Cost

Thuật tốn này tuyến tính theo M và số chiều. Liner Split cũng giống như Quadratic Split nhưng phương pháp lựa chọn 2 entries đầu tiên và các entries thêm vào sau đó khác so với Quadratic.

26

R*- tree

R*-tree là một biến thể của R-trees được sử dụng để đánh chỉ số các dữ liệu không gian. R*-tree cung cấp thuật tốn chèn hiệu quả hơn của R-tree. Nó sử dụng cơ chế forced reinsert để tổ chức lại cấu trúc của cây đánh chỉ số cho phù hợp. Cơ chế này cho phép cấu trúc có thể thích nghi với việc xuất bản dữ liệu và không bị ảnh hưởng bởi các lần chèn trước. Các thử nghiệm cho thấy cấu trúc R*-tree có hiệu năng cao hơn so với cấu trúc R-tree. R*- tree được đề xuất bởi Norbert Beckmann, Hans-Peetr Kriegel, Ralf Schneider, và Bernhard Seeger vào năm 1990.

GiST

GiST (Generalized Search Trees) indexes chia dữ liệu thành "things to one

side", "things which overlap", "things which are inside" và có thể được sử dụng trên một tập rộng các loại dữ liệu, bao gồm cả dữ liệu GIS.

Một phần của tài liệu phát triển hệ thống hỗ trợ tìm đường trên các thiết bị di động có gps (Trang 31 - 33)

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

(58 trang)