1. Trang chủ
  2. » Luận Văn - Báo Cáo

Kỹ thuật lập chỉ mục cho cơ sở dữ liệu song thời gian dựa trên cấu trúc đa phiên bản

183 31 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 183
Dung lượng 2,86 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

2- NHIỆM VỤ LUẬN VĂN : Xây dựng một cấu trúc chỉ mục mới dựa trên cấu trúc đa phiên bản sẵn có để có thể lập chỉ mục cho các dữ liệu song thời gian; hỗ trợ các câu truy vấn tầm, đồng th

Trang 1

Trường Đại Học Bách Khoa

LÊ QUANG LỘC

KỸ THUẬT LẬP CHỈ MỤC CHO CƠ SỞ

DỮ LIỆU SONG THỜI GIAN DỰA TRÊN

CẤU TRÚC ĐA PHIÊN BẢN

(INDEXING FOR BITEMPORAL DATABASES BASED ON MULTIVERSION STRUCTURE)

Chuyên ngành: Khoa học Máy tính

LUẬN VĂN THẠC SĨ

TP HỒ CHÍ MINH, tháng 06 năm 2008

Trang 2

TRƯỜNG ĐẠI HỌC BÁCH KHOA Độc Lập - Tự Do - Hạnh Phúc

- -oOo -

Tp HCM, ngày 30 tháng 6 năm 2008

NHIỆM VỤ LUẬN VĂN THẠC SĨ Họ và tên học viên: Lê Quang Lộc Giới tính: Nam ;/ Nữ … Ngày, tháng, năm sinh: 05/08/1982 Nơi sinh: Bà Rịa-Vũng Tàu Chuyên ngành: Khoa học Máy tính

Khoá: 2006

1- TÊN ĐỀ TÀI :

KỸ THUẬT LẬP CHỈ MỤC CHO CƠ SỞ DỮ LIỆU SONG THỜI GIAN DỰA TRÊN CẤU TRÚC ĐA PHIÊN BẢN

2- NHIỆM VỤ LUẬN VĂN : Xây dựng một cấu trúc chỉ mục mới dựa trên cấu trúc đa phiên bản sẵn có để có thể lập chỉ mục cho các dữ liệu song thời gian; hỗ trợ các câu truy vấn tầm, đồng thời tích hợp được chỉ mục này vào trong hệ quản trị CSDL Oracle, có tính chất trong suốt với người dùng cuối

3- NGÀY GIAO NHIỆM VỤ : 7/2007

4- NGÀY HOÀN THÀNH NHIỆM VỤ : 30/6/2008

5- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN : PGS TS Dương Tuấn Anh

Nội dung và đề cương Luận văn thạc sĩ đã được Hội Đồng Chuyên Ngành thông qua

CÁN BỘ HƯỚNG DẪN CHỦ NHIỆM BỘ MÔN

(Họ tên và chữ ký)

PGS TS Dương Tuấn Anh TS Đinh Đức Anh Vũ

Trang 3

CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI TRƯỜNG ĐẠI HỌC BÁCH KHOA ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH

Cán bộ hướng dẫn khoa học : PGS TS Dương Tuấn Anh

Cán bộ chấm nhận xét 1: TS Đặng Trần Khánh

Cán bộ chấm nhận xét 2: TS Nguyễn Quang Tấn

Luận văn thạc sĩ được bảo vệ tại

HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ

TRƯỜNG ĐẠI HỌC BÁCH KHOA, ngày 27 tháng 08 năm 2008

Trang 4

LỜI CAM ĐOAN

Tôi cam đoan rằng, ngoại trừ các kết quả tham khảo từ các công trình khác như

đã ghi rõ trong luận văn, các công việc trình bày trong luận văn này là do chính tôi thực hiện và chưa có phần nội dung nào của luận văn này được nộp để lấy một bằng cấp ở trường này hoặc trường khác

Ngày 30 tháng 06 năm 2008

Lê Quang Lộc

Trang 5

LỜI CẢM ƠN

Tôi xin gởi lời cảm ơn chân thành và sâu sắc nhất đến PGS TS Dương Tuấn Anh, người Thầy đã tận tình hướng dẫn tôi trong suốt quá trình thực hiện luận văn cao học và tạo mọi điều kiện để tôi có thể hoàn thành luận văn này

Tôi cũng xin cảm ơn gia đình đã động viên và tạo mọi điều kiện tốt nhất để tôi có thể tiếp tục theo đuổi việc học tập nghiên cứu Tôi trân trọng dành tặng thành quả của luận văn này cho Cha Mẹ Nhờ công lao dưỡng dục của Người mà chúng con mới có được thành quả như ngày hôm nay Con xin hứa sẽ tiếp tục cố gắng phấn đấu để vươn cao hơn nữa

Tôi gởi lòng tri ân đến tất cả bạn bè, những người đã động viên, thăm hỏi cũng như đã có những giúp đỡ thiết thực giúp tôi hoàn tất luận văn này

Trang 6

TÓM TẮT LUẬN VĂN

Cơ sở dữ liệu (CSDL) song thời gian đã được quan tâm từ những năm 80 Tính chất của thời gian giao tác đòi hỏi dữ liệu chỉ bị xóa luận lí, điều này làm CSDL song thời gian tăng lên không ngừng, thậm chí theo cấp số nhân Xây dựng các kỹ thuật lập chỉ mục cho dữ liệu song thời gian trở thành nhu cầu cơ bản Rất nhiều cấu trúc dữ liệu cũng như các giải thuật lập chỉ mục tương ứng đã được giới thiệu Thời gian gần đây, các nghiên cứu trong lĩnh vực này chủ yếu tập trung giải quyết vấn đề liên quan đến dữ liệu thời gian là vấn đề thời điểm hiện tại, trong đó phương pháp dùng cấu trúc đa phiên bản để giải quyết vấn đề này cho thời gian giao tác đã được thực nghiệm chứng minh là triển vọng nhất Song, việc kết hợp giữa các phương pháp để giải quyết vấn đề này cho dữ liệu thời gian hợp lệ và các phương pháp cho dữ liệu thời gian giao tác trong dữ liệu song thời gian vẫn còn gặp nhiều khó khăn

Đề tài này đề nghị một cấu trúc dữ liệu mới được xây dựng dựa trên cấu trúc đa

phiên bản, cấu trúc đa phiên bản mở rộng (hay còn gọi là cây B + song thời gian, bitemporal B + -Tree), giải thuật cập nhật dữ liệu và tìm kiếm dữ liệu dựa theo cấu trúc

cây B+ Cấu trúc này đặc biệt hiệu quả với các câu truy vấn tầm kết hợp giữa khóa và thời gian giao tác Đề tài cũng giới thiệu một số cải tiến trên cấu trúc cây B+ song thời gian Cuối cùng đề tài giới thiệu phương pháp tích hợp một kỹ thuật lập chỉ mục mới vào trong hệ quản trị cơ sở dữ liệu Oracle, một kỹ thuật khá mới mẻ trong các nghiên cứu về CSDL

Trang 7

ABSTRACT

By supporting the valid and transaction time dimensions, bitemporal databases can be applied to many banking, security and personel applications Logically deleting recordsin bitemporal databases makes space of the databases increase rapidly and consideraly Temporal access methods have been studied and there have been several remarkable results.Recently, while much attention of researchers has focused on now-relative problem, multiversion B-Tree has become the best approach for transaction time databases In this thesis, we propose an extension of multiversion access method,

bitemporal B-Tree (BBT), together with insertion, deletion and query operations based

on B-Tree to support for bitemporal databases This approach has the best performance with the query classes related to transaction time and key Some improvements are also provided to reduce the space requirement and speed up the query response time

Besides, data cartridge has been applied to integrate BBT into Oracle DBMS

transparently The BBT has been experimented on synthetic data and the experimental results show that the new multiversion access method is efficient

Trang 8

MỤC LỤC

LỜI CAM ĐOAN i

LỜI CẢM ƠN ii

TÓM TẮT LUẬN VĂN iii

ABSTRACT iv MỤC LỤC v DANH MỤC HÌNH viii

DANH MỤC BẢNG xii

Chương 1 GIỚI THIỆU ĐỀ TÀI 1

1.1 Lý do thực hiện đề tài 1

1.2 Mục tiêu và giới hạn của đề tài 4

1.3 Tóm lược những kết quả đạt được 5

1.4 Cấu trúc của luận văn 5

Chương 2 CƠ SỞ LÝ THUYẾT 6

2.1 Hệ quản trị CSDL hướng thời gian 6

2.1.1 Các khái niệm cơ bản 6

2.1.2 Các yêu cầu đối với các phương pháp truy đạt dữ liệu trong các CSDL hướng thời gian 9

2.1.3 Các thao tác cơ bản để truy cập dữ liệu hướng thời gian 13

2.1.4 Phân biệt các phương pháp lập chỉ mục trong CSDL hướng thời gian 14

2.2 Lập chỉ mục trong CSDL hướng thời gian 15

2.2.1 Phân loại các câu truy vấn 15

2.2.2 Các loại chi phí của một phương pháp truy đạt dữ liệu 17

2.2.3. Sự phân trang chỉ mục (Index Pagination) và sự gom cụm dữ liệu (data clustering) 18

2.2.4 Chặn dưới của độ phức tạp I/O 19

2.3 Cấu trúc dữ liệu đa phiên bản 19

2.3.1 Các thông số của một cấu trúc đa phiên bản: 20

2.3.2 Các thao tác dữ liệu cơ bản trên cấu trúc đa phiên bản: 20

2.3.3 Các khái niệm đặc trưng của cấu trúc đa phiên bản 21

2.3.4 Giải thuật chi tiết hai thao tác cập nhật dữ liệu 23

2.3.5 Ví dụ về các thao tác cập nhật dữ liệu: 27

2.3.6 Giải thuật chi tiết hai thao tác truy vấn dữ liệu 35

2.3.7 Các tính chất của cấu trúc đa phiên bản: 39

2.3.8 Các vấn đề cần giải quyết trong cấu trúc đa phiên bản 39

2.4 Kết luận 42

Chương 3 NHỮNG CÔNG TRÌNH LIÊN QUAN 43

3.1 Các hướng tiếp cận gom cụm dữ liệu 44

3.1.1 Gom cụm dữ liệu dựa trên giá trị thời gian 44

3.1.2 Gom cụm dữ liệu dựa trên giá trị khóa 45

3.1.3 Gom cụm dữ liệu dựa trên giá trị thời gian và khóa 45

3.2 Các phương pháp lập chỉ mục cho CSDL thời gian giao tác 45

3.2.1 Các phương pháp gom cụm dữ liệu chỉ dựa trên dữ liệu khóa 46

3.2.2 Các phương pháp gom cụm dữ liệu chỉ dựa trên dữ liệu thời gian 46

3.2.3 Các phương pháp gom cụm dữ liệu dựa trên khóa-thời gian 48

Trang 9

3.3 Các phương pháp lập chỉ mục cho CSDL thời gian hợp lệ 55

3.4 Các phương pháp lập chỉ mục cho CSDL song thời gian 56

3.5 Các phương pháp giải quyết vấn đề liên quan đến thời điểm hiện tại 59 3.5.1 Phương pháp giá trị lớn nhất (MAX) 59

3.5.2 Phương pháp dùng biến 59

3.5.3 Phương pháp giá trị điểm (POINT) 60

3.5.4 Phương pháp dùng cấu trúc kép 60

3.5.5 Phương pháp dùng cấu trúc đa phiên bản 60

3.6 Các phương pháp tích hợp một chỉ mục vào một hệ quản trị CSDL thương mại 60 3.7 Kết luận 61

Chương 4 CẤU TRÚC DỮ LIỆU CÂY B SONG THỜI GIAN 63

4.1 Đặt vấn đề 63

4.2 Hướng giải quyết 63

4.3 Các cải tiến trên BBT 64

4.3.1. Cải tiến thao tác chia nút theo phiên bản trên BBT 64

4.3.2 Cải tiến về việc mở rộng thuộc tính khóa về bên trái 66

4.4 Giới thiệu chung về BBT 68

4.5 Các thao tác dữ liệu cơ bản mà cấu trúc BBT sẽ hỗ trợ: 69

4.5.1 Thêm dữ liệu: 69

4.5.2 Xoá dữ liệu: 69

4.5.3. Truy vấn tầm “range/range/range”: 69

4.5.4 Truy vấn tầm “range/*/range”: 70

4.5.5 Truy vấn tầm “point/*/range”: 70

4.6 Các giải thuật thao tác dữ liệu trên cấu trúc BBT: 70

