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
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, toà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 hoàn toà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
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 toá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, ngoà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 toá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 toá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. Tuy nhiên, nó rất thuận tiện để truy vấn tại thời điểm hiện tại, nhưng khó xác định được đối tượng chuyển động trong tương lai. Trong hình dưới cùng bên trái cho thấy các vị trí của các đối tượng và các MBRs ở thời điểm t3. Tại thời điểm này tất cả các MBR đã phát triển mở rộng, gây khó khăn đến kết quả truy vấn. Nếu thời gian tiếp tục tăng, các MBR sẽ tiếp tục phát triển mở rộng, dẫn đến khó khăn cho việc truy vấn hơn nữa. MBR có chứa đối tượng 4 và 5 cũng như MBR chứa các đối tượng 6 và 7 đã mở rộng nhiều hơn, mặc dù các đối
tượng ban đầu gần nhau, các hướng chuyển động của đối tượng khác nhau vì vậy vị trí chuyển động nhanh chóng làm cho MBRs phát triển rộng. Tại thời điểm t3, sẽ có tối ưu hơn cho việc truy vấn khi gán các đối tượng 4 và 6 vào một MBR và các đối tượng 5 và 7 với cùng một MBR, như được minh họa bằng hình phía dưới bên phải.
Các MBR trong ví dụ minh họa trên là kiểu tham số thời gian với hình chữ nhật bao bọc được hỗ trợ bởi TPR-tree. Mô hình hoá vị trí của đối tượng chuyển động theo thời gian cho phép chúng ta dự đoán được vị trí tương lai của đối tượng.
2.2.2. Cấu trúc và thuật toán TPR-tree (Time parameterizer R-tree)
Trong phần này tôi trình bày cấu trúc vàthuật toán củaTPR-tree. Khái niệm về một tham số thời gian được xác định với ranh giớihình chữ nhật MBR, các cách thức để truy vấn cây và các thuật toán.
Cấu trúc chỉ mục
TPR- tree là một cây cân bằng, đa chiều và có cấu trúc của R-tree. Các phần tử trong nút là là một cặp bao gồm: vị trí của đối tượng điểm chuyển động và con trỏ đến của đối tượng điểm chuyển động. Các mục trong các nút trung gian (internal node) là một cặp bao gồm: con trỏ đến của cây con (subtree) và hình chữ nhật giới hạn tất cả các vị trí của đối tượng chuyển động (hình chữ nhật bao bọc trong nhánh cây con).
Hình 2.27. Ví dụ các điểm di chuyển nhƣ các Internal Node của TPR-tree
Trong trường hợp một chiều, vị trí của một đối tượng điểm chuyển động được mô tả bởi một vị trí tham chiếu và một vectơ vận tốc tương ứng (x,v) , x = x(tref), với tref là chỉ mục tham chiếu tại thời gian tl.
Khái niệm về Time-parameterized bounding rectangles[7]
Trong TPR-tree, các hình chữ nhật giới hạn trong không gian d- chiều sử dụng các tham số của thời gian, tọa độ của chúng là hàm thời gian. Một hình chữ nhật giới hạn theo tham số thời gian nó bao bọc tất cả điểm kèm theo hay các hình chữ nhật tại tất cả thời gian tương lai gần nhất. Vì vậy nó là một tham số thời gian có khả năng bao bọc các điểm chuyển động liên tục.
Đối với mỗi chiều d, khoảng cách giới hạn được xác định bởi 2 hàm tuyến tính theo thời gian: [xd├ (tref) + vd├ (t – tref), xd ┤ (tref) + vd ┤ (t – tref)], trong đó:
xd├ = xd├ (tref) = mini{oi.xd├ (tref)} xd ┤= xd ┤(tref ) = maxi{oi.xd ┤(tref)} vd├ = mini{oi. vd├}
vd ┤= maxi{oi. vd┤}
tref là thời gian hình chữ nhật giới hạn được tạo ra.
Các hình chữ nhật không bao giờ thu nhỏ lại và thực tế nó có thể phát triển rất nhanh theo thời gian, nó làm hiệu suất truy vấn giảm theo thời gian vì vậy các hình chữ nhật phải được điều chỉnh và cập nhật lại.
Đối với mỗi chiều d, điểm cuối của khoảng giới hạn sẽ được cập nhật (update) như sau:
xd├ = mini{oi.xd├ (tupd)} – vd├ (tupd – tref) xd┤= maxi{oi.xd ┤ (tupd)} – vd ┤(tupd – tref)
tref là thời gian hình chữ nhật giới hạn được tạo ra. tupd là thời gian khi thực hiện cập nhật.
Hình 2.28. Ví dụ cập nhật khoảng giới hạn theo tham số thời gian
Trong ví dụ tại hình 2.28, các nét đậm phía trên và phía dưới thể hiện thời gian được tạo ra và nét đứt là thời gian cập nhật, 4 đường thể hiện 4 đối tượng chuyển động.
Truy vấn
a. Timeslice query
Trong thực tế việc trả lời một truy vấn mốc thời gian (timeslice) trong cây TPR-tree không khác với R-tree. TPR-tree lưu trữ hàm tuyến tính cho cả điểm di chuyển và hình chữ nhật giới hạn theo tham số thời gian. Do đó một sự lưu trữ nhanh của TPR-tree sẽ chứa tham số thời gian tq, việc truy vấn tìm kiếm trong phạm vị lưu trữ nhanh sẽ chính xác tại các mốc thời gian.
Algorithmtimeslice-query (u, r, tq ) 1. If u is a leaf then
2. report all points stored at u that are covered by r at t = tq 3. Else
4. for each child v of udo
5. if bounding-rectangle(v) intersects r at t = tq then
6. timeslice-query(v, r, tq )
Đối với mỗi chiều d, một khoảng giới hạn (xd├, xd┤, vd├, vd ┤) giao nhau với khoảng truy vấn ([ad├, ad┤] r, tq) khi và chỉ khi: