Lập chỉ mục quá khứ tiến trình không-thời gian

Một phần của tài liệu Phương pháp tổ chức dữ liệu cho các đối tượng chuyển động hỗ trợ hệ thống VNtracking (Trang 34)

Dữ liệu lịch sử của đối tượng chuyển động là rất hữu ích trong các ứng dụng như lập kế hoạch và quản lý tài nguyên. Tuy nhiên trong cơ sở như vậy không gian để lưu trữ thông tin vị trí của đối tượng là rất lớn khi đối tượng chuyển động. Do đó vấn đề quyết định là dữ liệu lịch sử nào là tốt nhất và lưu trữ chúng như thế nào để đạt hiệu quả cao.

Trong phần này sẽ mô tả cấu trúc lập chỉ mục của dữ liệu quá khứ từ các tiến trình không-thời gian. Có thể hiểu đơn giản tiến trình là một quá trình mà đối tượng giữ lại các kích thước và vị trí của nó từ thời điểm nó được chèn vào cơ sở dữ liệu đến thời điểm nó bị được xoá khỏi cơ sở dữ liệu. Sự kết thúc và thay đổi của một tiến trình chỉ đơn giản là các đối tượng được bổ sung và xoá khỏi cơ sở dữ liệu.

x x x x x t t1 t2 t3 t4 t5 S(t1) S(t2) S(t3) S(t4) S(t5) y y y y y o2 o2 o2 o2 o3 o3 o3 o3 o1 o1 o1 o1 o1 Query region Q

Hình 2.5. Mô tả tổng quan một tiến trình không-thời gian

Hình 2.5 mô tả một trường hợp thể hiện sự di chuyển của các đối tượng và sự thay đổi như thu nhỏ/mở rộng của các đối tượng trong những điểm thời gian khác nhau. Tuy nhiên trong trường hợp tổng quát sự thay đổi này không xác định được rõ ràng như sự chèn/xóa đối tượng. Xem xét một ví dụ của 1 đối tượng di chuyển từ vị trí A tại thời điểm ti đến một vị trí C trong thời gian kế tiếp ti+1. Cách đơn giản nhất để mô tả cho hành động này là xoá đối tượng từ vị trí A tại thời điểm t

Điều này nó tạo ra 02 bản ghi (record) cho đối tượng: một bản ghi để lưu vị trí A với khoảng thời gian tồn tại (lifetime) kết thúc tại ti+1 và một bản ghi để lưu vị trí C với khoảng thời gian tồn tại bắt đầu tại ti+1. Thời gian tồn tại của đối tượng đã được chia nhỏ thành 2 bản ghi với khoảng thời gian liên tiếp và không chồng chéo. Tuy nhiên, cách tiếp cận này là không hiệu quả nếu đối tượng liên tục thay đổi vị trí hay kích thước của nó theo thời gian dẫn đến việc nó sẽ phải tạo ra số lượng lớn các bản ghi chèn vào cơ sở dữ liệu, dẫn đến không gian lưu trữ lớn.

Có một cách tốt hơn để giải quyết cho việc này là chỉ lưu trữ các hàm mô tả của kích thước hoặc vị trí của các đối tượng di chuyển. Hàm mô tả được sử dụng như các hàm tuyến tính theo thời gian vì các đối tượng có thể thay đổi hay được thu nhỏ/mở rộng theo thời gian. Các bản ghi mới được chèn vào chỉ khi đối tượng có sự thay đổi vị trí hay kích thước của nó. Các bản ghi mới sẽ duy trì thời gian tồn tại của đối tượng dưới một hàm chuyển động/kích thước mới. Trong trường hợp tổng quát số lượng N chèn vào tương ứng với: (1) đối tượng chèn thường xuyên và (2) đối tượng chèn vào khi tham số của hàm thay đổi.

2.2.1.1. Phƣơng pháp tiếp cận đơn giản