4.6.1. Giải thuật chi tiết hai thao tác insert 70

4.6.2 Giải thuật chi tiết hai thao tác version_split 71

4.6.3. Giải thuật chi tiết hai thao tác logical_remove 73

4.6.4. Giải thuật chi tiết hai thao tác key_split 73

4.6.5. Giải thuật chi tiết hai thao tác check_weak_underflow 75

4.6.6. Giải thuật chi tiết hai thao tác merge 76

4.6.7. Giải thuật chi tiết hai thao tác _update_parent 76

4.6.8. Giải thuật chi tiết hai thao tác _apply_update 77

4.6.9. Giải thuật chi tiết hai thao tác search 78

4.6.10.Ví dụ về các thao tác cập nhật dữ liệu trên cấu trúc chỉ mục BBT: 80

4.6.11 Ví dụ về các ngoại lệ trên nút gốc trên cấu trúc chỉ mục BBT : 83

4.6.12.Ví dụ về truy vấn r_r_r_query 85

4.7 Kết luận 87

Chương 5 HIỆN THỰC 88

5.1 Hiện thực cấu trúc chỉ mục BBT 89

5.1.1 Giới thiệu thư viện GiST 89

5.1.2 Xây dựng BBT trên nền thư viện GiST 92

5.2 Xây dựng và tích hợp BBT vào hệ quản trị CSDL Oracle 94

5.2.1 Qui trình xây dựng và tích hợp chỉ mục BBT vào trong hệ quản trị CSDL Oracle 94

5.2.2 Xây dựng kiểu dữ liệu INT_BBT 95

5.2.3 Xây dựng một số hàm xử lí các toán tử 96

5.2.4 Xây dựng lớp bbtree_im để hiện thực các hàm ODCIIndex interface 97

5.2.5 Xây dựng các toán tử 98

5.2.6 Tạo một kiểu chỉ mục dùng các hiện thực của lớp bbtree_im 98

5.2.7 Tạo dữ liệu để kiểm tra 98

5.3 Kết luận 99

Chương 6 ĐO HIỆU NĂNG 100

Trang 10

6.1 Đo hiệu năng của BBT 101

6.1.1 Qui tắc xây dựng tập dữ liệu 101

6.1.2 Đo hiệu năng về không gian lưu trữ 102

6.1.3 Đo hiệu năng cập nhật dữ liệu 102

6.1.4 Đo hiệu năng khi thay đổi giá trị lớn nhất của giá trị khóa 103

6.1.5 Đo hiệu năng với các giá trị khác nhau của V 104

6.1.6 Đo hiệu năng khi thay đổi tỉ lệ thời gian hợp lệ hiện tại 106

6.1.7 Kết luận: 107

6.2 So sánh truy vấn dữ liệu trong Oracle trước và sau khi tích hợp chỉ mục BBT 107 6.2.1 Qui tắc xây dựng tập dữ liệu 107

6.2.2 Kết quả đạt được 108

Chương 7 KẾT LUẬN 109

7.1 Tổng kết 109

7.2 Những đóng góp của đề tài 110

7.3 Hướng phát triển 111

TÀI LIỆU THAM KHẢO 113 Phụ Lục A THƯ VIỆN GIST A.1

A.1 Giới thiệu A.1 A.2 Các lớp cơ bản A.2

QUẢN TRỊ CSDL ORACLE B.1

B.1 Các khái niệm B.1 B.2 Định nghĩa các kiểu đối tượng B.8 B.3 Hiện thực các hộp dữ liệu bằng ngôn ngữ PL/SQL B.10 B.4 Hiện thực các hộp dữ liệu bằng ngôn ngữ C, C++, Java B.15 B.5 Sử dụng các chỉ mục mở rộng B.21 B.6 Xây dựng các chỉ mục theo miền ứng dụng B.24 B.7 Định nghĩa các toán tử B.27

BẢN ĐỂ PHÁT TRIỂN HỘP DỮ LIỆU CHO HỆ QUẢN TRỊ CSDL ORACLE C.1

C.1 ODCIGetInterfaces C.1 C.2 ODCIIndexAlter C.2 C.3 ODCIIndexClose C.4 C.4 ODCIIndexCreate C.4 C.5 ODCIIndexDelete C.6 C.6 ODCIIndexDrop C.7 C.7 ODCIIndexFetch C.8 C.8 ODCIIndexInsert C.9 C.9 ODCIIndexStart C.11 C.10 ODCIIndexUpdate C.13

Phụ Lục D THUẬT NGỮ VIỆT-ANH ĐỐI CHIẾU D.1U

Trang 11

DANH MỤC HÌNH

Hình 2.1 Sự hiệu chỉnh và phiên bản (nguồn [9]) 9

Hình 2.2 Sự phát triển dữ liệu trong CSDL thời gian giao tác (nguồn [30]) 10

Hình 2.3 Hai trạng thái của một tập động của interval-objects (nguồn [30]) 11

Hình 2.4 Góc nhìn ý niệm về CSDL song thời gian (nguồn [30]) 13

Hình 2.5 Các thao tác cơ bản trong cấu trúc đa phiên bản (nguồn [33] ) 22

Hình 2.6 Hai thao tác cập nhật dữ liệu 23

Hình 2.7 Giải thuật thêm dữ liệu 23

Hình 2.8 Thao tác hợp nút 24

Hình 2.9 Giải thuật thêm một bộ dữ liệu vào một nút 25

Hình 2.10 Giải thuật hợp nút 25

Hình 2.11 Giải thuật sửa chữa một nút khi vi phạm điều kiện tràn trên phiên bản mạnh 26

Hình 2.12 Giải thuật kiểm tra điều kiện tràn dưới phiên bản yếu 26

Hình 2.13 Giải thuật xoá một bộ dữ liệu 27

Hình 2.14 Giải thuật xoá một bộ dữ liệu trong một nút 27

Hình 2.15 Ví dụ về việc cập nhật dữ liệu 28

Hình 2.16 Ví dụ về việc cập nhật dữ liệu (tt) 28

Hình 2.17 Ví dụ về việc cập nhật dữ liệu (tt) 29

Hình 2.18 Ví dụ về việc cập nhật dữ liệu (tt) 29

Hình 2.19 Ví dụ về việc cập nhật dữ liệu (tt) – chia theo phiên bản 30

Hình 2.20 Ví dụ về việc cập nhật dữ liệu (tt) – hợp và chia theo khóa 31

Hình 2.21 Ví dụ về việc cập nhật dữ liệu áp dụng cho nút gốc 32

Hình 2.22 Ví dụ về việc cập nhật dữ liệu áp dụng cho nút gốc (tt) 33

Hình 2.23 Ví dụ về việc cập nhật dữ liệu áp dụng cho nút gốc (tt) 34

Hình 2.24 Truy vấn so trùng chính xác 35

Hình 2.25 Truy vấn so trùng chính xác 36

Hình 2.26 Truy vấn tầm DFS 37

Hình 2.27 Truy vấn tầm Link 38

Hình 2.28 Sự trùng lắp dữ liệu khi thực hiện truy vấn tầm 39

Hình 2.29 Phương pháp tính điểm tham khảo (nguồn [8]) 39

Hình 2.30 Qui tắc nút trước sau khi thực hiện chia nút theo thời gian 40

Trang 12

Hình 2.31 Qui tắc nút trước sau khi thực hiện chia nút theo khóa 40

Hình 2.32 Qui tắc nút trước sau khi thực hiện hợp nút 40

Hình 2.33 Ví dụ về phương pháp mắt xích (nguồn [8]) 41

Hình 2.34 Điểm tham khảo trong phương pháp mắt xích (nguồn [8]) 41

Hình 2.35 Vấn đề sai thời gian kết thúc khi truy vấn 42

Hình 3.1 Phân loại các phương pháp truy đạt dữ liệu 44

Hình 3.2 Cấu trúc Time Index (nguồn [9]) 47

Hình 3.3 Cấu trúc Time Index+ (nguồn [9]) 48

Hình 3.4 Cấu trúc SR-Tree (nguồn [20]) 49

Hình 3.5 Quá trình hình thành dữ liệu (nguồn [18]) 51

Hình 3.6 Quá trình tăng dần của nút lớn (nguồn [18]) 51

Hình 3.7 Quá trình tăng dần của nút lớn (tt) (nguồn [18]) 51

Hình 3.8 Trục x, y tương ứng biểu diễn thời gian bắt đầu và kết thúc (nguồn [30]) 55

Hình 3.9 Cấu trúc IVTT (nguồn[22]) 56

Hình 3.10 Cấu trúc M-IVTT (nguồn[22]) 56

Hình 3.11 Vùng bao hình bậc thang trong GR-Tree 57

Hình 3.12 Bốn trường hợp trong cấu trúc 4R-Tree (nguồn [5]) 58

Hình 3.13 Bốn trường hợp trong cấu trúc 4R-Tree được biểu diện trong hệ trục tọa độ 2 chiều thời gian giao tác và thời gian hợp lệ (nguồn [5]) 59

Hình 3.14 Các phương pháp tích hợp một chỉ mục vào hệ quản trị CSDL thương mại (nguồn [15]) 61

Hình 4.1 Ví dụ về cải tiến chia nút theo phiên bản 64

Hình 4.2 Ví dụ về cải tiến chia nút theo phiên bản (tt) 65

Hình 4.3 Ví dụ về cải tiến chia nút theo phiên bản (tt) 66

Hình 4.4 Ví dụ về cải tiến mở rộng khóa 67

Hình 4.5 Sau khi áp dụng cải tiến mở rộng khóa 68

Hình 4.6 Giải thuật thêm một bản ghi vào cấu trúc chỉ mục BBT 71

Hình 4.7 Giải thuật chia nút theo phiên bản trên cấu trúc chỉ mục BBT 72

Hình 4.8 Giải thuật xóa luận lí một bản ghi theo phiên bản trên cấu trúc chỉ mục BBT 73

Hình 4.9 Giải thuật chia nút theo khóa trên cấu trúc chỉ mục BBT 74

Hình 4.10 Giải thuật kiểm tra tràn dưới phiên bản yếu trên cấu trúc chỉ mục BBT 75

Hình 4.11 Giải thuật thao tác hợp nút trên cấu trúc chỉ mục BBT 76

Trang 13

Hình 4.12 Giải thuật cập nhật bộ lọc ở nút cha trên cấu trúc chỉ mục BBT 77

Hình 4.13 Giải thuật thi hành các cập nhật trên cấu trúc chỉ mục BBT 78

Hình 4.14 Giải thuật truy vấn dữ liệu trên cấu trúc chỉ mục BBT 79

Hình 4.15 Ví dụ về việc cập nhật dữ liệu 80

Hình 4.16 Ví dụ về việc cập nhật dữ liệu (tt) 80

Hình 4.17 Ví dụ về việc cập nhật dữ liệu (tt) 81

Hình 4.18 Ví dụ về việc cập nhật dữ liệu (tt) 81

Hình 4.19 Ví dụ về việc cập nhật dữ liệu (tt) – chia theo phiên bản 82

Hình 4.20 Ví dụ về việc cập nhật dữ liệu (tt) – hợp và chia theo khóa 83

Hình 4.21 Ví dụ về việc cập nhật dữ liệu áp dụng cho nút gốc 83

Hình 4.22 Ví dụ về việc cập nhật dữ liệu áp dụng cho nút gốc (tt) 84

Hình 4.23 Ví dụ về việc cập nhật dữ liệu áp dụng cho nút gốc (tt) 85

Hình 4.24 Cấu trúc dữ liệu BBT ở thời điểm t = 41 86

Hình 5.1 Cấu trúc file trong thư viện GiST (nguồn [14]) 90

Hình 5.2 Cấu trúc mở rộng tổng quát của GiST (nguồn [14]) 91

Hình 5.3 Cấu trúc mở rộng chi tiết của GiST (nguồn [14]) 91

Hình 5.4 Qui trình quản lí dữ liệu giữa interface ODCIIndex (nguồn [14]) 97

Hình 5.5 Qui trình truy vấn giữa OCIIndex và bbt_lib (nguồn [14]) 98

Hình 6.1 So sánh không gian lưu trữ 102

Hình 6.2 So sánh chi phí cập nhật trung bình 103

Hình 6.3 So sánh hiệu năng với loại câu truy vấn “range/range/range” 103

Hình 6.4 Thời gian truy vấn trung bình đối với “range/range/range” 103

Hình 6.5 So sánh hiệu năng với loại câu truy vấn “range/*/range” 103

Hình 6.6 Thời gian truy vấn trung bình đối với “range/*/range” 103

