Current_Date trong sự sửa đổi

Một phần của tài liệu Nghiên cứu một số phương pháp gán nhãn thời gian trên cơ sở dữ liệu (Trang 43 - 46)

Một người sử dụng có thể xác định giai đoạn thời gian hợp lệ bất kỳ trong câu lênh có sự sửa đổi dữ liệu. Sự kết hợp của việc sử dụng thời gian Commit cho cả now Current_Date và các ràng buộc mà thời gian bắt đầu hợp lệ VST phải nhỏ hơn thời gian kết thúc hợp lệ VET có thể gây ra một số vấn đề trong giao tác, như thể hiện trong câu lệnh dưới đây.

-- on 1998/02/20:

VALIDTIME PERIOD [CURRENT_DATE, DATE ’1998/02/21’) INSERT INTO NV_VT Values (Ten =’Na’, luong =20000); COMMIT;

Các giao tác chèn một bộ dữ liệu và nhãn thời gian của nó nó trong đoạn [now- 1998/02/21). Điều này dẫn đến một tình trạng chạy đua. Nếu giao tác

Commit vào ngày 20/2 thì không có gì bất thường xảy ra. Tuy nhiên, nếu giao tác không Commit trước ngày 22/2, thời gian bắt đầu hợp lệ VST sẽ lớn hơn giá trị thời gian kết thúc hợp lệ VET, điều này là không được phép.

Một phương pháp có thể để giải quyết vấn đề này đó là cho các bước đặt lại để loại bỏ bộ dữ liệu có khoảng thời gian hợp lệ bị lỗi.Tuy nhiên, điều này không thực hiện được bởi vì câu lệnh kế tiếp ở trong giao tác có thể tham chiếu các bộ dữ liệu trong khoảng thời gian này, đồng thời làm hỏng kết quả của giao tác.

Thay vào đó, chúng ta áp dụng các giải pháp của phần trước, xác định cụ thể giá trị nhãn thời gian nhỏ nhất đối với khoảng thời gian bất kỳ [now- nhãn thời gian cụ thể) trong giao tác. Ở đây, nhãn thời gian cụ thể là 1998/02/21. Nếu giá trị này nhỏ hơn so với thời gian Commit, các giao tác được xem là không hợp lý và được rolled back.

Tiếp theo chúng ta xem xét kết quả của việc sử dụng một giá trị duy nhất cho Current_DateE.Trong hình 3.3, giao tác T1 chèn nhân viên tên “Mi”có lương 28000 vào ngày 8/2. Vào ngày 19/2, giao tác T1 thực hiện sự thay đổi M đó là xóa tất cả các nhân viên có lương 28000:

DELETE FROM NV_VT WHERE LUONG =28000.

Giao tác T2 chèn nhân viên “Minh” có lương 28000 và giao tác T3 chèn nhân viên “Loan” có lương 28000 vào khoảng thời gian [1998/02/10 - 1998/02/15). Câu hỏi đặt ra là, thay đổi M có tác động gì khi thực hiện chèn bởi giao tác T2 và T3?

Hình 3.3. Sơ đồ thực hiện giao tác T1, T2, T3

- Bộ dữ liệu của quan hệ NV_VT ngày 19/2 khi thay đổi M được thể hiện trong bảng 3.4 dưới đây. Chúng ta hãy nhớ rằng, giao tác T1 chưa COMMIT, điều đó có nghĩa nhãn thời gian VST và TST của bộ dữ liệu đầu tiên có giá trị

Chèn (Mi, 28000) Chèn (Minh, 28000) Chèn (Loan, 28000) 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 8 19 22 10 15 10 15 M T3 T1 T2 Thời gian

tạm thời là ngày 1998/02/08 bởi vì đó là giá trị được cần đến đầu tiên trong giao tác T1. Để nhấn mạnh điều này, các giá trị tạm thời được thể hiện bằng chữ in nghiêng.

Bảng 3.5. Nhãn thời gian bảng NV_VT trước thời điểm 1998/02/19

TEN MANV LUONG MAPB VST VET TST TET

Mi 104 28000 5 1998/02/08 Nobind now 1998/02/ 08 Uc Minh 105 28000 5 1998/02/15 Nobind now 1998/02/ 15 Uc Loan 104 29000 5 1998/02/15 1998/02/25 1998/02/ 15 Uc

- Giao tác T1 bây giờ thực hiện các thay đổi M. Giả sử nobind now có một giá trị hợp lý.

+ Bộ dữ liệu đầu tiên bị xóa bởi vì VST là nhỏ hơn hoặc bằng giá trị của

now.

+ Bộ dữ liệu thứ hai có VST lớn hơn giá trị của now. Tuy nhiên, nó phải được xóa để hoàn thành các yêu cầu truy vấn SQL-92. Các bộ dữ liệu được chèn vào bởi một giao tác mà commit trước khi thao tác xóa được áp dụng.

+ Bộ dữ liệu thứ ba cũng được chèn vào bởi một giao tác mà commit

trước khi thao tác xóa được áp dụng, và bộ dữ liệu này là trong trạng thái thời gian hiện thời khi mà giao tác T1 commit. Điều này có thể chỉ ra bộ dữ liệu thứ ba cũng nên bị xóa.Tuy nhiên, khoảng thời gian hợp lệ liên quan tới bộ dữ liệu phải không chồng chéo với các giá trị của now.

Tác động của việc sử dụng một giá trị cho now trong các giao tác có thể được tóm tắt như sau: Các bộ dữ liệu có có một giá trị VET là nobind now sẽ bị

ảnh hưởng bởi sự thay đổi dữ liệu trong một giao tác, thậm chí nếu giá trị của

now được sử dụng trong các giao tác nhỏ hơn so với giá trị VST các thuộc tính của các bộ dữ liệu.

Điều quan trọng là các giai đoạn thời gian hợp lệ kết hợp với bộ dữ liệu đã được kiểm tra cho dù các VET bằng nobind now hoặc các giao đoạn thời gian hợp lệ chồng chéo với các giá trị của now được sử dụng trong truy vấn.

Một phần của tài liệu Nghiên cứu một số phương pháp gán nhãn thời gian trên cơ sở dữ liệu (Trang 43 - 46)