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.
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 tốn xố 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 xố. Chúng ta có 3 lựa chọn để xử lý việc Underflow:
(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 và sẽ còn lại tối thiểu.
(2) Một nút có thể khơng cịn underflow nếu một vài mục được chèn cùng một mốc thời gian. Vì vậy chúng ta không xử lý các underflow mà làm một danh sách các nút underflow. Trước khi xử lý ở mốc thưòi gian tiếp theo, chúng ta kiểm tra mỗi nút trong danh sách , nếu có bất kỳ một nút underflow nào thì chúng ta chèn lại các mục đang tồn tại.
(3) Chúng ta không áp dụng việc chèn lại tất cả, mà cố gắng để hợp các nút underflow với một nút anh em của nó.
Trong các thử nghiệm HR+-tree tiêu tốn một phần nhỏ không gian cần thiết tương ứng HR-tree (thường ít hơn 20%). HR+-tree kế thừa hiệu quả của HR-tree trong mốc thời gian truy vấn, thực hiện tốt hơn nhiều trong khoảng truy vấn. Tuy nhiên từ phân tích các thuật tốn của nó, khi đối tượng thay đổi ở tốc độ ổn định, nó tốn rất nhiều khơng gian nhớ từ khi các đối tượng được nhân bản rông rãi. Hơn nữa, nó vẫn cịn hạn chế phương pháp thực hiện để truy vấn khoảng thời gian từ khi phiên bản được nhân rộng.
2.1.3. MV3Rtree
Bởi vì khơng một phương nào trong số 3DR-tree, HR-tree, HR+-tree có thể giải quyết việc truy vấn theo vết thời gian (timeslice) và khoảng thời gian một cách hiệu quả, do đó Multiversion 3DR-tree (MV3R-tree) [10] được đề xuất để thực hiện cho yêu câu trên. MV3R-tree nó khắc phục vấn đề này bằng cách kết hợp 2 cấu trúc: a multiversion R-tree (MVR-tree) và một phần nhỏ 3DR-tree xây dựng trên các nút lá của MVR-tree. Hình 2.17 minh hoạ một ví dụ của
… <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
MV3R-tree. MV3R-tree có thể xử lý hiệu quả tất cả các kiểu của truy vấn với không gian yêu cầu nhỏ.
Khoảng cách giữa hai cấu trúc độc lập thu được : (a) bằng cách sử dụng những nút lá phía trên cây thay vì các đối tượng hiện thời để xây dựng phần R- tree và (b) bằng cách thay thế HR-tree với MVR-tree chứa nhiều không gian hiệu quả hơn.
Do MV3R-tree kết hợp các ý tưởng của MVR-tree và 3DR-tree, vì vậy nó thừa hưởng các ưu điểm của cả 2 loại cây. Trong thử nghiệm của [9] cho thấy rằng nó có thể xử lý cả truy vấn theo vết thời gian (timeslice) và khoảng thời gian một cách hiệu quả với yêu cầu không gian tương đối nhỏ.
Tuy nhiên MV3R-tree cũng thừa hưởng những nhược điểm, nó khơng hiệu quả cho các khi hầu hết các đối tượng đang chuyển động ở tốc độ ổn định, hơn thế nữa kết quả địi hỏi khơng gian rất lớn với cả 2 cấu trúc.
Hình 2.17. Kết hợp của MVR-tree và 3DR-tree 2.1.4. Lập chỉ mục cho các quỹ đạo (quá khứ) của các vị trí 2.1.4. Lập chỉ mục cho các quỹ đạo (quá khứ) của các vị trí
Bằng cách xem xét thời gian như một chiều không gian, dữ liệu thu được từ các đối tượng điểm di chuyển là tương tự như 1 “chuỗi” bất kỳ định hướng trong không gian 3D (với 2 chiều tương ứng với không gian và 1 chiều tương ứng với thời gian). Bằng cách lấy mẫu chuyển động của đối tượng điểm chúng ta có 1 đường đa đoạn (polyline) thay vì một “chuỗi”, nó đại diện cho các quỹ đạo của đối tượng điểm di chuyển. Trong hình học đối tượng điểm di chuyển được gọi là một quỹ đạo như thể hiện trong hình 2.18. Một quỹ đạo của đối tượng điểm chuyển động có thể coi như khơng gian (3D) dữ liệu của riêng nó, do đó nó có thể được hỗ trợ bởi một phương pháp tiếp cận khơng gian. Chúng ta có thể sử dụng phương pháp tiếp cận không gian để lập chỉ mục dữ liệu, đơn thuần như là một tập hợp các đoạn đường thẳng vì vậy vấn đề của nó là sự duy trì của quỹ đạo.
Có 2 phương pháp tiếp cận: Đầu tiên, không thời gian R-tree (gọi tắt là STR-tree) [3], tổ chức các đoạn đường thẳng khơng chỉ theo tính chất khơng gian mà cịn nhóm các phân đoạn tuỳ theo quỹ đạo của nó, chúng ta gọi nó là thuộc tính duy trì quỹ đạo. Thứ 2, Trajectory-Bundle tree (gọi tắt là TB-tree) [6],
MVR-Tree
nhằm mục đích chỉ để duy trì quỹ đạo và để lại các thuộc tính khơng gian khác sang một bên.
R-tree được sửa đổi như sau: xấp xỉ (approximating) các đoạn dường thẳng với MBB trong Hình 2.19 (a), như nhìn thấy trong Hình 2.19 (b), một đoạn đường thẳng có thể chỉ chứa 4 chiều khác nhau trong một MBB. Thông tin bổ xung này là được lưu trữ ở mức lá bằng cách đơn giản là thay đổi định dạng sang (id, MBB, định hướng (orientation)) với tên miền định hướng của nó là {1,2,3,4}. Giả sử số quỹ đạo từ 0 tới n, một nút lá lá sẽ có định dạng (id, trajectory#, MBB, orientation).
Hình 2.18. Chuyển động của một đối tƣợng không gian và quỹ đạo tƣơng ứng
Hình 2.19. (a) Xấp xỉ quỹ đạo sử dụng MBB (b) Ánh xạ của đoạn đƣờng thẳng trong một MBB
Hạn chế của phương pháp này là không gian chết (“dead space”) có phạm vi lớn. Rõ ràng phạm vi bao bọc tương ứng MBB là chiếm khơng gian lớn, trong khi đó khơng gian thực tế bị chiếm bởi quỹ đạo là rất nhỏ. Điều này dẫn đến chồng chéo nhau và do đó suy xét khả năng lập chỉ mục cấu trúc là nhỏ.
Lập chỉ mục STR-tree
Trong thuật toán chèn của STR-tree, chúng ta yêu cầu chèn vào một đoạn của một đối tượng. Đầu tiên để duy trì quỹ đạo của đối tượng, nó tìm một nút
chứa tiền nhiệm của nó. Nếu nút đó được tìm thấy và có khơng gian, chúng ta chèn phân đoạn. Nhưng nếu nút là đầy đủ, chúng ta kiểm tra cha mẹ lân cận của nó có đầy đủ hay khơng. Nếu cha mẹ của nó khơng đầy đủ chúng ta sẽ phân chia các nút lá. Thứ hai, giữ thuộc tính khơng gian, chúng ta sẽ sử dụng thuật toán chèn gốc của R-tree [2] trong trường hợp bố mẹ nút lá là đầy đủ, các phần còn lại của cây (màu xám bóng mờ cây trong hình 2.20) sẽ được chèn vào nút lá ngang bằng nút lá chứa tiền nhiệm mà nó khơng tìm thấy, tồn bộ cây sẽ được chèn vào.
Hình 2.20. Xử lý chèn cho STR-tree
Hình 2.21. Các kiểu chia đoạn
Một sửa đổi khác của cây STR-tree từ R-tree là phân chia thuật toán, để duy trì quỹ đạo trong chỉ mục, chúng ta chia một nút lá khi nó tràn như sau (như thể hiện trong hình 2.21):
(a) Tất cả các đoạn là được huỷ kết nối với nhau, QuadraticSplit được gọi ra để quyết định việc phân chia.
(b) Không phải tất cả các đoạn là huỷ kết nối với nhau, đoạn huỷ kết nối được đặt vào nút mới tạo ra.
(c) Không tồn tại đoạn huỷ kết nối, đoạn kết nối ngược gần nhất được đặt vào nút mới tạo ra.
Lập chỉ mục TB-tree
Không giống như STR-tree, TB-tree nhằm mục đích cho phương pháp tiếp cận duy trì quỹ đạo một cách hồn tồn, như vậy một nút lá chỉ chứa đoạn thuộc cùng một quỹ đạo, do đó lập chỉ mục được hiểu như là một tập hợp (bundle) quỹ đạo. Nhược điểm là các đoạn đường thẳng độc lập từ quỹ đạo nằm trong không gian gần sẽ được lưu trữ trong các nút khác nhau. Khi sự chồng chéo tăng lên, sự suy xét khơng gian giảm vì vậy giá thành cho phạm vi truy vấn thơng thường tăng lên.
Hình 2.22. (a) Nút cha là khơng đầy đủ, (b) Nút cha đầy đủ
Thuật toán chèn là để chèn một phân đoạn mới tới một nút. Đầu tiên chúng ta chọn toàn bộ nút lá chứa một phân đoạn được kết nối với mục mới. Trong trường hợp nút là khơng tìm thấy, chúng ta tạo một nút mới cho mục mới. Trong trường hợp nút là được tìm thấy (giai đoạn 1 trong hình 2.22a), nếu nút lá có khơng gian chúng ta chèn vào mục mới, nhưng ngược lại chúng ta tăng cây cho tới khi chúng ta tìm thấy một nút cha khơng đầy đủ (giai đoạn 2 đến 4 trong Hình 2.22a). Chúng ta chọn con đường đúng nhất (giai đoạn 5) để chèn vào nút mới. Nếu có chỗ trong nút cha (giai đoạn 6), chúng ta chèn nút lá mới như thể hiện trong Hình 2.22a. Trong trường hợp nút cha là đầy đủ như trong hình 2.22b chúng ta sẽ chia nó bằng cách tạo một nút mới (khơng lá) ở mức 1có nút lá mới con cháu duy nhất của nó. Như minh hoạ, cây TB-tree là đang phát triển từ trái
sang phải, tức là chúng ta chèn vào nút trái nhất trước tiên sau đó nút phải nhất cuối cùng.
Để duy trì quỹ đạo đầy đủ, mỗi nút lá của TB-tree chứa một phần quỹ đạo và các đoạn đường thẳng cùng quỹ đạo đặt trong nút lá khác nhau. Vì vậy đối với mỗi quỹ đạo một danh sách liên kết kép được xây dựng để kết nối tất cả các nút lá chứa đoạn đường thẳng cùng quỹ đạo như thể hiện trong hình 2.23 dưới đây.
Hình 2.23. Cấu trúc TB-tree
Nhược điểm của phương pháp này là nó khơng hỗ trợ tốt cho truy vấn dựa trên toạ độ chẳng hạn như điểm, phạm vi và láng riềng gần nhất. Lý do là số lượng lớn “không gian chết” trong MBRs và TB-tree, STR-tree làm giảm hạn chế các thuộc tính khơng gian, đặc biệt là TB-tree. Ví dụ cho các truy vấn “ tìm
đối tượng k gần nhất tại một điểm nhất định ở thời gian nhất định” hay “tìm tất cả đối tượng trong một khu vực nhất định ở một khoảng thời gian nhất định”
Tuy nhiên, phương pháp này cũng có một số ưu điểm sau: Nó rất dễ dàng để xây dựng đỉnh của cây R-tree, nó hỗ trợ tốt cho các truy vấn dựa trên quỹ đạo như truy vấn topo, điều hướng(Navigational), kết hợp(Combined).
- Truy vấn Navigational (khoảng cách, tốc độ,…): tốc độ di chuyển của máy bay là gì, tốc độ tối đa là gì?
- Truy vấn Topological: nhập, để lại, vượt qua, bỏ qua như thể hiện trong hình 2.24a.
- Truy vấn Combined: để truy xuất các thông tin liên quan tới (một phần) quỹ đạo. Ví dụ "Quỹ đạo của đối tượng là gì sau khi họ rời Hà Nội giữa 7 giờ và 8 giờ sáng ngày hôm nay, trong một giờ tiếp theo?" Như thể hiện trong hình 2.24b.
Hình 2.24. (a) truy vấn Topological, (b) truy vấn Combined 2.2. Lập chỉ mục cho hiện tại và tƣơng lai của đối tƣợng chuyển động 2.2. Lập chỉ mục cho hiện tại và tƣơng lai của đối tƣợng chuyển động
Đối với hệ thống quản trị cơ sở dữ liệu truyền thống, các dữ liệu được lưu trữ trong cơ sở dữ liệu khơng thay đổi cho đến khi nó có một bản cập nhật mới (thể hiện sự thay đổi một cách rõ ràng của các đối tượng chuyển động). Mơ hình này chỉ phục vụ cho các ứng dụng có thay đổi nhiều về dữ liệu nhưng theo bước rời rạc, nó khơng thích hợp cho các ứng dụng mà các dữ liệu thay đổi liên tục. Một trong những ứng dụng là cơ sở dữ liệu "chuyển động" lưu trữ các vị trí của các đối tượng di động(ví dụ như xe ô tô, phương tiện vận chuyển..). Khi đối tượng thay đổi vị trí liên tục, nó sẽ phải cập nhật cơ sở dữ liệu liên tục tại mỗi đơn vị thời gian. Đây rõ ràng là một giải pháp không hiệu quả và không khả thi.
Một phương pháp tiếp cận tốt hơn là bản ghi tóm tắt các thông số của mỗi đối tượng chuyển động tại một vị trí được coi như một hàm số của f(t) và cơ sở dữ liệu sẽ cập nhật khi các thơng số của f thay đổi(ví dụ như khi tốc độ và hướng của xe thay đổi).Sử dụng cơ sở dữ liệu biến đổi theo hàm f(t) có thể tính tốn vị trí của đối tượng chuyển động bất cứ lúc nào trong tương lai. Phương pháp này giảm thiểu các chi phí cập nhật, ngồi ra phương pháp cũng giới thiệu một loạt các vấn đề mới (chẳng hạn như sự cần thiết của mơ hình dữ liệu thích hợp, ngơn ngữ truy vấn, xử lý truy vấn và các kỹ thuật tối ưu hóa) khi đó cơ sở dữ liệu không trực tiếp lưu trữ giá trị dữ liệu nhưng có chức năng tính tốn các giá trị của dữ liệu.
Truy vấn không-thời gian của các đối tượng chuyển động có ứng dụng quan trọng trong việc theo dõi lưu lượng truy cập, chuyển hướng thông minh và các lĩnh vực truyền thơng di động. Ví dụ, trong cơ sở dữ liệu theo dõi xe ôtô của một hệ thống đường cao tốc, chúng ta có thể phát hiện các khu vực tắc nghẽn trong tương lai. Trong truyền thông di động, chúng ta có thể phân bổ thêm băng thơng cho các khu vực có số lượng lớn điện thoại di động đang đến gần khu vực đó. Điều đó địi hỏi việc lập chỉ mục cho đối tượng phải đạt hiệu quả, để có thể xác định các địa điểm của đối tượng trong tương lai.
Một ví dụ về một truy vấn không-thời gian là: "Báo cáo tất cả các đối tượng sẽ có tại một khu vực cần truy vấn trong thời gian 10 phút kể từ bây giờ". Lưu ý rằng các câu trả lời chotruy vấn này dự kiến có nghĩa là nó được tính tốn dựa trên dữ liệuhiện tại được lưu trữ trong cơ sở dữ liệu về các chức năng vị trí của các đối tượng chuyển động. Trong tương lai gần, dữ liệu nàycó thể thay đổi, có nghĩa là cùng một truy vấn có thể có một câu trả lời khác nhau. Trong phần này, chúng ta tập trung vào cách tiếp cận linh hoạt và hiệu quả nhất, tham số thời gian R-tree(TPR-tree) [7] .
2.2.1. Khái niệm TPR-tree
Xét ví dụ minh hoạ tại hình 2.25dưới đây: trong hình trên cùng bên trái cho thấy các vị trí và vectơ vận tốc của 7 đối tượng vào thời điểm 0 (t0). Đối tượng 1 và 2 di chuyển về phía phải với tốc độ 1 đơn vị khoảng cách, đối tượng 3 di chuyển về phía phải với tốc độ bằng 2 đơn vị khoảng cách, các đối tượng 4 và 6 di chuyển về phía trái với tốc độ bằng 1 đơn vị khoảng cách và các đối tượng 5 và 7 di chuyển lên trên với tốc độ bằng 1 đơn vị khoảng cách.
Hình 2.25. Các điểm di chuyển và kết quả Leaf-Level MBRs
Giả sử chúng ta tạo ra một R-tree vào thời điểm 0, biểu đồ phía trên bên phải cho thấy một vị trí xác định của các đối tượng được bao quanh bởi hình chữ nhật tối thiểu (MBRs), giả định tối đa là ba MBR như trên hình. Mục đích của các bài toán làcố gắng để giảm thiểu số lượng MBRs để tránh chồng chéo lên nhau, tránh không gian chết để tạo chỉ mục với một kết quả truy vấn tốt.