Hình 6.7 So sánh hiệu năng với loại câu truy vấn “point/*/range” 104

Hình 6.8 Thời gian truy vấn trung bình đối với “point/*/range” 104

Hình 6.9 So sánh hiệu năng với loại câu truy vấn “range/range/range” 105

Hình 6.10 Thời gian truy vấn trung bình đối với “range/range/range” 105

Hình 6.11 So sánh hiệu năng với loại câu truy vấn “range/*/range” 105

Hình 6.12 Thời gian truy vấn trung bình đối với “range/*/range” 105

Hình 6.13 So sánh hiệu năng với loại câu truy vấn “point/*/range” 105

Hình 6.14 Thời gian truy vấn trung bình đối với “point/*/range” 105

Hình 6.15 So sánh hiệu năng với loại câu truy vấn “range/range/range” 106

Trang 14

Hình 6.16 Thời gian truy vấn trung bình đối với “range/range/range” 106

Hình 6.17 So sánh hiệu năng với loại câu truy vấn “range/*/range” 106

Hình 6.18 Thời gian truy vấn trung bình đối với “range/*/range” 106

Hình 6.19 So sánh hiệu năng với loại câu truy vấn “point/*/range” 106

Hình 6.20 Thời gian truy vấn trung bình đối với “point/*/range” 106

Hình 6.21 So sánh thời gian trung bình thực thi một cấu truy vấn khi có và không có dùng BBT trong Oracle 108 Hình B.1 Các dịch vụ cơ bản được hiện thực bởi hệ quản trị CSDL Oracle B.3 Hình B.2 Qui trình thao tác với môi trường ngoài B.5 Hình B.3 Quá trình thực thi các thủ tục ngoại B.17 Hình B.4 Các kiểu dữ liệu chuyển đổi mặc định B.18 Hình B.5 Các kiểu dữ liệu chuyển đổi được hỗ trợ B.19

Trang 15

DANH MỤC BẢNG

Bảng 2.1 Dữ liệu song thời gian 8

Bảng 3.1 So sánh các chức năng được hỗ trợ trong các cấu trúc đa phiên bản (nguồn [30]) 53

Bảng 3.2 So sánh hiệu năng của các phương pháp truy đạt dữ liệu thời gian giao tác (nguồn [30]) 54

Bảng 4.1 Thứ tự duyệt các nút khi truy vấn trên cấu trúc chỉ mục BBT 87

Bảng 5.1 Sự tương ứng hiện thực giữa thư việc bbt.dll và BBT 93

Bảng 5.2 Quá trình thực hiện các chức năng 96

Bảng 5.3 Tổng kết về số dòng mã mà đề tài đã hiện thực 99 Bảng A.1 Các lớp cơ bản trong thư viện libgist A.2 Bảng C.2 Các đối số của hàm ODCIGetInterfaces C.1 Bảng C.3 Các đối số của hàm ODCIIndexAlter C.2 Bảng C.4 Các đối số của hàm ODCIIndexClose C.4 Bảng C.5 Các đối số của hàm ODCIIndexCreate C.5 Bảng C.6 Các đối số của hàm ODCIIndexDelete C.7 Bảng C.7 Các đối số của hàm ODCIIndexDrop C.7 Bảng C.8 Các đối số của hàm ODCIIndexFetch C.9 Bảng C.9 Các loại hàm ODCIIndexInsert C.10 Bảng C.10 Các đối số của hàm ODCIIndexInsert C.10 Bảng C.11 Các đối số của hàm ODCIIndexStart C.11 Bảng C.12 Các đối số của hàm ODCIIndexUpdate C.13

Trang 16

Chương 1

GIỚI THIỆU ĐỀ TÀI

Chương giới thiệu đề tài sẽ trình bày yêu cầu, mục tiêu và nội dung sơ lược của

đề tài Đồng thời chương này cũng nêu lên những động cơ thúc đẩy việc thực hiện đề tài trong thực tiễn cũng như trong nghiên cứu

1.1 Lý do thực hiện đề tài

Thông tin ngày nay đã trở thành một nguồn tài nguyên quý giá của các doanh nghiệp Việc quản lý và sử dụng hiệu quả thông tin đã và đang được quan tâm Việc sử dụng máy tính trong quản lý và xử lý thông tin đã được áp dụng từ lâu trên thế giới, và tại Việt Nam, đây cũng là một xu hướng tất yếu Dữ liệu của công ty, cơ sở dữ liệu (CSDL), được lưu trữ, truy xuất bên trong nội bộ công ty và các hoạt động, ứng dụng phục vụ kinh doanh Việc lưu trữ dữ liệu hiệu quả, tốc độ truy xuất, cập nhật của các

hệ quản trị cơ sở dữ liệu trong thương mại ngày nay đã phần nào đáp ứng được nhu cầu lưu trữ, khai phá dữ liệu của người dùng Do đó có thể nói, các giải thuật lập chỉ mục trong các hệ quản trị CSDL thương mại đã đạt được những kết quả tốt, khá đầy

đủ, đáp ứng được nhu cầu lưu trữ, khai phá dữ liệu trong các ứng dụng thương mại thông thường

Cùng với sự ra đời của các ngành kinh tế mới, nhiều nhu cầu mới về dữ liệu xuất hiện Trong đó, dữ liệu có yếu tố thời gian ngày càng được quan tâm, các ứng dụng của nó ngày càng phát triển rộng rãi như quản lý giao dịch trong thị trường chứng khoán, quản lý quá trình hoạt động của một công ty, trong ngân hàng, trong y tế, du lịch….Ví dụ như CSDL của một nhà băng trong thực tế phải lưu trữ tất cả các giao dịch của khách hàng, của các tài khoản, và đó chính là các dữ liệu có tính thời gian Ngày nay, người ta không chỉ quan tâm đến các dữ liệu mới nhất mà còn muốn thống

kế, khai phá đến quá trình phát triển của dữ liệu, các dữ liệu trong quá khứ cũng như các dữ liệu trong tương lai Do đó, việc phát triển các hệ quản trị CSDL quản lí các dữ liệu hướng thời gian là tất yếu Một trong những phương pháp phát triển hệ CSDL hướng thời gian này nhanh nhất và hiệu quả nhất là dựa trên các hệ quản trị CSDL hiện có

Đã có hàng trăm nghiên cứu để đưa ra các mô hình, ngôn ngữ truy vấn hướng thời gian Mặc dù, các chuẩn về dữ liệu hướng thời gian cũng khá hoàn chỉnh, nhưng các

hệ quản trị CSDL thương mại hiện thời vẫn có một sự hỗ trợ rất ít cho dữ liệu thời

Trang 17

gian Nhưng các hỗ trợ này cũng đủ để làm cơ sở, để từ đó ta xây dựng các bộ phận khác và hoàn chỉnh CSDL hướng thời gian

Một số vấn đề cần được quan tâm khi tiếp cận với hệ quản trị CSDL hướng thời gian:

• Ngôn ngữ truy vấn tương ứng

ƒ Ngôn ngữ truy vấn dữ liệu hướng thời gian được gọi là TSQL (Temporal Structured Query Language), là một siêu tập hợp (super_set) của SQL, có

hỗ trợ thêm yếu tố thời gian (mệnh đề WHEN) của dữ liệu

• Kỹ thuật lập chỉ mục cho dữ liệu

ƒ Đối với các dữ liệu có liên quan đến thời gian, dữ liệu được lưu trữ chi tiết hơn, tất cả các thao tác trên dữ liệu đều được lưu vết; Hơn thế nữa, dữ liệu không bao giờ bị xoá một cách vật lí, do đó kích thước của CSLD sẽ tăng

một chiều theo cấp số nhân, rõ ràng, các kỹ thuật lập chỉ mục trên dữ liệu của các hệ quản trị CSDL cũ không còn hiệu quả nữa, việc xây dựng các

kỹ thuật lập chỉ mục mới là một nhu cầu tất yếu

ƒ Và theo một góc nhìn khoa học, chắc chắn các kỹ thuật lập chỉ mục mới này phải có liên quan đến yếu tố thời gian thì mới đạt được kết quả tốt nhất, hiệu quả nhất Và các nghiên cứu trước đây trong lĩnh vực này đã chứng minh điều này

Trong quá trình nghiên cứu về lĩnh vực này có rất nhiều kỹ thuật lập chỉ mục cho các dữ liệu hướng thời gian Kỹ thuật lập chỉ mục thường phải dựa trên một cấu trúc dữ liệu tương ứng Đối với các hệ quản trị CSDL truyền thống, việc lập

chỉ mục cho dữ liệu thường dựa trên cấu trúc của bảng băm (Hash table) hay B + Tree Do phải lập chỉ mục trên đa thuộc tính (đa chiều) và hỗ trợ thêm cho việc lập chỉ mục tầm (range) nên cấu trúc R * -Tree là thích hợp cho việc mở rộng để hỗ trợ

-các kỹ thuật lập chỉ mục trong hệ quản trị CSDL hướng thời gian Trong lịch sử phát triển của kỹ thuật lập chỉ mục cho hệ CSDL hướng thời gian, có ba cấu trúc

dữ liệu được phát triển trên cơ sở B + -Tree, mở đường cho ba trường phái khác

nhau phát triển:

• B Seeger và các cộng sự ([6]) giới thiệu cấu trúc dữ liệu R * -Tree vào năm

1990, một cấu trúc dữ liệu được ra đời nhằm hỗ trợ cho quản lí dữ liệu đa chiều (dữ liệu không gian), và sau này được cải tiến để sử dụng trong nhiều cấu trúc chỉ mục CSDL hướng thời gian

• Năm 1996, Nascimento hoàn tất luận văn tiến sĩ ([9]) với cấu trúc Time Index

để lập chỉ mục cho thời gian hợp lệ, cấu trúc này được nhóm của Kouramajian ứng dụng trong cấu trúc Monotonic B+-tree ([10]), và được Nascimento và các

cộng sự tiếp tục phát triển để hỗ trợ CSDL song thời gian ([Error! Reference

source not found.])

• D Lomet và B Salzberg ([21]) giới thiệu phương pháp truy vấn dữ liệu trên

cấu trúc đa phiên bản vào năm 1989, đó là cấu trúc Write-Once B-Tree

(WOBT) và cấu trúc Time Split B-Tree Các cấu trúc dữ liệu này hỗ trợ việc lập

chỉ mục chủ yếu trên ý nghĩa phiên bản Nhóm các tác giả B Becker, S

Gschwind, T Ohler, B Seeger và P Widmayer giới thiệu cấu trúc dữ liệu đa

Trang 18

phiên bản (multiversion) vào năm 1993 ([1]), phát triển từ Time Split B-Tree có

hỗ trợ thêm truy vấn tầm, các thao tác dữ liệu được hoàn thiện dần bởi các tác giả trong các bài báo [12], [8]

Trong hệ quản trị CSDL hướng thời gian, thời gian chia làm hai loại Đó là thời gian giao tác và thời gian hợp lệ Thời gian giao tác là thời gian khi sự kiện được lưu trữ trong CSDL Thời gian hợp lệ là thời gian có hiệu lực trong thực tế CSDL thời gian giao tác là CSDL chỉ chứa các dữ liệu thời gian giao tác; CSDL thời gian hợp lệ là CSDL chứa các dữ liệu thời gian hợp lệ; Trong khi đó CSDL song thời gian chứa cả hai thời gian trên, thời gian hợp lệ lẫn thời gian giao tác Các kỹ thuật lập chỉ mục cho CSDL hướng thời gian đa số chỉ tập trung cho thời gian giao tác, chỉ một số ít hỗ trợ cho thời gian hợp lệ Các tác giả trong các bài báo [3], [5], [16],

[17], [Error! Reference source not found.], [27] giới thiệu các kỹ thuật lập chỉ

mục cho dữ liệu song thời gian Đề tài này sẽ giới thiệu một kỹ thuật lập chỉ mục

mới cho CSDL song thời gian

Một khó khăn khác cho các kỹ thuật lập chỉ mục là các dữ liệu thời gian có

giá trị bất định, được gọi là các dữ liệu có liên quan đến thời điểm hiện tại (now relative), khi giá trị thời gian hợp lệ vẫn còn đúng tới thời điểm hiện tại (kí hiệu là NOW) hay thời gian kết thúc giao tác của dữ liệu là thời điểm hiện tại (kí hiệu là UC) Nếu xem thời gian hợp lệ và thời gian giao tác là hai chiều dữ liệu thì tốc độ