Một phương pháp tiếp cận đơn giản cho việc lập chỉ mục dữ liệu không-thời gian là coi trục thời gian như là một chiều giống như những chiều khác của không gian.

Sau đó mỗi đối tượng có thể lưu trữ như một hình hộp chữ nhật 3 chiều trong đó độ cao của hình hộp chữ nhật chính là khoảng thời gian tồn tại của đối tượng. Các phương pháp truy nhập không gian truyền thống SAM (R-tree [2], Quad-tree [8]) sẽ sử dụng không gian d+1 chiều, trong đó d là số chiều của không gian tham chiếu và bổ sung thêm chiều của thời gian.

Theo cách tiếp cận này, phương pháp 3DR-tree [11] sử dụng trục thời gian như là một chiều giống như những chiều khác của không gian. Tại mốc thời gian ti các đối tượng không gian chỉ đơn giản là được bổ sung vào hay xoá đi. Khi một đối tượng di chuyển từ vị trí này sang vị trí khác một MBR được tạo ra để mô tả những thay đổi của đối tượng. MBR này chứa kích thước không gian và thời gian tồn tại của đối tượng. Đối tượng sẽ được mô tả như một hình hộp 3 chiều, với chiều thời gian chính là thời gian tồn tại của đối tượng như hình 2.6. x t t1 t t3 2 y o2 o3 Query region Q o1 t4 tnow

Hình 2.6. Hình hộp giới hạn với chiều thời gian

Hình 2.7 minh hoạ: (1) một đối tượng chuyển động được mô tả bởi nhiều hình hộp, mỗi hình hộp tương ứng với một phiên bản (version) khác nhau của đối tượng và (2) tương ứng với cấu trúc 3DR-tree. Việc tìm kiếm các đối tượng trong phạm vi không thời gian giới hạn (tìm tất cả các đối tượng mà không bị chồng chéo nhau trong cả 2 chiều không gian và thời gian) được minh hoạ và nó là loại truy vấn 3D điển hình trong cấu trúc R-tree.

Hình 2.7. (1) Kiểu hình hộp (2) 3DR-tree

Việc sắp xếp các chỉ mục chỉ bao gồm: 01 chỉ mục không gian (3D) để đặt vị trí đối tượng trong hệ toạ độ không gian và thời gian (thời gian là một trục giống như chiều khác của không gian). Vì đã có sẵn các công cụ để xử lý dữ liệu đa chiều (ví dụ như R-tree và các mở rộng của nó), do đó người khai thác thực hiện truy vấn và xử lý như đối với việc lập chỉ mục trong không gian 3D.

Ưu điểm của 3D R-tree là: thứ nhất nó rất dễ dàng để thực hiện vì cơ chế lập chỉ mục hoàn toàn dựa trên một khung cấu trúc dữ liệu không gian thống nhất R-tree và thứ hai nó làm tăng hiệu quả không gian vì nó không lưu trữ các đối tượng bị trùng lăp. Vì vậy trong nhiều cuộc thử nghiệm [11] truy vấn theo khoảng thời gian dài là hiệu quả nhất đối với phương pháp này.

Tuy nhiên nhược điểm của nó là thực hiện truy vấn trên khoảng thời gian ngắn và mốc thời gian là hạn chế vì quá trình thực hiện truy vấn mốc thời gian nó không những phụ thuộc vào các dữ liệu còn tồn tại tại mốc thời gian mà còn phụ thuộc vào tất cả các dữ liệu trong quá khứ, trong khi đó 3DR-tree nó không lưu trữ các trạng thái quá khứ. Trong Hình 2.8 minh họa kích thước của hình hộp phụ thuộc vào nhiều đối tượng ở những mốc thời gian khác nhau. 3DR-tree có thể bị chồng chéo do 2 vấn đề: đầu tiên là đối tượng tồn tại trong một thời gian dài được thể hiện bằng hình hộp chữ nhật

x t

