ðể giải quyết vấn ñề này, chúng tôi ñề nghị xây dựng lớp phần mềm hỗ trợ một mô hình quản lý vấn ñề ña phiên bản hướng thời gian thích hợp, các ngôn ngữ ñịnh nghĩa lớp, truy vấn và thao
Trang 1LỜ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 chúng 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
Tp.HCM, ngày 26 tháng 2 năm 2009
ðỗ Thục ðoan
Trang 2Con xin cảm ơn Ba Mẹ và gia ñình ñã nuôi nấng và dạy dỗ cho con có ñược ngày hôm nay
Trang 3TÓM TẮT
Có nhiều ứng dụng cần quản lý các phiên bản khác nhau của ñối tượng và sự thay ñổi các thuộc tính và mối quan hệ của các phiên bản ñó theo thời gian, chẳng hạn như các ứng dụng thiết kế, sản xuất, xây dựng phần mềm có sự trợ giúp của máy tính Việc xây dựng các ứng dụng này sẽ rất phức tạp nếu không có sự hỗ trợ từ hệ quản trị cơ sở
dữ liệu Hiện nay, không có một hệ quản trị cơ sở dữ liệu nào có khả năng quản lý vấn
ñề ñó và việc xây dựng từ ñầu một hệ quản trị như vậy rất phức tạp và tốn kém ðể giải quyết vấn ñề này, chúng tôi ñề nghị xây dựng lớp phần mềm hỗ trợ một mô hình quản
lý vấn ñề ña phiên bản hướng thời gian thích hợp, các ngôn ngữ ñịnh nghĩa lớp, truy vấn và thao tác dữ liệu trên một hệ quản trị cơ sở dữ liệu Qua khảo sát các mô hình ñã
có, ñề tài này chọn xây dựng trên Oracle một lớp phần mềm hỗ trợ mô hình ña phiên bản hướng thời gian Temporal Versions Model ñồng thời khắc phục hạn chế của các ngôn ngữ ñịnh nghĩa lớp, truy vấn và thao tác dữ liệu sẵn có Với lớp phần mềm này, người dùng có thể ñịnh nghĩa lớp, truy vấn, thao tác với dữ liệu, ñáp ứng yêu cầu của các ứng dụng cần quản lý các phiên bản của ñối tượng và sự thay ñổi các thuộc tính và mối quan hệ của các phiên bản ñó theo thời gian
Trang 4ABSTRACT
There are many applications that need to manage different versions of an object and any changes about attributes and relationships of those versions in chronological order, such as Computer Aided Design, Computer Aided Manufacturing, Computer Aided Software Engineering The development of these applications will be very complicated
if it is not supported by an appropriate Database Management System At present, there
is not any Database Management System that is able to manage that problem and the building of such a system from the beginning is very complicated and expensive To solve this problem, we suggest building a layer which supports an appropriate model can manage temporal and multiversion issues, class definition language, query language, data manipulation language on top of a commercial Database Management System After making a survey on the existing models, this thesis has decided to build
a layer on Oracle in order to support the Temporal Versions Model and overcome the limitations of inherent class definition language, query language, data manipulation language at the same time With this layer, users can define, query and manipulate on data, satisfying requirement of applications that need to manage different versions of
an object and any changes about attributes and relationships of those versions in chronological order
Trang 5
MỤC LỤC
LỜI CAM ðOAN i
LỜI CẢM ƠN ii
TÓM TẮT iii
ABSTRACT iv
MỤC LỤC v
DANH MỤC HÌNH vii
CHƯƠNG 1 GIỚI THIỆU 1
1.1 Tổng quan 1
1.2 Kết quả ñạt ñược 3
1.3 Cấu trúc của luận văn 4
CHƯƠNG 2 CƠ SỞ LÝ THUYẾT VÀ TỔNG QUAN VỀ CÁC CÔNG TRÌNH LIÊN QUAN 5
2.1 Cơ sở lý thuyết 5
2.2 Tổng quan về các công trình liên quan 12
CHƯƠNG 3 CÁC CẢI TIẾN ðỀ NGHỊ 36
3.1 Xử lý mối quan hệ giữa các thành phần trong cơ sở dữ liệu 36
3.2 Xác ñịnh các ràng buộc toàn vẹn thời gian vốn có của mô hình 43
3.3 Cải tiến các ngôn ngữ 47
3.4 ðặc tả ngữ nghĩa tác vụ của các ngôn ngữ 54
3.5 Các hàm bổ sung 76
CHƯƠNG 4 KIẾN TRÚC LỚP PHẦN MỀM 85
4.1 Kiến trúc ñề nghị 85
4.2 Module xử lý ñịnh nghĩa lớp 88
4.3 Module xử lý câu truy vấn 89
4.4 Module xử lý các lệnh thao tác dữ liệu 91
CHƯƠNG 5 ỨNG DỤNG QUẢN LÝ CÔNG TY THIẾT KẾ NỘI THẤT 92
5.1 Mô tả ứng dụng 92
5.2 Sơ ñồ lớp 93
5.3 ðịnh nghĩa lớp 94
5.4 Thao tác trên dữ liệu 96
5.5 Truy vấn 101
CHƯƠNG 6 KẾT LUẬN 104
6.1 Kết quả ñề tài 104
Trang 66.2 Hướng phát triển 107
TÀI LIỆU THAM KHẢO 108
PHỤ LỤC A ÁNH XẠ MÔ HÌNH TVM VÀO CƠ SỞ DỮ LIỆU QUAN HỆ 112
PHỤ LỤC B ÁNH XẠ NGÔN NGỮ TVQL VÀO NGÔN NGỮ SQL 114
PHỤ LỤC C BẢNG THUẬT NGỮ VIỆT-ANH 118
Trang 7DANH MỤC HÌNH
Hình 2-1 Hệ thống kiểu cơ bản của TIGUKAT 16
Hình 2-2 Hệ thống kiểu cơ bản bổ sung các kiểu thời gian trừu tượng 16
Hình 2-3 Hệ thống phân cấp các lớp cơ sở của mô hình TVM 26
Hình 2-4 Lược ñồ trạng thái của một phiên bản 27
Hình 4-1 Kiến trúc lớp phần mềm ñược ñề xuất 86
Hình 4-2 Cách thức chuyển ñổi các lệnh ñịnh nghĩa lớp 89
Hình 4-3 Cách thức chuyển ñổi câu truy vấn TVQL 90
Hình 4-4 Cách thức chuyển ñổi các lệnh thao tác dữ liệu 91
Hình 5-1 Sơ ñồ lớp của ứng dụng 93
Trang 8CHƯƠNG 1 GIỚI THIỆU
1.1 Tổng quan
Trong các ứng dụng như thiết kế có sự trợ giúp của máy tính (Computer Aided Design
- CAD), sản xuất có sự trợ giúp của máy tính (Computer Aided Manufacturing -
CAM), công nghệ xây dựng phần mềm có sự trợ giúp của máy tính (Computer Aided
Software Engineering - CASE)…, người dùng cần xem xét các phiên bản (version)
khác nhau của ñối tượng Các phiên bản của một ñối tượng thể hiện các trạng thái kế
tiếp nhau trong quá trình phát triển của thực thể mà ñối tượng ñó mô hình hoặc thể hiện
các biến thể khác nhau của ñối tượng Chẳng hạn, trong ứng dụng CASE, một chương
trình nguồn có thể có nhiều phiên bản tương ứng với các sản phẩm thương mại liên tiếp
của chương trình ñó Ngoài ra, chương trình nguồn còn có thể có nhiều phiên bản ứng
với các biến thể chương trình hoạt ñộng trong các hệ ñiều hành khác nhau Việc quản
lý vấn ñề ña phiên bản (multiversion) có thể ñược thực hiện ở mức ứng dụng hoặc ở
mức hệ quản trị cơ sở dữ liệu (DataBase Management System - DBMS) Nếu vấn ñề ña
phiên bản ñược giải quyết ở mức DBMS thì nhà phát triển chỉ cần tập trung vào việc
xây dựng ứng dụng Ngược lại, nếu vấn ñề ña phiên bản không ñược giải quyết ở mức
DBMS thì gánh nặng ñặt lên vai nhà phát triển sẽ rất lớn vì vừa xây dựng ứng dụng
vừa phải tự quản lý vấn ñề ña phiên bản Thực tế ñó ñặt ra yêu cầu DBMS hỗ trợ các
loại ứng dụng ñặc biệt kể trên phải quản lý ñược vấn ñề ña phiên bản
Thời gian là một yếu tố quan trọng ñối với các hiện tượng xảy ra trong thế giới thực,
chẳng hạn các sự kiện xảy ra tại một thời ñiểm cụ thể, ñối tượng và mối quan hệ giữa
các ñối tượng tồn tại trong một khoảng thời gian nhất ñịnh Trong nhiều ứng dụng như
Trang 9chăm sóc sức khỏe, bảo hiểm, tài chắnh, quản lý thông tin cá nhân, ngân hàngẦ, cần phải lưu trữ và quản lý sự thay ựổi của dữ liệu theo thời gian Nếu không có sự hỗ trợ
từ DBMS thì nhà phát triển chương trình ứng dụng phải tự quản lý dữ liệu thay ựổi theo thời gian
đối với các ứng dụng cần quản lý các phiên bản khác nhau của ựối tượng ựồng thời phải quản lý sự thay ựổi các thuộc tắnh và mối quan hệ của các phiên bản ựó theo thời gian thì ựộ phức tạp của ứng dụng sẽ càng tăng khi không có sự hỗ trợ từ DBMS Hiện nay, vấn ựề ựa phiên bản chỉ ựược SQL Server [6] và Oracle [21] hỗ trợ ở mức bộ / ựối tượng cho phép quản lý ựồng thời nhiều phiên bản khác nhau của các hàng trong bảng Vấn ựề quản lý thời gian cũng chỉ ựược Oracle hỗ trợ ở mức gán nhãn thời gian cho các bộ / ựối tượng, chưa quản lý ựược sự thay ựổi của các thuộc tắnh và mối quan hệ theo thời gian [22] Như vậy, chưa có một DBMS nào có khả năng hỗ trợ quản lý các phiên bản khác nhau của ựối tượng cũng như sự thay ựổi các thuộc tắnh và mối quan hệ của các phiên bản ựó theo thời gian Việc xây dựng từ ựầu một DBMS như vậy rất
phức tạp và tốn kém Vì vậy, hướng giải quyết ựược ựặt ra là xây dựng lớp phần mềm
hỗ trợ một mô hình quản lý vấn ựề ựa phiên bản hướng thời gian thắch hợp cùng với các ngôn ngữ ựịnh nghĩa lớp, truy vấn và thao tác dữ liệu trên DBMS
đã có nhiều nghiên cứu riêng cho từng loại mô hình: các mô hình cơ sở dữ liệu ựa phiên bản (multiversion database) quản lý ựồng thời nhiều phiên bản của các thành phần trong cơ sở dữ liệu và các mô hình cơ sở dữ liệu hướng thời gian (temporal
database) quản lý sự thay ựổi theo thời gian của các thành phần Tuy nhiên chỉ có rất ắt nghiên cứu kết hợp cả hai mô hình [8, 19, 28] Trong các mô hình, mô hình ựa phiên bản hướng thời gian (Temporal Versions Model Ờ TVM) [19] thắch hợp với yêu cầu hơn so với các mô hình khác Mô hình cho phép quản lý các phiên bản của ựối tượng
và sự thay ựổi các thuộc tắnh của các phiên bản ựó theo thời gian, các ngôn ngữ ựịnh nghĩa lớp, truy vấn và thao tác dữ liệu cũng thân thiện với người dùng Nhóm nghiên
Trang 10cứu của trường Federal University of Rio Grande do Sul (Brazil) ñang hiện thực trên
DB2 mô hình TVM và các ngôn ngữ liên quan ñể giải quyết vấn ñề ña phiên bản
hướng thời gian, trong ñó có xem xét sự tiến hóa của lược ñồ cơ sở dữ liệu Tuy nhiên,
các ngôn ngữ này còn các hạn chế sau:
• Các ngôn ngữ truy vấn và cập nhật dữ liệu chỉ mới xem xét các thuộc tính, chưa
xem xét mối quan hệ giữa các thành phần trong cơ sở dữ liệu
• Cách xử lý mối quan hệ thừa kế (inheritance relationship) có thể gây ra các bất
thường (anomaly) trong cơ sở dữ liệu
• Chưa xử lý mối quan hệ bao gộp (aggregation relationship) và mối quan hệ cấu
thành (composition relationship)
• Không thể xây dựng ñược các cấu hình có cấu trúc phức tạp
• Chưa xem xét các ràng buộc toàn vẹn thời gian vốn có của mô hình trong quá
trình thao tác dữ liệu
Mục tiêu của ñề tài này là giải quyết các hạn chế trên, ñề xuất kiến trúc cho một lớp
phần mềm hỗ trợ mô hình TVM, các ngôn ngữ ñịnh nghĩa lớp, truy vấn, thao tác dữ
liệu trên Oracle ñể quản lý vấn ñề ña phiên bản và thời gian trong các ứng dụng
1.2 Kết quả ñạt ñược
ðề tài ñã xây dựng ñược trên Oracle một lớp phần mềm hỗ trợ mô hình TVM, khắc
phục hạn chế của các ngôn ngữ ñịnh nghĩa lớp, truy vấn và thao tác dữ liệu Với lớp
phần mềm ñã xây dựng, người dùng có thể ñịnh nghĩa lớp, truy vấn, thao tác với dữ
liệu, ñáp ứng yêu cầu của các ứng dụng cần quản lý các phiên bản của ñối tượng và sự
Trang 111.3 Cấu trúc của luận văn
Phần còn lại của luận văn ñược tổ chức như sau: Chương 2 sẽ trình bày các khái niệm
cơ bản về cơ sở dữ liệu hướng thời gian và cơ sở dữ liệu ña phiên bản, phân tích, ñánh giá các công trình nghiên cứu liên quan và chỉ ra các vấn ñề mà ñề tài sẽ tập trung giải quyết Chương 3 trình bày các ñề xuất ñể khắc phục hạn chế của các ngôn ngữ ñịnh nghĩa lớp, truy vấn và thao tác dữ liệu sẵn có Chương 4 mô tả kiến trúc của lớp phần mềm hỗ trợ mô hình TVM và các ngôn ngữ liên quan ñược xây dựng trên Oracle và cách hiện thực các module thành phần Chương 5 trình bày khả năng hỗ trợ người dùng quản lý vấn ñề ña phiên bản hướng thời gian của lớp phần mềm ñã ñược xây dựng thông qua việc quản lý một công ty thiết kế nội thất Cuối cùng, chương 6 nêu kết luận
và hướng phát triển cho ñề tài
Trang 12CHƯƠNG 2
CƠ SỞ LÝ THUYẾT VÀ TỔNG QUAN VỀ CÁC CÔNG
TRÌNH LIÊN QUAN
Chương này sẽ trình bày khái quát cơ sở lý thuyết của ñề tài: các khái niệm về cơ sở dữ
liệu hướng thời gian và cơ sở dữ liệu ña phiên bản Sau ñó chúng tôi sẽ phân tích, ñánh
giá các mô hình quản lý vấn ñề thời gian và ña phiên bản ñã có, tổng kết các vấn ñề
còn tồn tại của mỗi mô hình và chỉ ra vấn ñề mà ñề tài sẽ tập trung giải quyết Các mô
hình ñược trình bày bao gồm: mô hình OODAPLEX của Wuu và Dayal, 1993 [28],
mô hình TIGUKAT của Goralwalla và Ozsu, 1993 [14], mô hình EXTRA-V của
Sciore, 1994 [24], mô hình cơ sở dữ liệu ña phiên bản và phương pháp kiểm tra ràng
buộc toàn vẹn thời gian của Doucet, 1996 [3, 7, 8, 9], mô hình ña phiên bản hướng
thời gian của Moro, 2002 [4, 5, 13, 17, 18, 19, 20]
2.1 Cơ sở lý thuyết
2.1.1 Cơ sở dữ liệu hướng thời gian
ðịnh nghĩa
Thời gian là một yếu tố quan trọng ñối với các hiện tượng xảy ra trong thế giới thực,
chẳng hạn các sự kiện xảy ra tại một thời ñiểm nhất ñịnh, ñối tượng và mối quan hệ
giữa các ñối tượng tồn tại trong một khoảng thời gian nào ñó Vì vậy, khả năng mô
hình hóa yếu tố thời gian là cần thiết cho nhiều ứng dụng, ñặc biệt là ứng dụng trong
các lĩnh vực như: chăm sóc sức khỏe, bảo hiểm, tài chính, quản lý thông tin cá nhân,
ngân hàng…
Trang 13Cơ sở dữ liệu hướng thời gian là cơ sở dữ liệu hỗ trợ khía cạnh thời gian, không kể ñến thời gian do người dùng ñịnh nghĩa (user-defined time) [12]
Các thuật ngữ
Thứ tự thời gian (Time order) [15]
• Thứ tự tuyến tính (linear order): Thời gian ñi từ quá khứ ñến tương lai theo một cách thức có thứ tự (ordered manner)
• Thứ tự phân nhánh (branching order): Thời gian có thứ tự tuyến tính từ quá khứ ñến một ñiểm xác ñịnh, tại ñó thời gian chia thành nhiều nhánh khác nhau hướng về tương lai
Chiều thời gian (Time dimension) [12, 17]
• Thời gian hợp lệ (valid time): thời gian hợp lệ của một dữ kiện là thời gian
mà dữ kiện ñó là ñúng trong thực tế ñược mô hình hóa (modeled reality) Thời gian hợp lệ của dữ kiện luôn do người dùng cung cấp
• Thời gian giao tác (transaction time): thời gian giao tác của một dữ kiện trong cơ sở dữ liệu là thời gian mà dữ kiện ñó có mặt (current) trong cơ sở
dữ liệu và có thể ñược truy xuất Thời gian giao tác của dữ kiện do hệ thống quản lý và người dùng không thể can thiệp
Nhãn thời gian (Timestamp)
• Thời ñiểm (instant): một ñiểm nằm trên trục thời gian
• Khoảng thời gian (time interval): thời gian nằm giữa hai thời ñiểm
• Phần tử thời gian (time element): hội của hữu hạn các khoảng thời gian
Mật ñộ thời gian (Time density)
Trang 14• Rời rạc (discrete): các mô hình rời rạc về mặt thời gian ñược xem là ñẳng cấu về mặt toán học với các số tự nhiên, mỗi ñiểm thời gian chỉ có duy nhất một ñiểm thời gian kế tiếp
• Dày ñặc (dense): các mô hình dày ñặc về mặt thời gian ñược xem là ñẳng cấu về mặt toán học với các phân số, giữa hai ñiểm thời gian bất kỳ luôn tồn tại một ñiểm khác
• Liên tục (continuous): các mô hình liên tục về mặt thời gian ñược xem là ñẳng cấu về mặt toán học với các số thực, không có khoảng trống giữa các ñiểm thời gian
Các mô hình
• Cơ sở dữ liệu thời gian hợp lệ (valid time database): Cơ sở dữ liệu thời gian hợp
lệ ñược dùng ñể lưu trữ lịch sử thay ñổi của các dữ kiện theo thế giới thực Các trạng thái của cơ sở dữ liệu trong quá khứ, hiện tại và tương lai ñều ñược ghi nhận lại Người dùng cần cung cấp thời gian hợp lệ khi ñưa dữ kiện vào cơ sở
dữ liệu Khi thời gian hợp lệ ñược cập nhật thì trạng thái trước ñó của dữ kiện không ñược giữ lại nữa ðối với loại cơ sở dữ liệu này thì dữ liệu sẽ bị xóa bỏ
về mặt vật lý khi cần sửa ñổi
Ví dụ 2.1: Thông tin nhân viên Scott ñược thăng chức từ vị trí A lên vị trí C từ ngày 12-03-2001 ñược lưu trữ trong cơ sở dữ liệu thời gian hợp lệ là sai:
Trang 15Thông tin ñúng là Scott ñược thăng chức từ vị trí A lên vị trí B từ ngày
12-03-2001 Khi sai sót ñược phát hiện thì cơ sở dữ liệu sẽ ñược cập nhật như sau:
ra việc cập nhật ñồng thời vẫn lưu lại các trạng thái cũ
Ví dụ 2.2: Thông tin nhân viên Scott ñược thăng chức từ vị trí A lên vị trí C từ ngày 12-03-2001 ñược lưu trữ trong cơ sở dữ liệu thời gian giao tác là sai:
Trang 16Thông tin ñúng là Scott ñược thăng chức từ vị trí A lên vị trí B từ ngày
12-03-2001 Khi sai sót ñược phát hiện vào ngày 24-09-2001 thì cơ sở dữ liệu sẽ ñược cập nhật như sau:
vì không thể biết trước thời gian xảy ra các giao dịch tương lai Loại cơ sở dữ liệu này có yếu tố thời gian không hoàn toàn trong suốt ñối với người dùng vì thời gian hợp lệ của dữ kiện do người dùng cung cấp, còn thời gian giao tác do
hệ thống tự quản lý ðối với cơ sở dữ liệu song thời gian, khi một lệnh cập nhật
Trang 17ñược thực thi thì hệ thống sẽ ghi nhận thời gian hợp lệ của dữ kiện do người dùng cung cấp, ñồng thời sẽ ñiều chỉnh thời gian giao tác cũ và mới ñể giữ lại các thay ñổi này Vì vậy, trạng thái cũ của cơ sở dữ liệu vẫn tồn tại khi cần sửa ñổi hoặc xóa bỏ
Ví dụ 2.3: Thông tin nhân viên Scott ñược thăng chức từ vị trí A lên vị trí C từ ngày 12-03-2001 ñược lưu trữ trong cơ sở dữ liệu song thời gian là sai:
Name Position VStartDate VStopDate TStartDate TStopDate
Scott C 12-03-2001 now 24-03-2001 now
Thông tin ñúng là Scott ñược thăng chức từ vị trí A lên vị trí B từ ngày
12-03-2001 Khi sai sót ñược phát hiện vào ngày 24-09-2001 thì cơ sở dữ liệu sẽ ñược cập nhật như sau:
Name Position VStartDate VStopDate TStartDate TStopDate
Scott C 12-03-2001 now 24-03-2001 24-09-2001
Scott B 12-03-2001 now 24-09-2001 now
Với cơ sở dữ liệu này, các thay ñổi và sai sót ñược lưu trữ lại theo thời gian giao tác ñồng thời còn cung cấp thêm thông tin về thời gian hợp lệ của các dữ kiện
2.1.2 Cơ sở dữ liệu ña phiên bản
ðịnh nghĩa
Các ứng dụng thiết kế như CAD, CAM và CASE ñặt ra vấn ñề phải quản lý ñồng thời nhiều phiên bản của ñối tượng Các phiên bản của một ñối tượng thể hiện các trạng thái
Trang 18kế tiếp nhau trong quá trình phát triển của thực thể mà ñối tượng ñó mô hình hoặc thể hiện các biến thể khác nhau của ñối tượng
Cơ sở dữ liệu ña phiên bản là cơ sở dữ liệu có nhiều phiên bản của dữ liệu hay ñối tượng [8]
ðồ thị phiên bản (version graph): Các phiên bản của một ñối tượng ña phiên bản liên hệ với nhau thông qua mối quan hệ dẫn xuất, tạo thành một ñồ thị phiên bản Trong ñó, các phiên bản con là kết quả của sự dẫn xuất từ phiên bản cha, các phiên bản anh em ñược dẫn xuất từ một phiên bản cha thể hiện các biến thể khác nhau của một ñối tượng
Trạng thái của phiên bản (version state): Mỗi phiên bản có một trạng thái, thể hiện
sự bền vững của dữ liệu ñược lưu trữ trong phiên bản và các tác vụ có thể thực hiện trên phiên bản ñó Một phiên bản ở trạng thái tạm thời thì có thể thay ñổi nhưng khi
ñã ở vào trạng thái bền vững thì không ñược thay ñổi Quy ñịnh trên ñảm bảo mọi thông tin trong quá khứ luôn ñược bảo toàn Sự chuyển ñổi giữa các trạng thái cũng như các sự kiện gây ra sự chuyển trạng thái ñược biểu diễn bằng sơ ñồ trạng thái (state diagram)
Trang 19Các mô hình
Trong cơ sở dữ liệu hướng ñối tượng, căn cứ vào cấp ñộ áp dụng có 2 loại mô hình ña phiên bản [26]
• Mô hình lập phiên bản lớp (class versioning): quản lý sự tiến hóa của các lớp:
có thể thêm lớp mới, cập nhật lớp (bao gồm việc thêm, cập nhật hay xóa các thuộc tính và mối quan hệ) hay xóa lớp
• Mô hình lập phiên bản ñối tượng (object versioning): quản lý sự thay ñổi các thuộc tính và mối quan hệ trong các thể hiện của lớp Các phiên bản của một ñối tuợng chỉ khác nhau về giá trị của một số thuộc tính hay mối quan hệ
2.2 Tổng quan về các công trình liên quan
2.2.1 Mô hình OODAPLEX của Wuu và Dayal
OODAPLEX [28] là một mô hình hướng ñối tượng cho phép quản lý vấn ñề thời gian
và ña phiên bản trong cơ sở dữ liệu Phương pháp ñược sử dụng là mô hình hóa dữ liệu thay ñổi theo thời gian bằng các hàm Thời gian là kiểu dữ liệu trừu tượng Các phần tử
thời gian và phiên bản ñều là kiểu con của kiểu thời gian cơ bản point
Các ñặc trưng của mô hình
OODAPLEX là mô hình hướng ñối tượng
OODAPLEX là một mô hình hướng ñối tượng dựa trên mô hình hàm DAPLEX, dùng ñối tượng ñể mô hình hóa các thực thể Các thuộc tính của ñối tượng, mối quan hệ giữa các ñối tượng và các tác vụ trên ñối tượng ñều ñược mô hình hóa một cách thống nhất bằng các hàm áp dụng lên ñối tượng Các ñối tượng có thuộc tính và hành vi giống
Trang 20nhau ñược nhóm vào cùng một kiểu Các kiểu có thể có kiểu con hình thành một hệ thống phân cấp thừa kế
Mô hình hóa thời gian và dữ liệu thay ñổi theo thời gian
Các khái niệm thời gian ñược biểu diễn dưới dạng các kiểu trừu tượng khác nhau Kiểu
thời gian cơ bản nhất là kiểu trừu tượng point có hai toán tử: ‘=’ thể hiện phép so sánh bằng và ‘>’ thể hiện mối quan hệ về thứ tự Tập hợp các point tạo thành một kiểu ñặc biệt {point} có các tác vụ trên tập hợp: ∈,⊂,∩,∪,= Các kiểu trừu tượng khác ñược thừa
kế từ hai kiểu cơ bản này
Thời gian sống của các thành phần trong cơ sở dữ liệu là một hàm ña hình ðối số của hàm có thể là ñối tượng, kiểu hoặc chính cơ sở dữ liệu Các ràng buộc về thời gian sống ñược ñặt ra ñể ñảm bảo sự toàn vẹn thời gian của cơ sở dữ liệu tại mọi thời ñiểm Các thuộc tính, mối quan hệ và tác vụ không ñổi theo thời gian ñược mô hình hóa bằng một hàm ánh xạ từ ñối tượng ñến giá trị của ñặc tính tương ứng Các thuộc tính, mối quan hệ và tác vụ thay ñổi theo thời gian ñược mô hình hóa bằng một hàm ánh xạ từ ñối tượng vào một hàm khác, hàm này lại ánh xạ các phần tử thời gian vào các giá trị của ñặc tính tương ứng
Mô hình hóa các ñối tượng ña phiên bản
Lịch sử thay ñổi các phiên bản của ñối tượng ñược lưu trữ dưới dạng thời gian phân nhánh Các phiên bản của ñối tượng hình thành một hệ thống phân cấp, trong ñó các phiên bản con là sự dẫn xuất từ phiên bản cha và các phiên bản anh em thể hiện các biến thể khác nhau của ñối tượng
Ngôn ngữ truy vấn OODAPLEX
OODAPLEX dùng các biểu thức từ ñơn giản ñến phức tạp ñể thể hiện ñối tượng Biểu thức ñơn giản nhất là biến, hằng Biểu thức phức tạp hơn là các biểu thức hàm và biểu
Trang 21thức nhóm (tập hợp, bản ghi, danh sách) Các truy vấn trong OODAPLEX sử dụng các
cấu trúc mang tắnh thủ tục tương tự như cấu trúc vòng lặp for trong ngôn ngữ lập trình
ựể khảo sát các ựối tượng và truy xuất các thông tin cần thiết
đánh giá
Về mô hình: Hướng tiếp cận ựược ựề xuất là mô hình hóa sự thay ựổi của dữ liệu theo thời gian bằng các hàm, mô hình hóa thống nhất thời gian và phiên bản từ kiểu cơ bản
point Nhờ vậy, mô hình có khả năng xử lý thống nhất ựối tượng phức tạp và ựơn giản,
ựối tượng thay ựổi theo thời gian và không ựổi theo thời gian, ựối tượng ựa phiên bản
và ựối tượng thời gian Tuy nhiên, vì tất cả các kiểu trừu tượng về thời gian ựều bắt
nguồn từ kiểu point nên việc xây dựng các kiểu có ựộ phức tạp cao sẽ trở nên khó
khăn Ngoài ra, cách ựịnh nghĩa các kiểu trừu tượng dưới dạng tập hợp các hàm ựược
áp dụng cho các thể hiện của kiểu cũng không thân thiện với người dùng
Về ngôn ngữ truy vấn: Ngôn ngữ có khả năng diễn ựạt linh hoạt các truy vấn liên quan cũng như không liên quan ựến thời gian Tuy nhiên, người dùng cần phải nắm vững cấu trúc các hàm áp dụng cho các thể hiện của kiểu trừu tượng thì mới có thể khảo sát các ựối tượng ựể lấy ra các thông tin cần thiết
Về vấn ựề hiện thực: Mô hình OODAPLEX chưa ựược hiện thực
2.2.2 Mô hình TIGUKAT của Goralwalla và Ozsu
TIGUKAT [14] là một mô hình hướng ựối tượng cho phép quản lý vấn ựề thời gian trong cơ sở dữ liệu Mô hình cung cấp hệ thống kiểu thời gian cơ bản và các tác vụ phong phú ựể mô hình hóa các khái niệm thời gian, ựưa ra một khái niệm tổng quát về thời gian sống của ựối tượng trong bất kỳ tập hợp nào
Trang 22Các ñặc trưng của mô hình
Hệ thống kiểu dữ liệu và tác vụ phong phú
Việc truy xuất và thao tác trên ñối tượng ñều quy về việc áp dụng tác vụ lên ñối tượng Kiểu (type) thể hiện các ñặc trưng của ñối tượng Lớp (class) chứa các ñối tượng thuộc một kiểu duy nhất Tập hợp (collection) có thể chứa các ñối tượng thuộc các kiểu khác nhau Hành vi (behavior) thể hiện phần giao diện của tác vụ Hàm (function) hiện thực tác vụ
TIGUKAT hỗ trợ một hệ thống phân cấp các kiểu cơ bản từ những khái niệm trên Các kiểu cơ bản này có thể ñược thừa kế ñể tạo ra các kiểu theo yêu cầu của người dùng Hình 2-1 trình bày hệ thống kiểu cơ bản của TIGUKAT
Các kiểu thời gian trừu tượng ñược bổ sung:
• Kiểu T_timemodel: có hai kiểu con biểu diễn thời gian tuyến tính (T_linear) và
thời gian phân nhánh (T_branching)
• Kiểu T_linear: có ba kiểu con cho biết nhãn thời gian ñược biểu diễn dưới dạng
thời ñiểm (T_instant), khoảng thời gian tuyệt ñối (T_interval) hoặc khoảng thời gian tương ñối (T_span)
• Kiểu T_timescale: có ba kiểu con ánh xạ thời gian vào tập số thực
(T_continuous), tập phân số (T_dense) và tập số nguyên (T_discrete)
• Kiểu T_temporalBhv: quản lý thông tin thời gian về các thuộc tính của ñối
tượng
Trang 23Hình 2-1 Hệ thống kiểu cơ bản của TIGUKAT (nguồn [14])
Hình 2-2 Hệ thống kiểu cơ bản bổ sung các kiểu thời gian trừu tượng (nguồn [14])
Trang 24Hình 2-2 trình bày hệ thống kiểu cơ bản của TIGUKAT có bổ sung thêm các kiểu thời gian trừu tượng
Ớ Các kiểu thời gian trên có các tác vụ ựã ựược ựịnh nghĩa sẵn Kiểu
T_temporalBhv hỗ trợ tác vụ B_history cho phép biểu diễn sự thay ựổi của ựối tượng theo thời gian Kiểu T_object ựược bổ sung tác vụ B_lifespan trả về thời
gian sống của ựối tượng trong một tập hợp Trên cơ sở ựó, các ràng buộc về thời gian ựược ựịnh nghĩa ựể ựảm bảo sự toàn vẹn thời gian của cơ sở dữ liệu tại mọi thời ựiểm
Ngôn ngữ truy vấn
Ngôn ngữ truy vấn của mô hình này là Tigukat Query Language (TQL) Phát biểu cơ
bản của ngôn ngữ truy vấn TQL là phát biểu select, nó thực thi tác vụ trên một tập hợp
và trả về một tập hợp mới
Cú pháp
select <object variable list>
[into <collection name>]
from <range variable list>
[where <boolean formula>]
Trong ựó, mệnh ựề select xác ựịnh các ựối tượng ựược trả về trong tập hợp mới, mệnh
ựề into mô tả một tham khảo ựến tập hợp mới, mệnh ựề from ựặc tả phạm vi các biến ựối tượng trong mệnh ựề select và where, mệnh ựề where xác ựịnh ựiều kiện của biến
ựược chọn
đánh giá
Về mô hình: Hướng tiếp cận ựược ựề xuất là mọi truy xuất và thao tác trên ựối tượng ựều quy về việc áp dụng tác vụ lên ựối tượng, có bổ sung thêm hệ thống kiểu thời gian
Trang 25và các tác vụ ñược xây dựng sẵn Nhờ ñó, mô hình có khả năng xử lý thống nhất ñối tượng phức tạp và ñơn giản, ñối tượng thay ñổi theo thời gian và không ñổi theo thời gian Mô hình này có sự tương ñồng với mô hình OODAPLEX ở bản chất hàm Ưu ñiểm của nó là với khả năng kế thừa từ hệ thống kiểu thời gian và tác vụ có sẵn, việc xây dựng các kiểu thời gian phức tạp ñáp ứng yêu cầu của các ứng dụng khác nhau ñơn giản hơn so với OODAPLEX vì không phải xây dựng từ ñầu Tuy nhiên, mô hình này chưa giải quyết ñược vấn ñề ña phiên bản.
Về ngôn ngữ truy vấn: Ngôn ngữ tựa SQL có khả năng diễn ñạt linh hoạt các truy vấn liên quan cũng như không liên quan ñến thời gian, thân thiện hơn so với OODAPLEX Ngôn ngữ chỉ mới xem xét cấu trúc SELECT-FROM-WHERE cơ bản
Về vấn ñề hiện thực: Chỉ mới hiện thực mô hình ñối tượng, chưa hiện thực ngôn ngữ truy vấn [11]
2.2.3 Mô hình EXTRA-V của Sciore
Mô hình EXTRA-V [24] hỗ trợ việc quản lý vấn ñề ña phiên bản và cấu hình trong cơ
sở dữ liệu Phương pháp ñược sử dụng là mở rộng mô hình EXTRA và ngôn ngữ truy vấn EXCESS, bổ sung thêm các cấu trúc mới ở mức ý niệm, cho phép người dùng truy xuất dữ liệu ña phiên bản giống như dữ liệu thông thường, cho phép ñặc tả ngữ nghĩa của các phiên bản và truy xuất phiên bản theo ngữ nghĩa cụ thể, cho phép xây dựng
ñộng các cấu hình khi truy vấn và dùng view ñể lưu trữ lại các cấu hình quan trọng cần
tham khảo sau ñó
Các ñặc trưng của mô hình EXTRA
Quản lý vấn ñề ña phiên bản
Trang 26ðối tượng là thể hiện của kiểu Kiểu ñịnh nghĩa các thuộc tính và tác vụ cho các thể hiện của nó Thuộc tính có thể chứa một giá trị hoặc có thể tham khảo ñến ñối tượng
khác thông qua từ khóa ref Tập hợp các kiểu ñược tổ chức thành một hệ thống phân
Lệnh retrieve dùng ñể truy vấn, có cấu trúc tương tự select
retrieve <object variable list>
from <range variable list>
[where <boolean formula>]
Lệnh copy dùng ñể thêm ñối tượng mới vào tập hợp Muốn tạo một ñối tượng mới có một phiên bản thì phải thực hiện hai lệnh copy ñể tạo ñối tượng thuộc kiểu tổng quát và
ñối tượng thuộc kiểu phiên bản
Lệnh replace dùng ñể cập nhật ñối tượng
Lệnh delete dùng ñể xóa các phiên bản của ñối tượng
Các ñặc trưng của mô hình EXTRA-V
Quản lý vấn ñề ña phiên bản
Mô hình EXTRA quản lý các phiên bản ở mức vật lý Ngược lại, mô hình mở rộng từ EXTRA là EXTRA-V quản lý vấn ñề ña phiên bản ở mức ý niệm
Trang 27• Thuộc tính chung của tất cả phiên bản: sự thay ñổi các thuộc tính này sẽ ñược tất cả phiên bản của ñối tượng cập nhật ngay
• Thuộc tính riêng của mỗi phiên bản: sự thay ñổi các thuộc tính này sẽ tạo ra phiên bản mới
Các kiểu trong EXTRA-V ñược ánh xạ thành hai kiểu tương ứng trong EXTRA
EXTRA-V dùng hai từ khóa khác nhau ñể diễn ñạt sự tham khảo tới ñối tượng khác: từ
khóa ref tham khảo ñến ñối tượng cùng tất cả phiên bản của nó, từ khóa specific ref
tham khảo ñến một phiên bản cụ thể
Ngôn ngữ truy vấn
Ngôn ngữ EXCESS-V mở rộng ngôn ngữ EXCESS, hỗ trợ ña phiên bản ở mức ý niệm làm cho các tác vụ cập nhật trở nên ñơn giản hơn
Muốn tạo một ñối tượng mới có một phiên bản chỉ cần thực hiện một lệnh copy
Cập nhật thuộc tính chung làm cho tất cả phiên bản ñều thay ñổi giá trị và không tạo ra phiên bản mới Cập nhật thuộc tính riêng của phiên bản có thể tạo ra hoặc không tạo ra phiên bản mới
Có thể xóa ñối tượng cùng tất cả các phiên bản của nó hoặc có thể chỉ xóa các phiên bản mà không làm ảnh hưởng ñến ñối tượng
Quản lý cấu hình
EXCESS-V ñược xem là một ngôn ngữ quản lý cấu hình vì câu truy vấn của nó có thể xác ñịnh sự kết hợp giữa ñối tượng với phiên bản cụ thể tạo thành một chỉnh thể thống nhất Với cách tiếp cận này, sự kết hợp giữa ñối tượng và phiên bản có thể thay ñổi ñược, khả năng diễn ñạt các ñiều kiện chọn phiên bản rất linh hoạt, có thể trả về nhiều cấu hình thỏa mãn ñiều kiện
Mô hình sử dụng view ñể lưu trữ các cấu hình quan trọng cần tham khảo sau ñó
Trang 28Ngữ nghĩa của phiên bản
Các kiểu dữ liệu có thể ựịnh nghĩa hai thuộc tắnh: occurredAt lưu trữ thông tin về thời gian hợp lệ và recordedAt lưu trữ thông tin về thời gian giao tác Các chiều thời gian
này tạo thành một không gian cho các phiên bản Mỗi phiên bản cụ thể ựược xác ựịnh bằng hai tọa ựộ: thời gian hợp lệ và thời gian giao tác diễn ra sự thay ựổi
Mô hình còn cho phép người dùng tự ựịnh nghĩa các chiều trong không gian lưu trữ
phiên bản bằng kiểu dimension, nhờ ựó bổ sung thêm ngữ nghĩa cho các phiên bản,
giúp người dùng truy xuất thông tin liên quan ựến các phiên bản dễ dàng hơn Hệ thống chịu trách nhiệm chuyển ựổi thành câu truy vấn thông thường và thực thi nó
đánh giá
Về mô hình: Phiên bản ựược tạo ra bởi ứng dụng và người dùng có thể truy xuất các phiên bản cụ thể Ngữ nghĩa của phiên bản giúp cho việc quản lý các phiên bản cũng như cấu hình trong cơ sở dữ liệu dễ dàng hơn Tuy nhiên, mô hình chưa giải quyết ựược vấn ựề thời gian
Về ngôn ngữ truy vấn: có cấu trúc tựa SQL, có khả năng ựáp ứng các yêu cầu thao tác trên phiên bản cũng như ựối tượng ựa phiên bản
Về vấn ựề hiện thực: Mô hình EXTRA-V chưa ựược hiện thực
2.2.4 Mô hình cơ sở dữ liệu ựa phiên bản và phương pháp kiểm tra ràng buộc toàn vẹn thời gian của Doucet
Mô hình cơ sở dữ liệu ựa phiên bản [3, 7, 8, 9] ựược dùng ựể hỗ trợ mô hình cơ sở dữ liệu song thời gian Trên cơ sở ựó, các ràng buộc toàn vẹn thời gian ựược ánh xạ vào các ràng buộc trong cơ sở dữ liệu ựa phiên bản, sử dụng phương pháp kiểm tra ràng buộc trong cơ sở dữ liệu ựa phiên bản ựể kiểm tra các ràng buộc toàn vẹn thời gian
Trang 29Mô hình cơ sở dữ liệu ña phiên bản
Ở cấp ñộ vật lý, cơ chế phiên bản (version mechanism) [3] của mô hình cho phép quản
lý hiệu quả các phiên bản cơ sở dữ liệu
Phân loại các ràng buộc toàn vẹn
Dựa vào ba tiêu chuẩn
• Tính chất tĩnh, ñộng của ràng buộc: ràng buộc ñộng (dynamic) yêu cầu phải kiểm tra cả trạng thái khởi ñầu và trạng thái kết thúc của cơ sở dữ liệu ña phiên bản khi thực hiện một giao dịch, ràng buộc tĩnh (static) chỉ yêu cầu kiểm tra trạng thái kết thúc của cơ sở dữ liệu ña phiên bản khi thực hiện giao dịch
• Phạm vi của ràng buộc: xác ñịnh ràng buộc liên quan ñến một ñối tượng object) hoặc nhiều ñối tượng (multi-object), thuộc về một lớp (mono-class) hoặc nhiều lớp (multi-class), trong một phiên bản cơ sở dữ liệu (mono-DBV) hoặc nhiều phiên bản cơ sở dữ liệu (multi-DBV)
(mono-• Sự liên hệ giữa các thành phần trong cơ sở dữ liệu: Có ba miền (domain): miền ñối tượng (object), miền lớp (class) và miền cơ sở dữ liệu (DBV) Khi kiểm tra ràng buộc, tại một thời ñiểm chỉ cần xem xét một phần tử của miền (intra-domain) hoặc cần xem xét ñồng thời nhiều phần tử của miền (inter-domain)
Trang 30Sự kết hợp giữa các tiêu chuẩn trên hình thành 54 loại ràng buộc toàn vẹn khác nhau
Kiểm tra tính nhất quán của cơ sở dữ liệu ña phiên bản
Cần kiểm tra các ràng buộc vào cuối mỗi giao dịch trong cơ sở dữ liệu Nếu tất cả các ràng buộc ñều thỏa mãn thì giao dịch sẽ hoàn tất Ngược lại thì giao dịch bị hủy bỏ Một quy trình ñược ñề xuất ñể cải tiến việc kiểm tra trên ở ba ñiểm: chỉ xem xét các ràng buộc nào có thể bị vi phạm bởi giao dịch, chỉ kiểm tra các phần tử nào trong cơ sở
dữ liệu có thể bị vi phạm bởi ràng buộc ñó bằng cách phân tích cú pháp của giao dịch
và ràng buộc, tùy theo từng loại ràng buộc mà phương pháp kiểm tra ràng buộc tương ứng xây dựng sẵn trong thư viện sẽ ñược sử dụng
Phương pháp kiểm tra các ràng buộc toàn vẹn thời gian
Trong mô hình cơ sở dữ liệu ña phiên bản, mỗi phiên bản thể hiện một trạng thái của thế giới thực ñược mô hình và có thể ñược kết hợp với một hoặc nhiều chiều thời gian
ðể biểu diễn ngữ nghĩa của ứng dụng, phiên bản ñược ñặc trưng bởi các nhãn, trong ñó
sử dụng các thuộc tính của phiên bản Chẳng hạn thuộc tính ñó có thể là ngày ra ñời của phiên bản hoặc tên người thiết kế ra phiên bản ðể biểu diễn cơ sở dữ liệu song thời gian bằng mô hình cơ sở dữ liệu ña phiên bản thì nhãn của phiên bản phải lưu trữ thông tin về các chiều thời gian, cụ thể là thời gian hợp lệ và thời gian giao tác
Các ràng buộc toàn vẹn thời gian có thể ñược xem như các truy vấn ñặt ra cho cơ sở dữ
liệu hướng thời gian Nó bị xem là vi phạm nếu kết quả trả về của câu truy vấn là false
Một cách phổ biến ñể ñịnh nghĩa các truy vấn về thời gian là sử dụng logic thời gian (temporal logic) Logic thời gian là logic bậc nhất (first-order logic) có bổ sung thêm
các liên từ thời gian như since, until, previous, next và ngữ nghĩa của nó ñược xác ñịnh
dựa vào sự thay ñổi trạng thái của cơ sở dữ liệu theo thời gian
Trang 31Trong thực tế, hầu hết cơ sở dữ liệu hướng thời gian ựều ựược hiện thực bằng cách lưu trữ thuộc tắnh hoặc bộ kết hợp với khoảng thời gian hợp lệ Như vậy, các truy vấn logic thời gian dựa vào trạng thái phải ựược ánh xạ thành các truy vấn dựa vào khoảng thời gian thì mới có thể ựược xử lý bằng các DBMS hướng thời gian
Khi mô hình cơ sở dữ liệu ựa phiên bản ựược dùng ựể hỗ trợ cơ sở dữ liệu song thời gian thì các ràng buộc toàn vẹn thời gian ựược hiện thực bằng cách ánh xạ vào các ràng buộc trong cơ sở dữ liệu ựa phiên bản Với hướng tiếp cận này, các ràng buộc viết bằng logic thời gian có thể dễ dàng ựược chuyển ựổi thành ràng buộc trong cơ sở dữ liệu ựa phiên bản vì mỗi phiên bản của cơ sở dữ liệu biểu diễn một trạng thái trong thế giới thực và ựược kết hợp với khoảng thời gian hợp lệ
đánh giá
Về mô hình cơ sở dữ liệu ựa phiên bản: mô hình cho phép quản lý hiệu quả các cơ sở
dữ liệu ựa phiên bản, ựặc biệt quan tâm ựến việc ựảm bảo tắnh nhất quán trong cơ sở dữ liệu Tuy nhiên, vì phải xác ựịnh phiên bản cụ thể của cơ sở dữ liệu khi thực hiện thao tác trên các phiên bản của ựối tượng nên người dùng sẽ gặp khó khăn khi phải thêm, cập nhật hay xóa dữ liệu
Về phương pháp kiểm tra ràng buộc toàn vẹn thời gian: Ý tưởng là dùng mô hình cơ sở
dữ liệu ựa phiên bản ựể hiện thực các ràng buộc toàn vẹn trong cơ sở dữ liệu song thời gian Ưu ựiểm là tận dụng ựược các công nghệ ựã xây dựng cho mô hình cơ sở dữ liệu
ựa phiên bản Tuy nhiên, vì các ràng buộc toàn vẹn thời gian ựược xem như trường hợp ựặc biệt của các ràng buộc toàn vẹn trong cơ sở dữ liệu ựa phiên bản nên việc phân loại các ràng buộc toàn vẹn thời gian chưa xem xét ựến ựặc trưng về mặt thời gian, dẫn ựến việc thực thi các ràng buộc này không ựạt hiệu quả cao
Trang 32Về vấn ñề hiện thực: Mô hình cơ sở dữ liệu ña phiên bản và các ràng buộc toàn vẹn trong mô hình, cơ sở dữ liệu song thời gian và việc xử lý các ràng buộc toàn vẹn thời gian ñược hiện thực trên DBMS O2
2.2.5 Mô hình ña phiên bản hướng thời gian TVM của Moro
Mô hình ña phiên bản hướng thời gian [17, 18, 19] là một mô hình hướng ñối tượng cho phép quản lý vấn ñề thời gian và ña phiên bản Phần tiếp theo sẽ phân tích, ñánh giá mô hình trên cùng với các ngôn ngữ hỗ trợ mô hình: ngôn ngữ ñịnh nghĩa lớp, ngôn ngữ truy vấn [20], ngôn ngữ thao tác dữ liệu [13] và ngôn ngữ ñặc tả ràng buộc [4, 5]
Mô hình ña phiên bản hướng thời gian
Mô hình ña phiên bản hướng thời gian [17, 18, 19] là một mô hình hướng ñối tượng kết hợp mô hình ña phiên bản với yếu tố thời gian, cho phép quản lý việc lưu trữ tất cả phiên bản của ñối tượng cùng toàn bộ lịch sử thay ñổi các thuộc tính của mỗi phiên bản theo thời gian
Hệ thống phân cấp các lớp cơ sở
Hình 2-3 biểu diễn hệ thống phân cấp các lớp cơ sở của mô hình TVM Trong ñó, lớp
Object quản lý chung các ñối tượng, lớp Temporal Object quản lý vấn ñề thời gian, lớp Temporal Version quản lý các phiên bản và lớp Versioned Object quản lý ñối tượng ña
phiên bản
Mô hình ñịnh nghĩa hai loại lớp ứng dụng: non temporal non versionable (lớp con của lớp Object) là lớp ứng dụng thông thường, temporal and versionable (lớp con của lớp Temporal Version) là lớp ứng dụng cần quản lý vấn ñề ña phiên bản hướng thời gian
Trang 33Quản lý vấn ñề thời gian
Thời gian ñược kết hợp với các ñối tượng, phiên bản, thuộc tính và mối quan hệ cho phép mô hình hóa thực tế linh hoạt hơn Mô hình lưu trữ cả thời gian hợp lệ và thời gian giao tác (mô hình cơ sở dữ liệu song thời gian) dưới dạng khoảng thời gian
Hình 2-3 Hệ thống phân cấp các lớp cơ sở của mô hình TVM (nguồn [18])
ðối tượng có ñường thời gian dành riêng cho mỗi phiên bản của nó Các phiên bản của ñối tượng có thể cùng tồn tại vào một thời ñiểm Vì vậy, mô hình có hai bậc thời gian khác nhau: thời gian phân nhánh cho ñối tượng ña phiên bản và thời gian tuyến tính cho mỗi phiên bản của ñối tượng
Thời gian sống của ñối tượng và phiên bản ñược biểu diễn bằng hai thuộc tính start và end
Các thuộc tính và mối quan hệ của ñối tượng có thể thay ñổi hoặc không ñổi theo thời gian Các thuộc tính và mối quan hệ thay ñổi theo thời gian ñược kết hợp với bốn giá
trị biểu diễn thời gian: vTimei, vTimef, tTimei, tTimef tương ứng với thời ñiểm bắt ñầu
hợp lệ, thời ñiểm kết thúc hợp lệ, thời ñiểm bắt ñầu giao tác và thời ñiểm kết thúc giao tác
Ràng buộc toàn vẹn thời gian: nhãn thời gian kết hợp với các phiên bản phải chứa trong ñường thời gian của ñối tượng ña phiên bản, nhãn thời gian kết hợp với các thuộc
Trang 34tính và mối quan hệ của một phiên bản phải chứa trong ñường thời gian của phiên bản
ñó
Quản lý vấn ñề ña phiên bản
Trong thời gian sống, phiên bản có thể thay ñổi trạng thái Hình 2-4 mô tả các trạng thái của phiên bản và các sự kiện gây ra sự chuyển trạng thái của phiên bản Có bốn trạng thái:
• Working: phiên bản có thể ñược dẫn xuất, thăng cấp lên trạng thái stable, sửa
ñổi, truy vấn và xóa bỏ
• Stable: phiên bản có thể ñược dẫn xuất, thăng cấp lên trạng thái consolidated,
truy vấn và xóa bỏ, không ñược sửa ñổi
• Consolidated: phiên bản có thể ñược dẫn xuất, truy vấn, không ñược sửa ñổi và
Trang 35Ngôn ngữ ñịnh nghĩa lớp
Class className [HasVersions] [inherit className]
[[temporal] aggregate_of [n] className (by value | by reference)
{,[temporal] aggregate_of [n] className (by value | by reference)}]
([Properties:
{[temporal] attributeName : attributeDomain;}]
[Relationships:
{[temporal] relationshipName (0:1 | 0:n | 1:1 | 1:n | n:n) [inverse inverseRelationshipName] relatedClassName;}]
Với ngôn ngữ trên, người dùng có thể ñịnh nghĩa lớp ứng dụng ña phiên bản hướng
thời gian và lớp ứng dụng thông thường; ñịnh nghĩa các thuộc tính thay ñổi và không
ñổi theo thời gian Ngôn ngữ ñịnh nghĩa lớp này gần giống ngôn ngữ ODL do nhóm
ODMG ñề xuất
Ngôn ngữ truy vấn ña phiên bản hướng thời gian
Ngôn ngữ truy vấn ña phiên bản hướng thời gian (Temporal Versioned Query
Language - TVQL) [20] là ngôn ngữ truy vấn dùng cho mô hình TVM
Cú pháp
query ::= SELECT [EVER] [DISTINCT] targetC {,targetC}
FROM identificC {,identificC} [WHERE [EVER] searchC]
[GROUP BY groupC {,groupC} [HAVING logicalExpr]]
[ORDER BY orderC {,orderC} [setOp query];
targetC ::= (* | propertyName | aggregationFunctions | preDefInterval |
preDefInstant) [AS identifier]
identificC ::= className [.VERSIONS] [aliasName]
search C ::= logicalExpr | tempExpr
groupC ::= propertyName | preDefInterval | preDefInstant
tempExpr ::= logicalExpr | PRESENT (logicalExpr)
orderC ::= groupC [ASC | DESC]
setOp ::= UNION | INTERSECTION | DIFFERENCE
preDefInterval ::= [propetyName.] (tInterval | vInterval)
preDefInstant ::= [propertyName.] (tiInstant | tfInstant | viInstant | vfInstant)
| [className.] (iLifeTime | fLifeTime)
Trang 36Việc sử dụng các từ khóa ever và present cho phép người dùng truy vấn kết hợp dữ
liệu hiện tại và toàn bộ lịch sử dữ liệu Từ khóa ever theo sau select cho biết câu truy
vấn sẽ trả về toàn bộ lịch sử dữ liệu Nếu không có từ khóa ever thì câu truy vấn chỉ trả
về dữ liệu hiện tại Từ khóa ever theo sau where cho biết ñiều kiện ñược xét trên toàn
bộ lịch sử dữ liệu Nếu dùng từ khóa present theo sau where hoặc không có từ khóa nào theo sau where thì ñiều kiện ñược xét trên dữ liệu hiện tại
Từ khóa versions theo sau className cho biết câu truy vấn lấy thông tin từ tất cả các phiên bản của lớp Nếu không có từ khóa versions thì chỉ lấy thông tin từ các phiên
bản hiện hành bao gồm các ñối tượng thông thường và phiên bản hiện hành của ñối tượng ña phiên bản
Các ñặc tính cho phép truy xuất nhãn thời gian của các thuộc tính và mối quan hệ thay
ñổi theo thời gian: khoảng thời gian giao tác tInterval, khoảng thời gian hợp lệ vInterval, thời ñiểm bắt ñầu giao tác tiInstant, thời ñiểm kết thúc giao tác tfInstant, thời ñiểm bắt ñầu hợp lệ viInstant, thời ñiểm kết thúc hợp lệ vfInstant
Các ñặc tính cho phép truy xuất nhãn thời gian của ñối tượng: thời ñiểm ra ñời
iLifetime, thời ñiểm kết thúc fLifetime
Các toán tử so sánh thời ñiểm và thời khoảng: before, into, after
Các toán tử so sánh các thời khoảng: intersect, overlap, equal
Các hàm truy xuất thông tin ñặc biệt của các phiên bản: hàm xác ñịnh trạng thái của các phiên bản (isWorking, isWorkingAt), hàm xác ñịnh vị trí của phiên bản trong chuỗi dẫn xuất (isCurrent, isUserCurrent, isFirst, isLast, isPredecessorOf, isSuccessorOf)
Các hàm truy xuất thông tin ñặc biệt của ñối tượng ña phiên bản: firstVersion, lastVersion, versionCount, currentVersion, nextVersionNumber
Hiện thực
Trang 37Quá trình hiện thực ngôn ngữ TVQL gồm hai bước:
• Bước 1: Ánh xạ mô hình TVM vào một cơ sở dữ liệu quan hệ, gồm hai phần nhỏ: biểu diễn hệ thống phân cấp các lớp cơ sở và hiện thực các lớp ứng dụng
• Bước 2: Ánh xạ ngôn ngữ TVQL vào ngôn ngữ SQL
Ngôn ngữ thao tác dữ liệu
Ngôn ngữ thao tác dữ liệu dùng cho mô hình TVM [13] có xét ñến sự thay ñổi cấu trúc của lược ñồ cơ sở dữ liệu Ngôn ngữ này tựa SQL và có sử dụng ngôn ngữ truy vấn TVQL
Cú pháp
query ::= (insert | update | delete) identificSV
insert ::= INSERT INTO className
[(propertyName = expression [VALIDITY INTERVAL definedInterval]
{,propertyName = expression [VALIDITY INTERVAL definedInterval]})]
VALUES (constant {,constant}) [VALIDITY INTERVAL definedInterval]
delete ::= DELETE FROM className
[WHERE condition] [fValidity = instant]
update ::= UPDATE className
SET propertyName = expression [VALIDITY INTERVAL definedInterval] {,propertyName = expression [VALIDITY INTERVAL definedInterval]}
WHERE condition
identificSV ::= current | schemaVersionName = schemaVersionName
| VALIDITY INTERVAL definedInterval
definedInterval ::= [iInstant [fInstant]] | [ fInstant]
schemaVersionName ::= identifier
instant ::= tempValue | now | null
tempValue ::= ‘dateValue [,hourValue]’
Mệnh ñề WHERE condition sử dụng ngôn ngữ truy vấn TVQL, cho phép người dùng
ñịnh nghĩa các ñối tượng ñược xem xét trong quá trình thao tác
Trang 38Lệnh INSERT tạo ra phiên bản ñầu tiên của ñối tượng Nếu ñối tượng có các thuộc tính
thay ñổi theo thời gian thì người dùng phải cung cấp thời gian hợp lệ cho từng thuộc tính ñó
Phát biểu UPDATE xét hai trường hợp:
• Trường hợp 1: Nếu cập nhật thuộc tính không ñổi theo thời gian thì một phiên bản mới sẽ ñược tạo ra
• Trường hợp 2: Nếu cập nhật thuộc tính thay ñổi theo thời gian thì giá trị trước ñây và giá trị hiện tại ñều ñược lưu trữ lại, không tạo ra phiên bản mới
Phát biểu DELETE xét ba trường hợp:
• Trường hợp 1: Nếu xóa bỏ thuộc tính thay ñổi theo thời gian thì thời gian hợp lệ
của nó sẽ kết thúc tại thời ñiểm ñược cung cấp từ mệnh ñề fValidity
• Trường hợp 2: Nếu xóa bỏ phiên bản thì thời gian sống của nó sẽ kết thúc Nếu phiên bản ñó có các thuộc tính và mối quan hệ thay ñổi theo thời gian thì thời gian hợp lệ của chúng cũng sẽ kết thúc cùng lúc với phiên bản
• Trường hợp 3: Nếu xóa bỏ ñối tượng ña phiên bản thì thời gian sống của nó sẽ kết thúc và tất cả các phiên bản của nó cũng sẽ bị xóa bỏ
Một lược ñồ cũng có thể có nhiều phiên bản Mệnh ñề identificSV dùng ñể xác ñịnh
phiên bản lược ñồ cụ thể ñể thực hiện việc cập nhật dữ liệu
Ngôn ngữ ñặc tả ràng buộc
Ngôn ngữ ñặc tả ràng buộc ña phiên bản hướng thời gian (Temporal Versioned Constraint Language – TVCL) [4, 5] dùng cho mô hình TVM có sử dụng ngôn ngữ truy vấn TVQL và ngôn ngữ thao tác dữ liệu
Trang 39constraint ::= (create constraint constraintName constraintMiddle |
create TV constraint constraintName constraintMiddle
[validity] [versioningScope])
constraintMiddle ::= when {verifyingPoints}
if exists (TVQLQuery)
then (rollback | alert | (DUStatement {,DUStatement}))
[follows {constraintName {,constraintName}}]
[precedes {constraintName {,constraintName}}]
validity ::= validity timeInterval
versioningScope ::= versioning scope allVersions | {versionState {,versionState}})
Các ràng buộc ñược xác ñịnh dựa trên câu truy vấn TVQL Câu truy vấn này nằm trong
mệnh ñề if exists có nhiệm vụ tìm kiếm các dữ liệu vi phạm ràng buộc Sau ñó thông qua mệnh ñề then, một trong các tác vụ sau có thể ñược thực thi: quay lại trước giao
dịch gây ra vi phạm (rollback), thực thi một danh sách thao tác dữ liệu ñể thiết lập lại tính toàn vẹn cho cơ sở dữ liệu (DUStatement) hay chỉ cảnh báo cho nhà quản trị cơ sở
dữ liệu biết là có một vi phạm ñã xảy ra (alert)
Từ khóa create constraint dùng ñể ñặc tả các ràng buộc thông thường Từ khóa create
TV constraint dùng ñể ñặc tả các ràng buộc ña phiên bản hướng thời gian Dạng ràng
buộc này có nhiều phiên bản và lịch sử cập nhật nó cũng ñược lưu trữ lại
Thời ñiểm kiểm tra ràng buộc ñược xác ñịnh trong mệnh ñề when, dựa trên các tác vụ
thao tác dữ liệu hoặc các sự kiện và ñược biểu diễn bằng biểu thức logic thời gian Thứ tự kiểm tra các ràng buộc trước và sau một ràng buộc ñược xác ñịnh tương ứng
trong hai mệnh ñề tùy chọn follows và precedes
Thời gian hợp lệ của ràng buộc ñược xác ñịnh trong mệnh ñề validity
Các phiên bản của ràng buộc cần xem xét ñược xác ñịnh trong mệnh ñề
versioningScope thông qua sự hạn chế các phiên bản của ñối tượng
Trang 40Nhận xét mô hình TVM
Về mô hình: bổ sung yếu tố thời gian vào mô hình ña phiên bản, cho phép quản lý các phiên bản khác nhau của ñối tượng cũng như sự thay ñổi các thuộc tính của mỗi phiên bản theo thời gian Ưu ñiểm của mô hình là có khả năng quản lý vấn ñề thời gian và ña phiên bản, quản lý ñược các ñối tượng ña phiên bản cũng như ñối tượng thông thường
Về ngôn ngữ truy vấn và thao tác trên dữ liệu: có nhiều ñiểm tương ñồng với SQL và che giấu ñược chi tiết hiện thực bên dưới, thân thiện với người dùng
Về vấn ñề hiện thực: Mô hình và các ngôn ngữ ñược hiện thực trên DBMS DB2
Nhận xét chung
Mô hình TIGUKAT theo tổng kết từ [2] là mô hình hướng ñối tượng giải quyết vấn ñề thời gian có nhiều ưu ñiểm hơn so với các mô hình khác nhờ bản chất hàm và hệ thống kiểu thời gian cũng như tác vụ phong phú có sẵn Tuy nhiên, mô hình này chưa giải quyết ñược vấn ñề ña phiên bản
Mô hình EXTRA-V là mô hình hướng ñối tượng ñáp ứng ñược việc quản lý vấn ñề ña phiên bản, cho phép người dùng ñịnh nghĩa các chiều trong không gian lưu trữ phiên bản, nhờ ñó bổ sung thêm ngữ nghĩa cho các phiên bản và giúp người dùng truy xuất thông tin liên quan ñến các phiên bản dễ dàng hơn Tuy nhiên, mô hình này chưa giải quyết ñược vấn ñề thời gian
Mô hình cơ sở dữ liệu ña phiên bản của Doucet cho phép quản lý hiệu quả các cơ sở dữ liệu ña phiên bản, ñặc biệt quan tâm ñến việc ñảm bảo tính nhất quán trong cơ sở dữ liệu Tuy nhiên, vì phải xác ñịnh phiên bản cụ thể của cơ sở dữ liệu khi thực hiện thao tác trên các phiên bản của ñối tượng nên người dùng sẽ gặp khó khăn khi phải thêm, cập nhật hay xóa dữ liệu Ngoài ra, mô hình cũng ñề xuất phương pháp kiểm tra ràng