truy vấn dữ liệu phụ thuộc rất nhiều vào hình chữ nhật được tạo bởi giá trị thời gian hợp lệ và thời gian giao tác của dữ liệu đó Nếu các giá trị này là các biến NOW hay UC thì hình chữ nhật này mở rộng vô hạn về các hướng tương ứng, khi truy vấn dữ liệu, các hình chữ nhật này luôn được xem xét, nhưng không phải lúc nào

nó cũng chứa các giá trị quan tâm Mỗi loại thời gian khác nhau có các kỹ thuật khắc phục khác nhau Đối vời dữ liệu thời gian giao tác, các giải thuật dựa trên cấu trúc đa phiên bản hoàn toàn tránh được vấn đề này và nổi trổi về hiệu năng tìm kiếm dữ liệu Phương pháp 4R-Tree ([5]) giải quyết vấn đề này bằng cách phân loại dữ liệu thành bốn trường hợp tương ứng và lưu trữ vào bốn cây R*-Tree; các cấu trúc chỉ mục dựa trên cấu trúc đa phiên bản ([1], [12], [8], [16], [17], [21])

dùng cấu trúc phân cấp , [3] chấp nhận chứa các giá trị này và dùng vùng bao nhỏ nhất hình chữ nhật (minimum bounding rectangle) và hình bậc thang, cấu trúc M-

IVTT ([Error! Reference source not found.]) dùng cây phân cấp (cây trước (front

tree) và cây sau (back tree)) trên cấu trúc Time Index, nhóm các tác giả B Stantic,

S Khanna, J Thornton ([27]) dùng cách tiếp cận POINT trong đó thay thế các giá

trị NOW, UC bằng giá trị thời gian bắt đầu tương ứng của dữ liệu đó Đề tài này sẽ

thử nghiệm hai sự kết hợp POINT – giải quyết vấn đề liên quan đến thời điểm hiện tại cho dữ liệu thời gian hợp lệ - và cấu trúc đa phiên bản - giải quyết vấn

đề liên quan đến thời điểm hiện tại cho dữ liệu thời gian giao tác – để giải quyết vấn đề liên quan tới thời điểm hiện tại trong dữ liệu song thời gian

Một trong những hạn chế của việc lập chỉ mục trên cấu trúc đa phiên bản là

sự trùng lắp dữ liệu trong quá trình thực hiện các câu truy vấn tầm Để tránh dư

thừa dữ liệu, nhóm của Seeger ([8]) giới thiệu kỹ thuật-điểm-tham-khảo (reference point) Tsotras và Seeger nhìn ra các sai sót trong cách tiếp cận điểm-tham-khảo,

đó là vấn đề sai thời gian kết thúc, nên đã để nghị trong bài báo [33] kỹ thuật

điểm-thời-gian-tham-khảo-bên-phải (right reference time) có thể khắc phục được cả hai

Trang 19

hạn chế trên Đề tài này sẽ áp dụng các kỹ thuật mà bài báo [33] giới thiệu trong

quá trình xây dựng cấu trúc cây B song thời gian để tránh dư thừa và trùng lắp

dữ liệu khi truy vấn

Để ứng dụng các chỉ mục mới vào trong các sản phẩm thương mại, cần có một cơ chế tích hợp các chỉ mục này vào trong các hệ quản trị CSDL hiện có Tính chất có khả năng mở rộng của các hệ quản trị CSDL cho phép làm được điều này

Mở rộng một hệ quản trị CSDL bằng cách tạo ra thêm các kiểu dữ liệu mới, các toán tử mới hay các chỉ mục mới là chức năng của các gói bộ mở rộng (extenders)

trong DB2, Informix DataBlades [4], hay các hộp dữ liệu (data cartridges) trong

Oracle [14, 19] Đề tài này sẽ tìm hiểu và tích hợp chỉ mục mới được xây dựng

vào hệ quản trị CSDL Oracle

Tóm lại, đề tài này sẽ phát triển một cấu trúc dữ liệu mới dựa trên cấu trúc cây B

đa phiên bản (Multiversion B-Tree - [2]) để hỗ trợ việc lập chỉ mục cho dữ liệu song thời gian, đồng thời áp dụng kỹ thuật điểm-tham-khảo-bên-phải để tránh dư thừa dữ liệu và sai thời gian kết thúc, giải quyết vấn đề dữ liệu liên quan tới thời điểm hiện tại cho thời gian hợp lệ bằng phương pháp POINT Đề tài cũng đưa ra phương pháp tích hợp cấu trúc chỉ mục mới vào hệ quản trị CSDL Oracle

1.2 Mục tiêu và giới hạn của đề tài

Mục tiêu của đề tài là xây dựng một cấu trúc chỉ mục mới, cấu trúc cây B song thời gian, dựa trên cấu trúc đa phiên bản sẵn có để có thể lập chỉ mục cho các dữ liệu song thời gian; hỗ trợ các câu truy vấn tầm, đồng thời tích hợp được chỉ mục này vào trong hệ quản trị CSDL Oracle, có tính chất trong suốt với người dùng cuối

Một trong những cấu trúc chỉ mục cho dữ liệu song thời gian hiệu quả nhất là cấu trúc cây R song thời gian (Bitemporal R-Tree [17]), nhưng cấu trúc này xây dựng trên

nền tảng cây R nên chỉ đạt hiệu quả trong trường hợp trung bình, trong khi cấu trúc cây B song thời gian thì dựa trên cấu trúc đa phiên bản và các giải thuật truy xuất dữ liệu lại dựa trên cấu trúc cây B+, do đó đối với các câu truy vấn tầm kết hợp tìm kiếm giữa khóa và thời gian giao tác trên cấu trúc mới mà tác giả đề nghị hứa hẹn đạt hiệu năng vượt trội

Đề tài sẽ sử dụng các interface của dịch vụ hộp dữ liệu của Oracle để tích hợp cấu trúc mới này vào trong hệ quản trị CSDL Oracle, do đó người dùng cuối có thể sử dụng chỉ mục mới này tương tự như các chỉ mục sẵn có của Oracle

Vì vậy việc nghiên cứu để đưa ra cấu trúc cây B song thời gian được giới hạn ở những khía cạnh sau:

- Cấu trúc này hỗ trợ hai thao tác cập nhật dữ liệu cơ bản trong CSDL song thời gian: thêm dữ liệu song thời gian và xóa luận lí dữ liệu song thời gian

- Cấu trúc này hỗ trợ các câu truy vấn điểm, truy vấn tầm mà thông tin tìm kiếm

là tổ hợp của ba giá trị của khóa, thời gian giao tác, thời gian hợp lệ, trong đó, truy vấn có hiệu năng tốt khi thông tin tìm kiếm trong câu truy vấn có chứa cả khóa và thời gian giao tác

- Người dùng cuối có thể thao tác trên các ứng dụng của Oracle để tạo ra một kiểu dữ liệu song thời gian tương ứng, lập chỉ mục cho kiểu dữ liệu này bằng

Trang 20

cấu trúc chỉ mục của đề tài này giới thiệu, thêm, xóa dữ liệu và truy vấn dữ liệu với các toán tử song thời gian

1.3 Tóm lược những kết quả đạt được

Với những yêu cầu của đề tài, sau thời gian nghiên cứu và hiện thực, chúng tôi đã

xây dựng được cấu trúc đa phiên bản mở rộng tên là cây B song thời gian

(Bitemporal B-Tree) Đồng thời đã tích hợp thành công chỉ mục này vào trong hệ

quản trị CSDL Oracle

Nói chung, với hệ thống đã hiện thực mà chúng tôi sẽ trình bày chi tiết ở những chương sau đã đáp ứng tất cả những yêu cầu và nhiệm vụ của đề tài

1.4 Cấu trúc của luận văn

Các phần còn lại của luận văn này được tổ chức như sau:

Chương 2 giới thiệu lý thuyết về chỉ mục cũng như các khái niệm cơ bản được dùng trong hệ quản trị CSDL song thời gian Các lý thuyết cơ sở của cấu trúc

đa phiên bản cũng được giới thiệu trong chương này

Trong khi đó, Chương 3 giới thiệu tổng quan về các công trình liên quan, các công trình này xây dựng các kỹ thuật lập chỉ mục cho dữ liệu thời gian hợp lệ, thời gian giao tác và một số ít là song thời gian;

Chương 4 là nội dung chính của đề tài, tác giả đề xuất một cấu trúc đa phiên

bản mở rộng mới, cấu trúc bitemporal B-Tree, cùng với giải thuật lập chỉ mục

cho dữ liệu song thời gian dựa trên cấu trúc này;

Chương 5 là hiện thực, đồng thời giới thiệu phương pháp tích hợp một chỉ mục mới vào trong hệ quản trị CSDL Oracle thông qua cơ chế hộp dữ liệu

(data cartridge) do Oracle giới thiệu;

Chương 6 trình bày các đánh giá về hiệu năng, so sánh chi phí cập nhật, truy

vấn dữ liệu giữa cấu trúc bitemporal B-Tree và cấu trúc bitemporal R-Tree, so sánh tốc độ truy vấn trong CSDL Oracle trước và sau khi ứng dụng bitemporal B-Tree

Chương 7 là một số kết luận, đề xuất sau khi thực hiện đề tài

Trang 21

Chương 2

CƠ SỞ LÝ THUYẾT

Hệ quản trị CSDL song thời gian và những khái niệm về chỉ mục là những kiến thức nền tảng quan trọng của luận văn này Do đó, các khái niệm về hệ quản trị CSDL song thời gian, phân loại các loại chỉ mục, các thông số đánh giá hiệu năng của một chỉ mục và các vấn đề phải giải quyết trong kỹ thuật lập chỉ mục cho dữ liệu song thời gian sẽ lần lượt được giới thiệu ở chương này Ngoài ra, do đề tài này giới thiệu một cấu trúc chỉ mục mới dựa trên cấu trúc đa phiên bản nên việc giới thiệu về cấu trúc đa phiên bản cũng được đề cập tới Phương pháp tích hợp một chỉ mục mới vào trong hệ quản trị CSDL Oracle cùng với các khái niệm liên quan sẽ được giới thiệu ở Phụ lục

B

2.1 Hệ quản trị CSDL hướng thời gian

2.1.1 Các khái niệm cơ bản

CSDL hướng thời gian (temporal database)

Một hệ quản trị CSDL hướng thời gian là hệ quản trị CSDL hỗ trợ một số loại

thời gian khác với các kiểu thời gian do người dùng định nghĩa (user-defined time)

mà các hệ cơ sở truyền thống đang hỗ trợ Trong quá trình phát triển, thời gian là một tham số quan trọng của tất cả các hoạt động trong thế giới thực Thời gian đánh dấu thời điểm bắt đầu và kết thúc của một sự kiện, chỉ ra thời gian có hiệu lực của dữ liệu Những sự kiện, như dữ liệu, có thể có ý nghĩa trong ngày hôm nay nhưng lại không có ý nghĩa trong quá khứ và không xác định có còn giá trị hay không trong tương lai Ngược lại, một số dữ liệu có thể có một quá trình hình thành đặc biệt và có thể vẫn còn giá trị tới thời điểm gần với thời điểm hiện tại

Hầu hết các hệ quản trị CSDL hiện tại chỉ lưu trữ một trạng thái của dữ liệu và thường được giả định là trạng thái hiện tại.Tất cả sự thay đổi, cập nhật dữ liệu đều

chồng lên (overwrite) các giá trị cũ, giá trị cũ sẽ bị mất Hiện tại, hỗ trợ thời gian

trong các hệ quản trị CSDL truyền thống hầu như là ở cấp độ của người dùng định nghĩa

Trong hệ quản trị CSDL hướng thời gian, thời gian được rời rạc hoá, dựa vào các đơn vị thời gian hay các mốc sự kiện

Trang 22

Trong các công trình nghiên cứu về hệ CSDL hướng thời gian, hai kiểu thời

gian được quan tâm là thời gian hợp lệ (valid time) và thời gian giao tác (transaction time)

ƒ Thời gian hợp lệ

Là thời gian diễn tả khi nào dữ liệu đó hợp lệ (có giá trị) trong thế giới thực

Dữ liệu thời gian hợp lệ được lưu trữ bao gồm thời gian hợp lệ bắt đầu và thời gian hợp lệ kết thúc của dữ liệu đó

Kí hiệu: VT(v s, v e )

ƒ Thời gian giao tác

Là thời gian diễn tả khi nào việc thao tác dữ liệu tác động trên dữ liệu đó

Dữ liệu thời gian giao tác được lưu trữ bao gồm thời gian giao tác bắt đầu và thời gian giao tác kết thúc của dữ liệu đó