dài, thứ 2 khi đối tượng mới được chèn vào ở thời gian t, nó sẽ xoá thời gian cũ vì vậy thời gian tồn tại mới của nó bắt đầu [t, tnow] trong đó tnow là một biến đại diện cho thời gian hiện tại, tnow được lưu trữ như một giá trị rất lớn để thời gian tồn tại của các đối tượng sẽ có một kết thúc chung.

Hình 2.8. Một ví dụ của truy vấn theo mốc thời gian

2.2.1.2. Phƣơng pháp tiếp cận từng phần liên tục

Không giống như các ý tưởng trước đây, ý tưởng này để duy trì các trạng thái quá khứ của R-tree (hoặc các chỉ mục) bằng cách giữ lại các trạng thái hiện tại và trạng thái quá khứ của R-tree. Nó tái tạo lại gốc R-tree từ trạng thái này sang trạng thái khái, nó không quan tâm tới gốc (root) hay các nhánh (branches) đã được thay đổi hay không. Cấu trúc này cho phép cập nhật trạng thái tại thời điểm cuối cùng của nó. Một truy vấn quá khứ tại thời điểm t được chuyển trực tiếp tới trạng thái mà cấu trúc được thực hiện như thể 1 cây R- tree được lập chỉ mục trạng thái S(t).

Phương pháp tiếp cận này được minh hoạ trên hình 2.9, nó cho thấy rằng chỉ một vài nhánh và gốc được thay đổi. Các nhánh con không thay đổi nó cũng được sao chép lại, việc sao chép toàn bộ cây tại mỗi thời điểm là giải pháp không hợp lý.

R1 A B C 1 2 3 4 5 6 7 8 9 R2 A1 B C 1 2 3a 4 5 6 7 8 9 R3 A1 B C1 1 2 3a 4 5 6 7 8a 9

Hình 2.9. Một R-tree ở thời gian T0, T1, T2

Để giải quyết vấn đề này, có 2 phương pháp tiếp cận hiệu quả nhất: (1) tiếp cận chồng chéo HR-tree và (2) tiếp cận đa phiên bản (Multiversion) MVR-tree.

Phƣơng pháp tiếp cận chồng chéo HR-tree

HR-tree [5] sử dụng phương pháp chồng chéo này với giả định rằng các S(t) liên tiếp không có nhiều sự khác nhau. Nó giữ các R-tree như một cây duy nhất. Một mặt, nếu nút nào không thay đổi giữa 2 mốc thời gian thì các nhánh chung sẽ được chia sẻ giữa các cây với nhau để tiết kiệm không gian. Mặt khác, nếu một nhánh có chứa nội dung đối tượng đã thay đổi nó được sao chép hoàn toàn và đánh dấu với một mốc thời gian như trong Hình 2.10.

Phương pháp chồng chéo khắc phục thiếu sót của phương pháp tiếp cận từng phần liên tuc. Nó ngăn chặn việc sao chép các nhánh con từ bất kỳ thời điểm nào, đối với các nhánh và nút gốc khi có sự thay đổi nó sẽ chỉ ra các nút và nhánh mới, vì vậy nó tiết kiệm được không gian lưu trữ. Các thuộc tính thời gian là thời gian thực hiện, khoảng thời gian thực hiện là thời gian một đối tượng đã được lưu trong cơ sở dữ liệu không gian. Do đó một MBR được lưu trữ trong cơ sở dữ liệu không gian kể từ thời điểm được đưa vào cho đến khi nó được cập nhật hay bị xoá đi.

Lập chỉ mục thuật toán HR-tree nó tương tự như của R-tree [2]. Tuy nhiên, nó có một số khác biệt từ R-tree:

Insertion

Đầu tiên nút lá để chèn vào các phần tử mới được tìm thấy bằng cách áp dụng chức năng choosesubtree của R*-tree [3]. Nếu một vài cây trước đó là nút lá, nó sẽ được nhân đôi. Sau đó, các mục mới được chèn và cập nhật vào thư mục gốc của cây hiện tại. Chú ý răng những cây trước mốc thời gian là không bao giờ được sửa đổi.