Kí hiệu: TT(t s , t e )

ƒ Song thời gian

Bao gồm cả thời gian hợp lệ và thời gian giao tác

Dữ liệu song thời gian được lưu trữ bao gồm thời gian hợp lệ bắt đầu và thời gian hợp lệ kết thúc của dữ liệu cũng như thời gian giao tác bắt đầu và thời gian giao tác kết thúc của nó

Kí hiệu: r(t s , t e , v s, v e )

• Các loại cơ sở dữ liệu hướng thời gian: Tùy thuộc vào loại thời gian được hỗ trợ, có 3 loại CSDL hướng thời gian: CSDL thời gian giao tác, CSDL thời gian hợp lệ, và CSDL song thời gian Các định nghĩa chi tiết sẽ được giới thiệu ở các phần sau

ƒ CSDL thời gian giao tác

Là CSDL có hỗ trợ thời gian giao tác cùng các phép toán liên quan tới thời gian giao tác

ƒ CSDL thời gian hợp lệ

Là CSDL có hỗ trợ thời gian hợp lệ cùng các phép toán liên quan tới thời gian hợp lệ

ƒ CSDL song thời gian

Là sự kết hợp của hệ quản trị CSDL thời gian hợp lệ và thời gian giao tác, khi

mà hai dòng thời gian này được xem như là trực giao với nhau

Trong tài liệu này, các định nghĩa liên quan đến CSDL hướng thời gian được ngầm hiểu là CSDL song thời gian

• Cấu trúc dữ liệu liên tục (persistent data structure):

Các cấu trúc dữ liệu mà các trạng thái lịch sử được duy trì

ƒ Liên tục toàn phần (fully persistent):

Cho phép cập nhật trên tất cả các trạng thái (trong quá khứ và hiện tại)

ƒ Liên tục bán phần (partially persistent):

Trang 23

Chỉ cho phép cập nhật trên trạng thái hiện tại

• Cấu trúc dữ liệu nhất thời(ephemeral data structure):

Các trạng thái cũ bị xóa khi các thao tác cập nhật được thực hiện

• Lập chỉ mục trong CSDL

Là việc xây dựng các cấu trúc dữ liệu để lưu trữ dữ liệu cần chỉ mục cùng với các thuật toán để truy xuất các dữ liệu này nhanh nhất, hiệu quả nhất

• Lập chỉ mục trong CSDL hướng thời gian

Tương tự như lập chỉ mục trong CSDL thường nhưng hỗ trợ thêm các dữ liệu thời gian Dữ liệu thời gian có những tính chất đặc biệt hơn nên các phương pháp lập chỉ mục cho các CSDL hướng thời gian cũng có những nét đặc trưng riêng

• Phương pháp biểu diễn dữ liệu

Trong hệ cơ sở dữ liệu dữ liệu song thời gian, một phần tử dữ liệu bao gồm một

khoá (key) – phi thời gian, các dữ liệu hướng thời gian, các dữ liệu phi thời gian r(key, t s , t e , v s, v e , s)

trong đó

- key là khoá

- v s: thời điểm bắt đầu của thời gian hợp lệ

- v e : thời điểm kết thúc của thời gian hợp lệ

- t s : thời điểm bắt đầu của thời gian giao tác

- t e : thời điểm kết thúc của thời gian giao tác

Các giá trị thời gian đặc biệt

Một dữ liệu được gọi là liên quan đến hiện tại (now-relative) nếu như thông tin

của nó vẫn còn hợp lệ cho tới thời điểm hiện tại hoặc dữ liệu thuộc về trạng thái của CSDL hiện tại (đang được giao tác) Thông thường người ta kí hiệu các giá trị này bằng các biến:

• Nếu dữ liệu vẫn còn có nghĩa tới thời điểm hiện tại, người ta kí hiệu v e = NOW

• Nếu dữ liệu đang được giao tác tại thời điểm hiện tại, người ta kí hiệu t e = UC (vẫn chưa thay đổi (until changed))

Một ví dụ về việc quản lí nhân sự của một công ty ứng dụng CSDL song thời gian,

trong đó đơn vị nhỏ nhất của thời gian là tháng, và thời điểm hiện tại được giả định là tháng 9 năm 97

Mã số Nhân viên Phòng ban t s t e v s v e

Bảng 2.1 Dữ liệu song thời gian

Trang 24

Mẫu tin thứ nhất lưu trữ thông tin “Ninh làm ở phòng Quảng cáo” là đúng từ

tháng 3/97 tới tháng 5/97 và thông tin này được lưu trữ suốt thời gian từ tháng 4/97 cho tới thời điểm hiện tại Mẫu tin thứ 3 ghi lại “Giang làm ở phòng mãi vụ” từ tháng 5/97 tới bây giờ, chúng ta lưu trữ sự kiện đó từ tháng 5/97, và dữ liệu đó vẫn còn là một bộ phận của trạng thái CSDL hiện tại

• Sự hiệu chỉnh và phiên bản

Hình 2.1 minh họa cho khái niệm về sự hiệu chỉnh và phiên bản Trong hình a,

khi thời điểm giao tác bắt đầu của dữ liệu R2 bằng thời điểm giao tác kết thúc của R1

thì R2 là một phiên bản của R1 (hay nói một cách khác, trong HCSDL hướng thời gian, một cập nhật tương đương với một thao tác xóa luận lí dữ liệu đó và một thao tác thêm

vào) Trong hình b, thời điểm giao tác bắt đầu của dữ liệu R2 nhỏ hơn thời điểm giao tác kết thúc của R1 thì R2 là một hiệu chỉnh của R1

Hình 2.1 Sự hiệu chỉnh và phiên bản (nguồn [9])

2.1.2 Các yêu cầu đối với các phương pháp truy đạt dữ liệu trong các CSDL hướng thời gian

• CSDL thời gian giao tác

Có hai loại CSDL thời gian giao tác:

ƒ CSDL thời gian giao tác tuyến tính (linear): các trạng thái của CSDL chỉ

được tạo ra bởi việc cập nhật trên trạng thái hiện tại của CSDL (trạng thái

sau cùng)

ƒ CSDL thời gian giao tác phân nhánh (branching): các trạng thái của

CSDL được tạo ra bởi việc cập nhật trên bất cứ trạng thái nào của CSDL,

trạng thái hiện tại hay trạng thái quá khứ

Trong luận văn này chỉ đề cập tới CSDL thời gian tuyến tính, nghĩa là việc cập nhật dữ liệu chỉ được thực hiện trên các dữ liệu của trạng thái hiện tại

Trang 25

Giả sử ban đầu CSDL thời gian giao tác là một tập rỗng các đối tượng Thời gian giao tác được giả sử là một tập các giá trị nguyên, liên tục, không âm Bất kì thay đổi nào của CSDL giả sử xảy ra tại một thời điểm là một trong các số nguyên này Một sự thay đổi được định nghĩa là một phép thêm hay xóa một đối tượng hay sự thay đổi giá trị của các thuộc tính của đối tượng Một ví dụ thực tế là việc quản lí nhân viên của một công ty Mỗi nhân viên có một mã nhân viên duy nhất và thuộc tính lương Các sự thay đổi bao gồm thêm một nhân viên mới (thời điểm kí hợp đồng với một nhân viên mới hay kí lại hợp đồng với nhân viên cũ), thay đổi lương, hay xóa một nhân viên (nhân viên đó về hưu hay nghỉ làm) Vì hành động thay đổi giá trị thuộc tính của đối tượng có thể thay thế bằng một hành động xóa (đối tượng cũ) và hành động thêm (đối tượng với thuộc tính mới) nên chúng ta chỉ quan tâm đến hai thao tác xóa và thêm đối tượng

Hình 2.2 là một ví dụ về sự phát triển dữ liệu trong CSDL thời gian giao tác, các thay đổi thực hiện với thứ tự thời gian tăng dần, thời gian cuối cùng của tập phát triển trên là t10 Những hàng tận cùng với kí hiệu “>” ứng với những đối tượng vẫn chưa bị xóa Tại t10 trạng thái s(t 9 ) = {a, f, g} được cập nhật bởi việc thêm vào đối tượng e để tạo ra trạng thái s(t 10 ) = {a, f, g, e} Trong Hình 2.2, một đối tượng được gọi là còn

sống trong suốt thời gian nó được thêm vào trong tập hợp cho tới khi nó bị xóa đi khỏi

tập hợp Trạng thái của CSDL tại thời điểm t, gọi là s(t), bao gồm tất cả các đối tượng còn sống ở thời điểm t

Hình 2.2 Sự phát triển dữ liệu trong CSDL thời gian giao tác (nguồn [29])

Giả sử lịch sử của sự phát triển trên được lưu trữ trong CSDL Bởi vì thời gian luôn luôn tăng và quá khứ thì không thay đổi, một CSDL thời gian giao tác có thể

được sử dụng với sự giả định cập nhật tường minh rằng khi một đối tượng được thêm vào hay xóa đi khỏi tập phát triển ở thời điểm t, một giao tác cập nhật hệ quản trị CSDL về thay đổi đó được thực hiện cùng thời điểm t, ví dụ, giao tác này phải được hoàn tất (commit) ở thời điểm t

Khi một đối tượng mới được thêm vào trong tập phát triển ở thời điểm t, một bản

ghi tương ứng với đối tượng này được lưu trữ vào CSDL cùng với khoảng thời gian

giao tác dạng [t, now), trong đó now là một biến đại diện cho thời gian giao tác hiện tại

và được dùng vì tại thời điểm đối tượng được sinh ra thời điểm nó bị xóa vẫn chưa

biết Nếu sau đó, đối tượng này bị xóa ở thời điểm t’, khoảng thời gian giao tác của bản ghi tương ứng sẽ được cập nhật thành [t, t’) Việc xóa một đối tượng trong tập

phát triển được thực hiện như một phép xóa “luận lí” trong CSDL (bản ghi của đối tượng bị xóa vẫn tồn tại trong CSDL nhưng với một thời gian giao tác kết thúc bằng thời gian xóa)

Trang 26

Vì hệ quản trị CSDL thời gian giao tác lưu trữ cả dữ liệu hiện tại và dữ liệu quá khứ, nên cần thiết giới thiệu khái niệm của trạng thái CSDL luận lí như là một hàm của thời gian Vì vậy chúng ta nên phân biệt giữa CSDL và trạng thái CSDL luận lí (điều này không cần thiết trong các CSDL thông thường vì luôn luôn tồn tại chính xác một trạng thái CSDL luận lí – trạng thái hiện tại) Trạng thái CSDL luận lí ở thời điểm

t bao gồm các bản ghi mà khoảng thời gian giao tác của nó chứa t Dưới điều kiện giả định cập nhật tường minh, trạng thái CSDL luận lí tương đương với trạng thái s(t) của

tập đang phát triển Vì một đối tượng có thể được sinh lại nên có thể có nhiều bản ghi (hay được gọi là các phiên bản) được lưu trữ trong CSDL biểu diễn lịch sử của cùng một đối tượng Nhưng tất cả các bản ghi này tương ứng với các khoảng thời gian giao tác rời nhau trong lịch sử của đối tượng và mỗi đối tượng này có thể thuộc một trạng thái CSDL luận lí riêng biệt

Tóm lại, một phương pháp truy đạt dữ liệu cho một CSDL thời gian giao tác cần: (a) lưu trữ trạng thái luận lí quá khứ của nó, (b) hỗ trợ các thay đổi thêm/xóa/cập nhật trên các đối tượng của trạng thái luận lí hiện tại của nó, (c) truy cập và truy vấn một cách có hiệu quả các đối tượng trong bất kì một trạng thái nào

Tổng quát, một sự kiện có thể được nhập vào CSDL ở thời điểm khác với thời điểm nó xảy ra trong thực tế Điều này có nghĩa là khoảng thời gian giao tác gắn với một bản ghi thực sự liên quan đến quá trình cập nhật CSDL (hoạt động của CSDL) và

có thể không bằng với khoảng thời gian tương ứng đối tượng còn sống ngoài thực tế

• CSDL thời gian hợp lệ

Hình 2.3 Hai trạng thái của một tập động của interval-objects (nguồn [29])

CSDL thời gian hợp lệ có một ý niệm khác Để hình dung nó, coi nó như một tập

động các interval-objects Chúng ta dùng interval-object để nhấn mạnh rằng đối tượng

mang một khoảng thời gian hợp lệ để biểu diễn thời gian hợp lệ của một vài đặc điểm của đối tượng (Ngược lại, và để nhấn mạnh rằng thời gian giao tác biểu diễn hoạt động của CSDL hơn là giá trị thực tế, chúng ta gọi những đối tượng trong ý niệm thời

gian giao tác là plain-object) Những sự thay đổi cho phép là thêm/xóa/cập nhật của một interval-object, nhưng thông tin về sự phát triển (các trạng thái quá khứ) không được lưu trữ lại Một ví dụ về tập động các interval-object được trình bày trong Hình

2.3 Trong hình này, chỉ có khoảng thời gian hợp lệ của đối tượng được hiển thị Tập

Trang 27

mới (b) được tạo từ tập trước đó (a) sau khi xóa đối tương I1 và thêm vào đối tương I2 Chỉ có tập mới (sau cùng) được lưu lại

Một ví dụ thực tế là tập các hợp đồng của một công ty Mỗi hợp đồng có một

định danh (contract_no), một thuộc tính amount và một khoảng biểu diễn khoảng thời

gian hợp đồng hợp lệ Giả sử rằng sự sửa lỗi được áp dụng chỉ khi một hợp đồng đúng được lưu trữ

CSDL thời gian hợp lệ thích hợp trong hoàn cảnh này Khi một đối tượng được thêm vào tập hợp, nó được lưu trữ trong CSDL như một bản ghi chứa các thuộc tính

và khoảng thời gian hợp lệ Thời gian mà nhập bản ghi vào CSDL không được lưu lại Khi xóa một đối tượng, bản ghi tương ứng bị xóa một cách vật lí khỏi CSDL Nếu một thuộc tính của đối tượng bị thay đổi, thuộc tính của bản ghi tương ứng được cập nhật nhưng giá trị trước đó không được giữ lại CSDL thời gian hợp lệ chỉ lưu lại các giá trị

sau cùng của tập các interval-object Truy vấn CSDL thời gian hợp lệ không thể cung

cấp các dữ liệu trong quá khứ hay quá trình hình thành tập dữ liệu Chú ý là CSDL có thể lưu trữ các bản ghi với cùng một định danh nhưng các khoảng thời gian hợp lệ của chúng phải không giao nhau

Bây giờ ý niệm thời gian liên quan đến chiều thời gian hợp lệ Cho một điểm thời

gian hợp lệ, các interval-object có thể được phân loại là quá khứ, tương lại, hay hiện

tại (còn sống) so với thời điểm này, nếu khoảng thời gian hợp lệ của nó là trước, sau hay chứa điểm đã cho CSDL thời gian hợp lệ được cho phép sửa lỗi bất cứ thời điểm nào trong miền giá trị thời gian hợp lệ (quá khứ, hiện tại, hay tương lai) vì bản ghi của

bất kì interval-object trong tập hợp có thể được thay đổi, độc lập với vị trí của nó trên

trục thời gian hợp lệ

Một phương pháp truy đạt dữ liệu cho CSDL thời gian hợp lệ nên hỗ trợ: (a) lưu

trữ tập cuối cùng của các interval-object, (b) hỗ trợ các thay đổi thêm/xóa/cập nhật trên tập này, và (c) truy vấn một cách hiệu quả các interval-object được lưu trữ trong

tập

• CSDL song thời gian

Một CSDL hỗ trợ cả hai loại thời gian trên thì gần với thực tế hơn Ý tưởng của CSDL song thời gian có thể là việc lưu trữ quá trình phát triển ( nghĩa là hỗ trợ thời

gian giao tác) của một tập động của các interval-object (thời gian hợp lệ) Hình 2.4 đưa ra góc nhìn ý niệm về CSDL song thời gian Thay vì chỉ có một tập các interval- object là một chuỗi các tập được chỉ mục bởi thời gian giao tác Trục t (trục v) tương

ứng là thời gian giao tác (hợp lệ) Chỉ có những khoảng thời gian hợp lệ được vẽ từ

mỗi interval-object Ở thời điểm giao tác t 1 CSDL ghi lại rằng interval-object I 1 được

thêm vào tập C(t 1 ) . Ở thời điểm t 5 khoảng thời gian hợp lệ của đối tượng I 1 được cập

nhật giá trị mới Ví dụ, nếu mỗi interval-object biễu diễn cho một hợp đồng của công

ty thì chúng ta có thể giải thích được quá trình hình thành các bản hợp đồng này Khi

một interval-object được nhập vào trong CSDL tại thời điểm giao tác t một bản ghi được tạo ra với định danh (contract_no), thuộc tính (contract_amount) và khoảng thời gian hợp lệ (contract_duration) và một khoảng thời gian giao tác [t, now) của đối

tượng Thời gian kết thúc giao tác sẽ được thay đổi nếu sau đo đối tượng được cập

nhật Ví dụ, bản ghi cho interval-object I 2 có khoảng thời gian giao tác [t2, t4) vì nó

Trang 28

được nhập vào CSDL ở thời điểm giao tác t 2 và bị “xóa” ở thời điểm t 4 Trường hợp

này xảy ra nếu ở thời điểm t 4 chúng ta nhận ra rằng một hợp đồng đã bị nhập sai

Hình 2.4 Góc nhìn ý niệm về CSDL song thời gian (nguồn [29])

Một phương pháp truy đạt dữ liệu song thời gian nên: (a) lưu trữ các trạng thái

luận lí quá khứ, (b) hỗ trợ các thay đổi thêm/xóa/cập nhật trên các interval-object của

trạng thái luận lí hiện tại của nó, (c) truy xuất và truy vấn một cách hiệu quả các

interval-object trên các trạng thái của nó

Hình 2.4 giúp ta phân biệt các điểm khác nhau cơ bản của các loại CSDL hướng thời gian Một CSDL thời gian giao tác khác với CSDL song thời gian ở điểm nó chỉ

duy trì lịch sử của một tập phát triển của các plain-object thay vì các interval-object

Một CSDL thời gian hợp lệ khác với CSDL song thời gian bởi vì nó giữ chỉ một tập

các interval-object (tập sau cùng) Mỗi tập C(t i ) có thể được xem là một CSDL thời

gian hợp lệ riêng biệt Một CSDL thời gian giao tác khác với các CSDL thông thường

ở điểm nó luôn giữ các trạng thái sau cùng của nó thay vì chỉ giữ trạng thái sau cùng Cuối cùng, sự khác nhau giữa CSDL thời gian hợp lệ và CSDL thông thường là việc

lưu trữ các interval-object (và các đối tượng này có thể được truy vấn)

2.1.3 Các thao tác cơ bản để truy cập dữ liệu hướng thời gian

• Thêm dữ liệu

Thêm một bản ghi dữ liệu mới với các thông tin phi thời gian, khoảng thời gian

mà dữ liệu này hợp lệ, thời gian giao tác bắt đầu là thời gian hiện tại và thời gian

giao tác kết thúc là UC

Ví dụ: công ty trên có nhân viên tên Ninh có mã số nhân viên là 0001 bắt đầu đi làm ở phòng Mãi Vụ vào 6/97, dữ liệu được cập nhật vào CSDL vào 7/97 thì một

bản ghi dữ liệu mới sẽ được thêm vào như sau:

Insert(001, Ninh, Mãi Vụ, 7/97, UC, 6/97, NOW)

Trang 29

Update(0002, Linh, 11/97, 12/97, 6/97, NOW)

• Cập nhật dữ liệu

Thay đổi dữ liệu phi thời gian hay thời gian hợp lệ của một hay nhiều bản ghi trong CSDL bằng cách xóa luận lí bản ghi cũ và thêm vào một bản ghi mới với thông tin mới

Ví dụ: Tháng 9/97, Ninh chuyển qua làm ở phòng Quản Lý tạm thời trong 5

tháng tiếp theo, dữ liệu sẽ được cập nhật như sau:

Update(0001, Ninh, Mãi Vụ, 7/97, 9/97, 6/97, 9/97)

Update(0001, Ninh, Quản Lý, 9/97, UC, 9/97, 2/98)

2.1.4 Phân biệt các phương pháp lập chỉ mục trong CSDL hướng thời gian

Kỹ thuật lập chỉ mục sơ cấp (primary index) và thứ cấp (secondary index)

ƒ Kỹ thuật lập chỉ mục sơ cấp (primary index): thực sự chứa các bản ghi dữ liệu (data record), vì vậy nó điều khiển trực tiếp việc lưu trữ luận lí của

các quan hệ trong hệ quản trị CSDL

ƒ Kỹ thuật lập chỉ mục thứ cấp (secondary index): các bản ghi dữ liệu (data record) của chỉ mục chỉ chứa các thuộc tính được lập chỉ mục và một con trỏ (pointer) chỉ tới vùng dữ liệu được lưu trữ trong CSDL

Một phương pháp lập chỉ mục có thể kết hợp cả hai loại lập chỉ mục trên, tuỳ theo từng ứng dụng Mỗi loại có những ưu khuyết điểm riêng

Lập chỉ mục sơ cấp truy xuất dữ liệu nhanh chóng vì không cần một thao tác nào khác nữa, nhưng lại tốn phí lưu trữ

Ngược lại, lập chỉ mục thứ cấp chỉ tốn một ít phí lưu trữ nhưng việc truy xuất

dữ liệu đòi hỏi thêm thao tác truy xuất dữ liệu của hệ quản trị CSDL

• Phương pháp lập chỉ mục đồng bộ hay bất đồng bộ

Trong hệ quản trị CSDL hướng thời gian, một bản ghi (record) dữ liệu bao gồm

các thuộc tính thường (phi thời gian), được xác định duy nhất bởi thuộc tính khoá

và các thuộc tính thời gian Dựa trên góc nhìn về việc lập chỉ mục các thuộc tính thường và thuộc tính thời gian song song hay tuần tự mà giải thuật lập chỉ mục đó được gọi là đồng bộ hay bất đồng bộ

Trang 30

Kỹ thuật lập chỉ mục đồng bộ là kỹ thuật lập chỉ mục đồng thời các thuộc tính

thường (phi thời gian) và các thuộc tính thời gian

Ngược lại, việc lập chỉ mục các thuộc tính phi thời gian và các thuộc tính thời

gian tuần tự (hay phân cấp) được gọi là kỹ thuật lập chỉ mục bất đồng bộ

2.2 Lập chỉ mục trong CSDL hướng thời gian

Một phương pháp chỉ mục thường chỉ hiệu quả với một vài loại câu truy vấn, có chi phí chấp nhận được và tốn ít không gian lưu trữ Để có một góc nhìn tổng quát về các yếu tố chính ảnh hưởng đến hiệu quả của một chỉ mục, dựa trên các phân loại của

V T Tsotras và các cộng sự trong bài tổng kết [29], phần này giới thiệu sự phân loại các câu truy vấn, đại diện của mỗi loại, các yếu tố quyết định tới hiệu năng của một chỉ mục cùng các giá trị cận trên của các giá trị đó đối với mỗi đại diện của mỗi loại câu truy vấn Cuối cùng, phần này giới thiệu về việc gom cụm dữ liệu cũng như việc phân trang dữ liệu, hai yếu tố ảnh hưởng đến tốc độ cập nhật, truy vấn dữ liệu cũng như sự hiểu quả của không gian lưu trữ dữ liệu

2.2.1 Phân loại các câu truy vấn

Từ góc nhìn truy vấn, một CSDL thời gian giao tác và CSDL thời gian hợp lệ chỉ đơn giản là một tập hợp các khoảng thời gian Hình 2.2 và Hình 2.3 chỉ khác nhau ở điểm các khoảng thời gian này được tạo ra như thế nào (là thông số quan trọng đối với việc cập nhật và hiệu năng lưu trữ của một phương pháp truy đạt) và ý nghĩa của chúng (có ý nghĩa với các ứng dụng) Bởi vậy, các câu truy vấn của một CSDL thời gian đơn lẻ (hợp lệ hay giao tác) có chung một dạng Chúng ta sẽ phân tích các dạng của câu truy vấn trong miền thời gian giao tác (và miền thời gian hợp lệ cũng có các

tính chất tương tự), ví dụ, khoảng thời gian T dưới đây tương ứng với khoảng thời gian

giao tác và “lịch sử” được hiểu là trên trục thời gian giao tác Các câu truy vấn chủ yếu được phân loại như sau:

• (I): Cho một khoảng thời gian liên tục T, tìm tất cả đối tượng còn sống trong

suốt khoảng thời gian này

• (II): Cho một tầm giá trị khóa và một khoảng thời gian liên tục T, tìm tất cả các

đối tượng với khóa nằm trong tầm đã cho và vẫn còn sống trong suốt khoảng

thời gian T