Deletion

Chỉ có 02 sửa đổi cần thiết trong Guttman’s CondenseTree [2]: (1) trong thuật toán chèn, thuật toán chèn trên phải được sử dụng thay thế gốc của nó và (2) một nút có chứa mục để chèn vào trong tập Q sẽ được xóa bỏ chỉ khi nó là mốc thời gian hiện tại. Mặt khác, một nút sẽ được xóa bỏ nếu nó là trùng lặp. Nếu nó thuộc về trạng thái trước đó của R-tree, nó sẽ không được xóa bỏ.

Ưu điểm của HR-tree là hiệu suất truy vấn mốc thời gian nhanh vì truy vấn mốc thời gian là truy vấn trực tiếp tới R-tree và tìm kiếm thực hiện bên trong cây.

Tuy nhiên, nhược điểm của HR-tree là không gian đòi hỏi lớn, bởi vì phần lớn các bộ dữ liệu HR-tree độc lập với R-tree tại mỗi mốc thời gian. Trong ví dụ Hình 2.11, nếu 1 bản ghi mới e1 của e0 được chèn vào nút D0, nó sẽ tạo ra 2 nút mới: D1 (chứa phần tử của D0 cộng với e1), và E1 (chứa phần tử E0 trừ đi e0). Sự thay đổi sẽ được đưa vào gốc B1 và C1, vì vậy ngay cả khi đối tượng thay đổi vị trí của nó toàn bộ tuyến (path) cần phải nhân đôi. Từ tóm tắt này, nếu đối tượng thường xuyên thay đổi thì kết quả của nó sẽ nhiều bản sao. Hơn thế nữa, hiệu quả suy giảm rất nhanh cho khoảng truy vấn (như là khoảng độ dài tăng lên do bản sao tăng).

Hình 2.11. Chèn vào một phiên bản mới e1 thay thế đối tƣợng e0

Phƣơng pháp tiếp cận đa phiên bản (multiversion)

HR+-tree sử dụng phương pháp tiếp cận này tương tự như phương pháp tiếp cận chồng chéo trong việc giữ nhiều R-tree như là một cây duy nhất. Tuy nhiên HR+-tree (multiversion R-tree) cho phép đưa vào nhiều mốc thời gian để đặt trong cùng một nút. Các nút mới là được tạo chỉ khi nó vượt khỏi giới hạn, mỗi phần tử có khuôn dạng (S, tstart, tend, pointer), trong đó S thể hiện MBR như định nghĩa trong R-tree, tstart (tend) đại diện cho mốc thời gian tại đó các mục tương ứng sẽ được chèn (xoá). Thời gian tồn tại của một mục là khoảng đóng [tstart, tend). Nếu có một mục là không bị xoá cho đến thời gian hiện tại, nó được đánh dấu “*” (một từ với nghĩa là thời gian hiện tại).

Xem Hình 2.12 nếu nút lá E0 là có chỗ (tối đa là 4) chúng có thể chèn e1 (phiên bản khác của e0) tại thời gian T1 trong cùng một nút và cập nhật được đưa vào gốc của thời gian hiện tại.

Hình 2.12. Chèn một phiên bản mới của e1 thay thế đối tƣợng e0.

Thuật toán lập chỉ mục của HR+-tree cũng gần tương tự như R-tree và cập nhật sẽ thực hiện trong phiên bản quá khứ gần nhât của R-tree.

Insertion

Không giống như thường lệ R-tree chọn một mục để chèn vào nút lá, tuy nhiên lựa chọn đưa vào có thể được nhân đôi để đảm bảo cho hiệu suất truy vấn mốc thời gian tốt nhất. Ví dụ trong Hình 2.13 nút lá được lựa chọn bởi thuật toán cây con là D, thực hiện bằng cách làm theo mục u trong nút A. Nếu chèn <h,2,*> vào D mà không mở rộng phạm vi không gian của D, thì việc chèn không làm thay đổi bất kỳ cấu trúc trong cây. Tuy nhiên nếu chèn là nguyên nhân mở rộng phạm vi, một mục mới u’ được tạo ra trong khi u là bị xoá (xu hướng của nó là thay đổi đến 2 lần). Đưa (a,b,c,d) trong khoảng thời gian [0, 2) vào không gian giới hạn (bounds) u , trong khi giới hạn u’ còn hoạt động ở mốc thời gian 2.

(a)Before insertion (b)After insertion

Hình 2.13. Nhân đôi một phần tử trung gian

Tràn (overflow) xảy ra khi một phần tử (phần tử) là được chèn vào một nút, nút đó đã chứa tối đa các phần tử. Xử lý tràn như quá trình tại Hình 2.14

Hình 2.14. Xử lý overflow

Chia khoá (Key split) xảy ra chỉ khi tất cả các mục trong nút được chèn tại mốc thời gian hiện tại và đảm bảo điều kiện phiên bản mạnh (strong version): thời gian các mục tồn tại  B*Psvo, B thể hiện khả năng của nút, Psvo là một tham số [0,1].

Chia phiên bản (Version Split) được thực hiện và đảm bảo điều kiện phiên bản yếu (weak version): thời gian các mục tồn tại  B*Psvo.

Tuy nhiên chúng ta luôn cố gắng để tránh việc Version Split bởi vì nó sẽ xảy ra các mục dư thừa. Xem hình 2.15, khi khả năng của nó là 3 nút lá bị phân chia và sau đó làm cho dư thừa mục C0 và d0.

… <s, 0, 2, B> <t, 0, 2, C> <u, 0, *, D> <v, 0, *, E> <w, 2, *, F> <a, 0, *> <b, 0, *> <c, 0, *> <d, 0, *> <a, 0, *> <b, 0, *> <c, 0, *> <d, 0, *> <h, 2, *> … <s, 0, 2, B> <t, 0, 2, C> <u, 0, *, D> <v, 0, *, E> <w, 2, *, F> <u, 2, *, D> <h, 2, *> entry to be inserted D A D A

Hình 2.15. Làm dƣ thừa các phần tử khi bị tràn Deletion

Tương tự như R-tree nhưng chỉ có các mục tồn tại mới bị xoá ở mốc thời gian hiện tại. Một mục là bị xoá vật lý chỉ khi tstart là bằng thời gian hiện tại. Thuật toán xoá có thể gây ra lỗi tràn bởi vì nó cần tạo những mục mới để phục vụ cho việc truy vấn, như thể hiện trong Hình 2.12.

Hình 2.16. Nhân đôi một phần tử trong khi xoá

Thiếu mục (Underflow) xảy ra là hậu quả của việc vi phạm các điều kiện phiên bản yếu (weak version) sau khi xoá. Chúng ta có 3 lựa chọn để xử lý việc Underflow: … <s, 0, 2, B> <t, 0, 2, C> <u, 0, *, D> <v, 0, *, E> <w, 2, *, F> A <a, 0, *> <b, 0, *> <c, 0, *> <d, 0, *> <h, 0, *> <a, 0, *> <b, 0, *> <c, 0, *> <d, 0, *> <h, 0, 2> … <s, 0, 2, B> <t, 0, 2, C> <u, 0, 2, D> <v, 0, *, E> <w, 2, *, F> <u’, 2, *, D> D A D

(1) Xuất phát trực tiếp từ R-tree, chèn lại các mục tồn tại vào nút Underflow. Tuy nhiên việc chèn lại các mục có thể dẫn đến dư thừa phiên bản

Một phần của tài liệu Phương pháp tổ chức dữ liệu cho các đối tượng chuyển động hỗ trợ hệ thống VNtracking (Trang 34)