• (III): Cho một tầm khóa tìm lịch sử của các đối tượng trong tầm

Một trường hợp đặc biệt của lớp (I) là khi khoảng thời gian T rút gọn thành một thời gian giao tác t Câu truy vấn này được gọi là transaction pure timeslice Trong ví

dụ về nhân sự của một công ty câu truy vấn loại này sẽ có dạng “tìm tất cả các nhân viên đang làm việc cho công ty ở thời điểm t” Thông thường, một phương pháp truy đạt dữ liệu giải quyết một cách hiệu quả câu truy vấn timeslice thì cũng giải quyết hiệu

quả câu truy vấn khoảng tổng quát hơn; vì vậy, chúng ta có thể dùng câu truy vấn

timeslice như một đại diện của các câu truy vấn lớp (I)

Tương tự đối với lớp (II), trường hợp đặc biệt bao gồm sự rút gọn kết hợp giữa tầm khóa và/hoặc khoảng thời gian giao tác, tương ứng thành một khóa và một thời điểm giao tác Để đơn giản, chúng ta chỉ xem xét trường hợp đại diện khi khoảng thời

Trang 31

gian rút gọn thành một điểm thời gian giao tác; đó là câu truy vấn transaction timeslice (“tìm tất cả nhân viên đang làm việc trong công ty ở thời điểm t và mã nhân viên nằm trong tầm khóa K”)

range-Lớp (III) chúng ta chọn trường hợp đặc biệt khi tầm khóa rút gọn thành một giá

trị khóa duy nhất: “Tìm lịch sử lương của nhân viên có mã số k” Câu truy vấn này được gọi là transaction pure-key Trường hợp đặc biệt của câu truy vấn này là câu truy vấn pure-key: “Tìm lịch sử lương của nhân viên có mã số k và làm việc ở thời điểm t”

Các câu truy vấn thuộc lớp (I) có thể được xem là một trường hợp đặc biệt của lớp (II) khi không có tầm khóa được chỉ ra và lớp (III) là một trường hợp đặc biệt của lớp (II) khi không có khoảng thời gian được chỉ ra (tất cả thời gian trong lịch sử đều được quan tâm)

Đối với CSDL thời gian hợp lệ ta có thể định nghĩa một cách đơn giản valid-time pure timeslice (“tìm tất cả các hợp đồng hợp lệ ở thời gian t”), valid-time range- timeslice (“tìm tất cả các hợp đồng với số thứ tự nằm trong khoảng K và hợp lệ ở thời điểm v”), … Một CSDL song thời gian chấp nhận các câu truy vấn trong cả hai chiều thời gian: “tìm tất cả các hợp đồng đã hợp lệ vào thời điểm v = ngày 1 tháng 1 năm

1994 và đã được ghi vào CSDL ở thời điểm giao tác t = ngày 1 tháng 3 năm 1993”

Từ tất cả các hợp đồng trong tập C(t) cho thời điểm t = ngày 1 tháng 3 năm 1993, phép

truy vấn chỉ đưa ra các hợp đồng hợp lệ vào ngày 1 tháng 1 năm 1994

Việc chọn các lớp truy vấn trên thì không hoàn toàn đầy đủ, nhưng chứa đựng những lớp truy vấn cơ bản Đặc biệt, các lớp (I) và lớp (II) liên quan đến các câu truy

vấn dựa trên phép lấy giao (intersect), kết quả bao gồm các đối tượng mà khoảng thời

gian của nó chứa một số điểm thời gian hay một cách tổng quát giao với khoảng thời gian truy vấn

Để phân biệt giữa các câu truy vấn thời gian khác nhau, một kí hiệu ba-phần-tử,

tên là: Key/Valid/Transaction, sẽ được dùng Mỗi phần tử sẽ là một trong các giá trị

“point”, “range”, “*”, “-” Một “point” cho một phần tử Key nghĩa là người dùng chỉ ra một giá trị đơn lẻ để so trùng với khóa của đối tượng; “point” cho một phần tử Transaction hay Valid ám chỉ một điểm thời gian riêng rẻ được chỉ định trong miền thời gian giao tác hay thơi gian hợp lệ “range” biểu diễn một khoảng các giá trị khóa đặc biệt đối với phần tử Key, hay, một khoảng thời gian đối với các phần tử Valid/Transaction Một “*” nghĩa là bất cứ một giá trị nào cũng được chấp nhận đối

với phần tử này, trong khi “-“ có nghĩa là phần tử này không được dùng trong câu truy

vấn này Ví dụ, “*/-/point” kí hiệu cho truy vấn transaction pure-timeslice,

“range/point/-” là truy vấn valid range-timeslice và “point/-/*” là truy vấn transaction pure-key Đối với CSDL song thời gian câu truy vấn “Tìm tất cả hợp đồng của công ty hợp lệ ở thời điểm v = ngày 1 tháng 5 năm 1994, và được lưu vào trong CSDL suốt khoảng thời gian giao tác T: ngày 1 tới ngày 20 tháng 5 năm 1993” là một ví dụ của một câu truy vấn “*/point/range” Kí hiệu ba-phần-tử này thỏa mãn các câu truy vấn

dựa trên phép giao và có thể mở rộng để biểu diễn tất cả các loại câu truy vấn Từ thời điểm này trở về sau, luận văn này cũng sử dụng kí hiệu này để biểu diễn các câu truy vấn

Trang 32

2.2.2 Các loại chi phí của một phương pháp truy đạt dữ liệu

Hiệu năng của một phương pháp truy đạt dữ liệu được đánh giá trên ba loại chi phí:

• Không gian lưu trữ được dùng để lưu trữ một cách luận lí các bản ghi dữ liệu và cấu trúc dữ liệu của phương pháp truy đạt dữ liệu đó

• Chi phí xử lí cập nhật dữ liệu (thời gian cập nhật cấu trúc dữ liệu của phương pháp về các sự thay đổi đã diễn ra)

• Chi phí I/O cho mỗi một câu truy vấn cơ bản

Một phương pháp truy đạt dữ liệu có hai chế độ hoạt động: trong chế độ cập nhật, dữ liệu được thêm vào, thay thế hay xóa đi; trong khi chế độ truy vấn, các câu

truy vấn được đưa ra và được trả lời bằng các phương pháp truy đạt dữ liệu Đối với một phương pháp truy đạt dữ liệu thời gian giao tác đầu vào cho một cập nhật bao gồm

một thời điểm t và tất cả các sự thay đổi xảy ra trên dữ liệu tại điểm thời gian đó Một

sự thay đổi được chỉ ra bởi một khóa định danh của đối tượng mà nó tác dụng và loại thay đổi (thêm vào, xóa, hay thay đổi các thuộc tính) Cấu trúc dữ liệu của phương pháp truy đạt dữ liệu sẽ được cập nhật để thêm vào sự thay đổi mới này Tương tự đối với đầu vào của một phương pháp truy đạt dữ liệu song thời gian trong khi thời gian của sự thay đổi cũng được chỉ ra cùng với những sự thay đổi và các đối tượng khoảng thời gian bị tác dụng Đầu vào của một phương pháp truy đạt thời gian hợp lệ chỉ đơn thuần chứa các sự thay đổi và các đối tượng khoảng thời gian bị tác dụng

Đối với một phương pháp truy đạt thời gian giao tác hay song thời gian, không

gian lưu trữ là một hàm số của n, tổng số thay đổi trong một quá trình phát triển, n là

tổng của các thao tác truy cập thêm vào, xóa đi, hay cập nhật Nếu có 1000 thay đổi

trên một bản ghi thì n bằng 1000 Nếu có 1000 thao tác thêm vào một CSDL trống và không có các thao tác xóa cũng như cập nhật giá trị, thì n cũng bằng 1000 Tương tự, đối với 1000 thao tác thêm vào theo sau bởi 1000 thao tác xóa, n bằng 2000 Chúng ta giả sử rằng tổng số các thực thể thao tác là O(n) Đây là một giả định thực tế bởi vì

mỗi một hệ thống máy tính có thể xử lí một số lượng lớn nhưng có giới hạn các thao tác cập nhật trong một giao tác

Trong một phương pháp thời gian hợp lệ không gian lưu trữ là hàm số của l, số

lượng các đối tượng khoảng đang được lưu trữ trong phương pháp Ví dụ, trong Hình

có thể được dùng ngay cả với một ứng dụng thường xuyên thay đổi dữ liệu Thêm vào

đó, thời gian truy đạt nhanh sẽ làm dễ dàng việc ứng dụng các dữ liệu hướng thời gian

Trang 33

2.2.3 Sự phân trang chỉ mục (Index Pagination) và sự gom cụm dữ liệu (data clustering)

Đối với một phương pháp truy đạt dữ liệu thứ cấp, chi phí tính toán không dựa trên bao nhiêu phần tử nhớ sẽ được truy xuất hay bao nhiêu phép so sánh sẽ phải thực hiện nhưng thay vào đó, nó dựa trên bao nhiêu trang sẽ được đọc giữa bộ nhớ chính và vùng nhớ phụ Trong trường hợp này, các bó dữ liệu được lưu trữ trong bộ nhớ thứ cấp đóng vai trò cực kì quan trọng Do đó, chúng ta sẽ dùng chi phí I/O, đo số lần truy xuất đĩa cho quá trình cập nhật và trả lời truy vấn Hai khái niệm liên quan đến chi phí I/O

được xem xét tiếp theo là sự phân trang chỉ mục và sự gom cụm dữ liệu

Sự phân trang chỉ mục có liên quan đến việc các nút chỉ mục của một phương pháp được phân trang tốt như thế nào Bởi vì chỉ mục được dùng để tăng tốc quá trình tìm kiếm cho việc cập nhật và truy xuất dữ liệu, sự phân trang của nó có tác dụng cực

kì lớn tới hiệu năng của một phương pháp Ví dụ, một cây B+ là một chỉ mục được

phân trang tốt ví nó tốn O(log b n) lần truy đạt đĩa cho việc tìm kiếm hay cập nhật n đối tượng, dùng kích thước trang là b

Việc gom cụm dữ liệu cũng nâng cao hiệu năng của một phương pháp truy đạt dữ liệu Nếu các bản ghi dữ liệu mà có quan hệ “một cách luận lý” đối với một câu truy vấn cho trước cũng được lưu trữ gần nhau trong vật lý, thì câu truy vấn đó được tối ưu

vì ít trang hơn được truy cập Ví dụ một phương pháp truy đạt dữ liệu gom cụm dữ

liệu theo một cách nào đó mà có thể trả lời câu truy vấn pure-timeslice thời gian giao tác tốn O(log b n + a/b) truy đạt đĩa Phương pháp này được xem là tốt hơn một phương pháp khác trong việc giải quyết câu truy vấn tương tự trong O(log b n + a) truy xuất đĩa

Cả hai phương pháp đều dùng chỉ mục được phân trang tốt (có cùng giá trị loga) Tuy nhiên, trong phương pháp thứ hai mỗi bản ghi dữ liệu thuộc về tập kết quả có thể được lưu trữ trong các trang riêng biệt, do đó đòi hỏi số lượng các truy vấn trang nhiều hơn nhiều cho việc giải quyết truy vấn

Dữ liệu có thể được gom cụm chỉ bằng giá trị thời gian, tất cả các bản ghi dữ liệu

mà “còn sống” trong cùng một khoảng thời gian thì được lưu trữ cùng một chỗ, hoặc

cả bằng thời gian và khóa, hay chỉ bằng khóa Lưu ý là một chiến thuật gom cụm tối

ưu đối với một lớp các câu truy vấn này thì có thể không hoạt động tốt đối với một lớp

khác Ví dụ, một chiến thuật gom cụm tốt cho các truy vấn pure-key sẽ chứa tất cả các

phiên bản của một khóa riêng biệt trong cùng một trang; mặc dù vậy chiến thuật này sẽ

không hoạt động đối với các câu truy vấn pure-timeslice bởi vì mục tiêu gom cụm

khác nhau

Thông thường gom cụm khó thực hiện hơn đối với phương pháp truy đạt dữ liệu thời gian hợp lệ bởi vi các hành vì động của nó Câu trả lời cho một câu truy vấn thời

gian hợp lệ phụ thuộc vào tập các interval-object đang được lưu trữ trong phương pháp

truy đạt; tập này thay đổi khi các cập nhật thời gian hợp lệ có hiệu lực Ngay cả khi một vài sự gom cụm tốt đang đạt được trên tập dữ liệu cũng có thể không còn hiệu lực nữa đối với tập tiếp theo sau khi có sự cập nhật thời gian hợp lệ trên các tập cũ Ngược lại, trong các phương pháp truy đạt dữ liệu thời gian giao tác hay song thời gian mà quá khứ không đổi, hiệu quả của việc gom cụm dữ liệu có thể được duy trì dễ dàng hơn, bất chấp các cập nhật

Trang 34

2.2.4 Chặn dưới của độ phức tạp I/O

Đầu tiên chúng ta đưa ra chặn dưới của độ phức tạp các câu truy vấn cơ bản thời

gian giao tác Chặn dưới áp dụng cho các câu truy vấn thời gian giao tác timeslice (“*/-/point”), range-timeslice (“range/-/point”), và pure-key (“point/- /range”) Bất cứ phương pháp nào giải quyết một câu truy vấn với không gian nhớ tuyến tính (O(n/B)) cần ít nhất Ω(log B n + a/B) để giải quyết nó B

pure-Bởi vì a phụ thuộc vào kích thước tập kết quả, không có phương pháp nào giải quyết tố hơn O(a/B) I/O để đưa ra kết quả; a/B là số trang tối thiểu chứa các kết quả

Do đó chúng ta chỉ để ý tới phần loga của ràng buộc

Chặn dưới được nêu trên cho thời gian truy vấn của các phương pháp dùng không gian nhớ tuyến tính, không bị ảnh hưởng bởi quá trình cập nhật dữ liệu Nếu các

phần tử của tập P có thứ tự, phần tử này sau phần tử kia, tốn thời gian O(1) cho mỗi

phần tử để tạo một chỉ mục trên tập Nếu tập này không có thự tự, chi phí này sẽ là O(logBN) cho mỗi lần thêm vào một phần tử mới Đối với truy vấn thời gian giao tác pure-timeslice thời gian luôn tăng và O(1) cho mỗi cập nhật là đủ và đây là giá trị nhỏ nhất Do đó, chúng ta gọi một phương pháp tối ưu I/O cho truy vấn thời gian giao tác pure-timeslice nếu nó đạt được không gian nhớ O(n/B) và thời gian truy vấn O(log B n + a/B) tốn thời gian cập nhật hằng số

Tương tự, đối với truy vấn thời gian giao tác range-timeslice (“range/-/point”),

chúng ta gọi một phương pháp là tối ưu I/O nếu nó đạt được thời gian truy vấn

O(log B n + a/B), không gian bộ nhớ O(n/B) và chi phí cập nhật O(log B m) mỗi thay đổi,

m là số đối tượng “còn sống” khi cập nhật xảy ra Quá trình xử lý có thời gian tính

toán tỉ lệ lg

a bởi vì truy vấn range-timeslice đòi hỏi các khóa được sắp thứ tự

Đối với các truy vấn song thời gian, các cận dưới cũng tương tự bởi vì chúng phức tạp hơn các truy vấn thời gian giao tác Nếu nhìn từ góc độ truy vấn một CSDL thời gian hợp lệ và một thời gian giao tác đều là tập hợp các khoảng, thì một chận dưới tương tự được áp dụng đối với một câu truy vấn thời gian hợp lệ tương ứng (bằng cách

thay thế n bởi l) Ví dụ, bất kì thuật toán nào giải quyết truy vấn “*/point/-” trong không gian nhớ O(l/B) cần ít nhất Ω(log B l + a/B) thời gian truy vấn I/O B

2.3 Cấu trúc dữ liệu đa phiên bản

Cấu trúc đa phiên bản cây B được giới thiệu lần đầu tiên bởi nhóm của Becker và Seeger trong bài báo [2] Đây là cấu trúc dữ liệu có chi phí về thời gian (cập nhật, truy vấn) và không gian (lưu trữ) tối ưu tiệm cận với cây B (đơn phiên bản) trong trường hợp xấu nhất (worst case) Cấu trúc đa phiên bản cây B là một đồ thị có hướng không nối vòng (directed acyclic graph), được phát triển dựa trên cấu trúc truy đạt dữ liệu đa

phiên bản và dữ liệu được lưu trong các thiết bị lưu trữ ngoại Các thay đổi trong cấu trúc này chỉ xảy ra cho các dữ liệu hiện hành, trong khi các câu truy vấn có thể được

thực hiện trên bất cứ phiên bản nào, hiện tại hay quá khứ (được gọi là các cấu trúc dữ liệu liên tục bán phần (partially persistent data structure)) Ngoài các thao tác từ điển (dictionary operations) như thêm vào, xóa đi, truy vấn so trùng chính xác (exact match query), cấu trúc cây B đa phiên bản còn hỗ trợ các câu truy vấn tầm (range query)

Do trong cùng một khối (block) có thể chứa nhiều quảng đời (lifespan) của các phần tử (item) khác nhau nên thông tin về phiên bản thêm vào (insertion version) và

Trang 35

phiên bản bị xóa (deletion version) được lưu trữ cùng với phần tử tương ứng <key, in_version, del_version, info> kí hiệu cho một phần tử dữ liệu, được lưu trữ trong nút

lá (leaf), với một khóa key là duy nhất trong bất kì phiên bản đã có, một dữ liệu info tương ứng, một quảng đời từ phiên bản thêm vào in_version tới phiên bản nó bị xóa del_version Tương tự, một phần tử trong một nút nội (inner node) của cây được kí hiệu <router, in_version, del_version, reference>; router cùng với các thông tin in_version và del_version hướng dẫn tìm kiếm các thông tin của các dữ liệu trong cây con được tham chiếu bởi reference

Một phần tử dữ liệu được xem là thuộc phiên bản i nếu quãng đời của nó chứa i (in_version <= i <= del_version) Một phần tử dữ liệu được xem là sống (alive) nếu

nó chưa bị sao chép và bị xem là chết trong trường hợp ngược lại

Các khái niệm cơ bản, các thao tác cập nhật dữ liệu cũng như các đặc điểm của

cây B đa phiên bản sẽ lần lượt trình bày trong các phần bên dưới

2.3.1 Các thông số của một cấu trúc đa phiên bản:

- b: số phần tử dữ liệu tối đa trong một khối (block)

- d: số phần tử dữ liệu tối thiểu thuộc trạng thái hiện tại trong một khối nếu nút

này không phải là nút gốc

- k: hệ số, b = k d

- strong_b: số phần tử thuộc trạng thái hiện hành tối đa trong một nút sau khi

chia nút theo phiên bản (thời gian)

- strong_d: số phần tử thuộc trạng thái hiện hành tối thiểu trong một nút sau khi

chia nút theo phiên bản (thời gian)

- N là số thao tác cập nhật dữ liệu (thêm hay xóa) từ lúc bắt đầu tới thời điểm

2.3.2 Các thao tác dữ liệu cơ bản trên cấu trúc đa phiên bản:

• Thêm dữ liệu (Hình 2.7): insert(key, info):

Thêm một bộ dữ liệu với khóa key, và thành phần thông tin info vào trong phiên bản hiện tại Một phần tử dữ liệu <key, i, *, info> sẽ được thêm vào cây, với i là phiên

bản hiện hành và * để kí hiệu là phần tử này vẫn chưa bị xóa

Hành động này tạo ra một phiên bản mới và có thể làm thay đổi cấu trúc cây

• Xoá dữ liệu (Hình 2.13): Delete(key):

Xoá duy nhất một bộ dữ liệu có khoá key khỏi phiên bản hiện tại Phần tử dữ liệu

<key, i, *, info> sẽ được cập nhật * bằng j, với j là phiên bản hiện hành

Hành động này tạo ra một phiên bản mới và có thể làm thay đổi cấu trúc cây

• Truy vấn so trùng chính xác: Exact_match_query(key, version):

trả về (duy nhất) bộ dữ liệu có khoá là key trong phiên bản version

Trang 36

Hành động này không tạo ra một phiên bản mới và không làm thay đổi cấu trúc

cây

• Truy vấn tầm: Range query(lowkey, highkey, version):

trả về tất cả các bộ dữ liệu có khoá nằm giữa lowkey và highkey của phiên bản version

Hành động này không tạo ra một phiên bản mới và không làm thay đổi cấu trúc

cây

2.3.3 Các khái niệm đặc trưng của cấu trúc đa phiên bản

• Điều kiện về số phần tử dữ liệu trong một khối

ƒ Tràn trên khối (block overflow):

Xảy ra khi một nút có nhiều hơn b bộ dữ liệu (khi thêm một bộ dữ liệu vào nút đã

có b bộ dữ liệu)

ƒ Tràn dưới khối (block underflow)

Vì trong cây đa phiên bản, dữ liệu không thật sự bị xóa khỏi CSDL (mà chỉ cập

nhật phiên bản bị xóa của dữ liệu) nên trường hợp này không bao giờ xảy ra

Điều kiện phiên bản yếu (weak version condition):

Gọi n lá số bộ dữ liệu trong một nút, trừ nút gốc ta luôn có:

d n hay n = 0

ƒ Tràn dưới phiên bản yếu (weak version underflow):

Xảy ra khi một nút có ít hơn d bộ dữ liệu thuộc phiên bản hiện hành

Xảy ra khi ta xóa một bộ dữ liệu trong một nút đang có d bộ dữ liệu thuộc phiên

bản hiện hành

Điều kiện phiên bản mạnh (strong version condition):

Để tránh việc chia nút và hợp nút diễn ra quá thường xuyên, cần tuân theo điều

kiện sau: Ngay sau khi thực hiện quá trình chia nút theo phiên bản, số bộ dữ liệu

thuộc phiên bản hiện hành phải nằm trong khoảng (1 + ε)* d và (k - ε)*d Trong đó:

ƒ Tràn dưới phiên bản mạnh (strong version underflow):

Nếu sau khi chia nút theo phiên bản, số phần tử thuộc phiên bản hiện hành nhỏ

hơn strong_d =(1 + ε)* d

Xảy ra khi thêm một bộ dữ liệu vào một nút đã có b phần tử dữ liệu và trong đó

số phần tử thuộc phiên bản hiện hành nhỏ hơn strong_d -1

ƒ Tràn trên phiên bản mạnh (strong version overflow):

Trang 37

Nếu sau khi chia nút theo phiên bản mà số bộ dữ liệu của thời điểm hiện hành lớn hơn

strong_b = (k - ε)*d

Xảy ra khi thêm một bộ dữ liệu vào một nút đã có b phần tử dữ liệu và trong đó

có strong_b phần tử thuộc phiên bản hiện hành

• Chia nút và hợp nút

ƒ Chia nút theo phiên bản(version split) - Hình 2.5a:

Hành động này xảy ra khi một nút bị tràn trên Các thao tác:

o Chép tất cả các bộ dữ liệu của phiên bản hiện hành A qua một nút mới, nút mới này có cùng cha với A.

o Xóa A trong phiên bản hiện hành.

ƒ Chia nút theo khóa (Key split) - Hình 2.5b:

Hành động này xảy ra khi một nút đã chia nút theo phiên bản và vi phạm điều kiện tràn trên phiên bản mạnh Thao tác:

o Chia số phần tử của một nút thành hai phần (thường là bằng nhau), các nút này có cùng cha

Trang 38

2.3.4 Giải thuật chi tiết hai thao tác cập nhật dữ liệu

• Lược đồ hai thao tác cập nhật dữ liệu được trình bày trong Hình 2.6 và Hình 2.8

Hình 2.6 Hai thao tác cập nhật dữ liệu

• Giải thuật cho các thao tác cập nhật dữ liệu

ƒ Thêm dữ liệu – Insert:

Đầu vào:

k: khóa của phần tử được thêm vào

info: dữ liệu tương ứng với khóa k

Đầu ra:

Giải thuật: mã giả được trình bày trong Hình 2.7

Hình 2.7 Giải thuật thêm dữ liệu

Trang 39

Hình 2.8 Thao tác hợp nút

ƒ Thêm một bộ dữ liệu vào nút – Blockinsert:

Đầu vào:

A: nút được thêm vào

k: khóa của dữ liệu được thêm vào

i: phiên bản hiện hành

info: dữ liệu tương ứng với phần tử này

Đầu ra:

Phần tử dữ liệu được thêm vào cây nếu thành công.

Giải thuật: mã giả được trình bày trong Hình 2.9

Trang 40

Hình 2.9 Giải thuật thêm một bộ dữ liệu vào một nút

ƒ Hợp nút – Merge:

Đầu vào:

B: nút sẽ được hợp

Đầu ra:

Hai nút mới được sinh ra

Giải thuật: mã giả được trình bày trong Hình 2.10

Hình 2.10 Giải thuật hợp nút

Ngày đăng: 16/02/2021, 18:44

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm