Số lượng các Bản sao nhiều hay ít phụ thuộc vào yêu cầu và mục đích của người sử dụng. Cho nên tại các vị trí khác nhau có thể có nhiều các bản sao dữ liệu trùng lặp. Theo phương pháp này, dữ liệu dư thừa cao nhất. Dữ liệu ảnh được tạo ra từ phương pháp này chỉ phục vụ tra cứu mà không cập nhật được.
Vì yêu cầu của người sử dụng tương đối đa dạng, cho nên phương pháp phân tán sao lặp kết hợp rất nhiều kỹ thuật Bản sao CSDL: Bản sao theo hàng, Bản sao theo cột và Bản sao hỗn hợp (hàng và cột).
Dữ liệu thường được truyền qua đường kết nối băng thông thấp Các ưu điểm của phương pháp phân tán sao lặp:
Dễ xây dựng CSDL cũng như các chương trình ứng dụng.
Độ tin cậy: Nếu CSDL tại một trong các chi nhánh bị hỏng thì ta có thể tìm thấy bản sao của chính nó tại CSDL của chi nhánh khác. Tốc độ truy xuất dữ liệu nhanh: Tại mỗi chi nhánh đều có đầy đủ
CSDL để phục vụ cho các quy trình truy xuất dữ liệu từ phía người sử dụng. Quá trình này xảy ra ngay tại trạm làm việc, vì vậy tốc độ truy vấn dữ liệu diễn ra nhanh hơn.
Mỗi vị trí đều có thể sử dụng toàn bộ dữ liệu của CSDL . Các nhược điểm của phương pháp phân tán sao lặp
Dung lượng bộ nhớ lưu trữ tăng lên: Để mọi nơi đều có một bản sao CSDL đầy đủ thì tại mỗi vị trí cần có một khoảng trống bộ nhớ lưu trữ bằng dung lượng phải có lưu trữ ở máy trung tâm.
Giá thành và tính phức tạp của việc cập nhật dữ liệu tăng lên: Vì khi muốn cập nhật một quan hệ nào đó thì phải thực hiện trên tất cả các vị trí có chứa bản sao lưu.
Các ứng dụng phù hợp
Dữ liệu phục vụ nhiều cho mục đích tra cứu hoặc dữ liệu là tương đối tĩnh (danh bạ điện thoại, lịch tàu,...).
Các CSDL không quá lớn nhưng phạm vi địa lý ứng dụng rộng.
2.3.4 Kết hợp các chiến lược
Có rất nhiều cách kết hợp các chiến lược phân tán. Ví dụ: Một số dữ liệu có thể lưu trữ ở trung tâm, trong khi một số dữ liệu khác được Bản sao ở các vị trí khác. Tương tự như vậy, với một bảng quan hệ, cả hai chiến lược phân tán hoàn toàn và phân tán phân đoạn được kết hợp với nhau để phân tán dữ liệu.
2.4 Các công cụ hỗ trợ CSDL phân tán của Oracle
2.4.1 Snapshot
Snapshot là một yêu cầu phân tán tham chiếu tới một hay nhiều bảng chính, các View, hoặc các Snapshot khác. Mỗi Bản sao của bảng chính được gọi là một Snapshot, bất kỳ thời điểm nào có thể định kỳ được "làm tươi " thông tin. Các Snapshot luôn có trạng thái tương ứng với trạng thái mới nhất của bảng chính.
Read-only Snapshot: Là một bản sao đầy đủ của một bảng hay một tập các bảng. Nó phản ánh đầy đủ tình trạng mới nhất của bảng chính.
SNAPSHOT Updatable: Có thể sửa đổi bản sao của bảng chủ và được định nghĩa bao hàm bản sao đầy đủ của bảng chủ hoặc tập các hàng trong bảng chủ.
Như vậy sự khác nhau giữa hai loại Snapshot trên là: Snapshot Updatable cho các yêu cầu và cập nhật, các Read-only Snapshot chỉ cho đọc.
2.4.2 Các thao tác chính với Read-Only Snapshot
a. Quy tắc đặt tên cho Snapshot.
Các Snapshot được lưu trữ trong luợc đồ về người sử dụng vì vậy tên của các Snapshot phải là duy nhất.
b. Tạo Read-Only Snapshot.
Sử dụng câu lệnh CREAT SNAPSHOT.
Ví dụ 1: Định nghĩa một Snapshot địa phương được sao từ bảng chính EMP định vị trên NY.
CREAT SNASPHOT emp_sf PCTFREE 5 PCTUSED 60 TABLESPACE users
STORAGE ( INITIAL 50K NEXT 50K PCTINCREASE 50 ) REFRESH FAST
START WITH sysdate NEXT sysdate + 7
AS SELECT * FROM scott . emp@sales . ny. com ; Tổng quát hoá quá trình Oracle tạo và làm tươi các Snapshot:
Khi có yêu cầu tạo Snapshot, ORACLE tạo một số các đối tượng tại vị trí ảnh và vị trí chủ như sau:
Tại vị trí ảnh có các đối tượng (Objects):
o Một bảng cơ sở có tên là Snap$_tên Snapshot. Bảng này chứa dữ liệu với cấu trúc như trong câu lệnh tạo Snapshot của người sử dụng.
o Bảng index có tên là I-snap_tên Snapshot: Chính là việc index lại Rowid của bảng chủ.
o Read_only View của Snapshot: Sử dụng khi có yêu cầu làm tươi. Tại vị trí chủ có các đối tượng:
o MView$_tên_Snapshot: Sử dụng trong quá trình làm tươi Snapshot.
o Một Snapshot log có tên Mlog$_tên bảng chủ: Lưu trữ Rowid và các hàng được cập nhật trong bảng chủ (Rowid và nhật ký các thay đổi) các
thông tin này cho phép làm tươi nhanh các Snapshot. Snapshot log sẽ được trình bày rõ hơn trong phần sau.
o Trigger có tên là Tlog_tên bảng chủ: Nó sử dụng trong việc thay đổi Log (chốn Rowid và các thay đổi của các hàng vào trong Snapshot log). Mỗi khi có sự thay đổi trên bảng chủ (Chốn, sửa, xoá), các trigger được kích hoạt để ghi các thay đổi vào bảng Mlog. Khi đến chu kỳ làm tươi Snapshot dựa vào bảng Mview để thay đổi Snapshot.
Về nguyên tắc Rowid của bảng chủ và của Snapshot không trùng nhau. Tuy nhiên trong bảng Mlog chỉ lưu trữ Rowid của các hàng trong bảng chủ bị thay đổi. Vì vậy, trong bảng Snapshot Oracle sinh thêm một cột Mrow$ chứa Rowid tương ứng với hàng trên bảng chủ. Nhờ vậy cho phép tìm nhanh các hàng thay đổi trong khi làm tươi.
c. Sửa đổi các Snapshot.
Để sửa đổi Snapshot, ta sử dụng câu lệnh ALTER.
Ví dụ: ALTER SNAPSHOT emp PCTFREE 10 ;
d. Xoá Snapshot.
Dùng câu lệnh DROP SNAPSHOT để xoá một Snapshot. Ví dụ: DROP SNAPSHOT emp ;
e. Sử dụng Snapshot.
Các yêu cầu gửi tới Snapshot giống như các yêu cầu được gửi tới Table hoặc View.
Ví dụ: SELECT * FROM emp ;
Trong Read-Only Snapshot, không thể sử dụng các câu lệnh DML như INSERT, UPDATE, DELETE để thêm, cập nhật hay xoá dữ liệu .
f. Tạo View và Synonyms dựa trên Snapshot.
View hoặc Synonyms có thể được định nghĩa dựa trên Snapshot.
Ví dụ: CREAT VIEW sales_dept AS SELECT ename, empno FROM emp WHERE deptno = 10 ;
2.4.3 Update Snapshot
Oracle tạo Updatable Snapshot các bước đầu tương tự như khi tạo Read- Only Snapshot và thêm hai thay đổi sau:
Oracle tạo một bảng đặt tên là USLOG$_tên của Snapshot chứa ROWID và nhóm tạm thời (timestamp) của các hàng đó cập nhật trong Snapshot. Nhóm tạm thời column không được cập nhật cho đến khi có một log được sử dụng trong quá trình làm tươi Snapshot. Oracle tạo một Trigger AFTER ROW trên Snapshot, dựa vào bảng
chứa ROWID và nhóm tạm thời của các hàng được cập nhật và xoá trong Updatable snapshot log. Trigger được đặt tên là USTRG$_tên snapshot.
Sự khác nhau chính giữa Read-Only Snapshot và Updatable Snapshot là Oracle tạo Read-Only View cho Read-Only Snapshot còn Writable View cho Updatable Snapshot.
Ví dụ: Tạo Updatable Snapshot emp
CREATE SNAPSHOT emp FOR UPDATE
AS SELECT * FROM scott. emp@sales. ny.com WHERE empno > 500;
2.4.4 Vấn đề làm tươi các Snapshot a. Giới thiệu
Làm tươi một Snapshot là làm cho Snapshot phản ánh được tình trạng mới nhất của bảng chủ. Cơ chế thực hiện làm tươi các Snapshot đó được giải thích trong mục giới thiệu về cách tạo các Read_only Snapshot. Phần này sẽ trình bày các phương pháp làm tươi các Snapshot.
Oracle sử dụng hai cách làm tươi: Làm tươi nhanh và làm tươi hoàn chỉnh.
Làm tươi nhanh: sử dụng Snapshot log của bảng chủ làm tươi Snapshot đơn bằng cách truyền đi các thay đổi cho các Snapshot cập nhật.
Làm tươi hoàn chỉnh: thay thế toàn bộ dữ liệu trong Snapshot bằng dữ liệu mới của toàn bộ bảng chủ. Cũng như vậy các Snapshot được làm tươi tự động hoặc bằng tay, làm tươi đơn lẻ hoặc làm tươi theo nhóm.
Các Snapshot đơn nói chung sử dụng phương pháp làm tươi nhanh vì chúng mang lại hiệu quả hơn phương pháp làm tươi hoàn chỉnh.
Nếu muốn Snapshot được tự động làm tươi định kỳ phải thực hiện: Định ra khoảng thời gian và phương pháp làm tươi.
Phải có một hoặc nhiều tiến trình ngầm SNP giúp cho việc thực hiện định kỳ làm tươi các Snapshot.
1. Định khoảng làm tươi Snapshot
Là khoảng thời gian xác định giữa hai lần làm tươi Snapshot, khoảng thời gian này được xác định bằng hai tham biến START WITH và NEXT trong mệnh đề REFRESH của câu lệnh CREAT SNAPSHOT hoặc ALTER SNAPSHOT
2. Xác định phương pháp làm tươi
Khi làm tươi một Snapshot ta có thể định ra cho Oracle thực hiện phương pháp FAST, COMPLETE, hoặc FORCED. Chỉ định một trong ba phương pháp trên bằng cách sử dụng mệnh đề REFRESH trong câu lệnh CREATE SNAPSHOT hoặc ALTER SNAPSHOT.
2.4.5 Giải quyết xung đột trong Oracle
Giới thiệu
Mục đích chính của việc giải quyết xung đột là: Đảm bảo tính toàn vẹn dữ liệu và tránh các lỗi dây truyền. Đảm bảo toàn vẹn dữ liệu là đảm bảo các vị trí trong môi trường Bản sao có cùng CSDL. Tránh các lỗi dây truyền đảm bảo cho hệ thống hoạt động trôi chảy.
Oracle phát hiện và ghi vào sổ nhật ký các xung đột cập nhật, xung đột không duy nhất, và xoá các xung đột.
Một số phương pháp giải quyết xung độ trong Oracle
Oracle sử dụng nhiều phương pháp giải quyết xung đột như: Phương pháp giải quyết xung đột cập nhật tối thiểu, tối đa.
Phương pháp giải quyết xung đột cập nhật nhóm thời gian chậm nhất và sớm nhất.
Phương pháp giải quyết xung đột cập nhật cộng thêm và trung bình. Phương pháp giải quyết xung đột cập nhật nhóm ưu tiên, ưu tiên vị
trí.
Mỗi phương pháp có các ưu điểm, nhược điểm riêng. Oracle thường sử dụng kết hợp các phương pháp trên. Dưới đây là một số phương pháp.
Phương pháp cập nhật nhóm ưu tiên, ưu tiên vị trí.
Các nhóm ưu tiên cho phép gán mức ưu tiên tới từng giá trị của từng cột. Nếu một xung đột được phát hiện, bảng có cột ưu tiên có giá trị thấp hơn sẽ được cập nhật sử dụng dữ liệu từ bảng với giá trị ưu tiên cao hơn.
Khi chọn phương pháp nhóm ưu tiên cho giải quyết xung đột, chỉ cần đưa ra cột nào trong bảng là cột ưu tiên.
Ưu tiên vị trí là trường hợp đặc biệt của nhóm ưu tiên. Với ưu tiên vị trí, cột ưu tiên tự động được cập nhật với tên CSDL toàn cục của vị trí khi cập nhật được phát sinh.
Các phương pháp cập nhật phá huỷ và ghi đè
Phương pháp phá huỷ và ghi đè bỏ qua các giá trị từ một trong hai vị trí gốc hoặc vị trí đích và vì vậy có thể không đảm bảo sự hội tụ với nhiều hơn một vị trí chính. Các phương pháp này được thiết kế để sử dụng bởi một vị trí chính và nhiều vị trí snapshot, hoặc với một vài biểu mẫu người dựng định nghĩa.
Thủ tục ghi đè thay thế giá trị hiện thời tại vị trí đích với giá trị mới từ vị trí gốc. Ngược lại, phương pháp phá huỷ bỏ qua giá trị mới từ vị trí gốc.
2.5 An ninh trong CSDL phân tán Oracle
Cơ sở dữ liệu Oracle hỗ trợ tất cả các tính năng bảo mật sẵn có của môi trường CSDL không phân tán cho môi trường CSDL phân tán , bao gồm một số các công cụ và chức năng như:
Xác thực mật khẩu và các vai trò người dùng
Sử dụng một số loại xác thực mở rộng bên ngoài để xác thực người dùng và vai trò người dùng, như: Kerberos, DCE
Mã hoá các gói đăng nhập cho các kết nối client-to-server và server- to-server
Mô hình kiểm soát truy cập bắt buộc (Mandatory Access Control- MAC)
Trong báo cáo này, tác giả chỉ trình bày một số phương pháp đảm bảo an ninh trong CSDL phân tán để có thể áp dụng để giải quyết bài toán đặt ra trong
Phương pháp sử dụng đối tượng trung gian để bảo mật CSDL Kiểm soát CSDL liên kết
Kiểm soát dữ liệu phân tán
2.5.1 Phương pháp sử dụng đối tượng trung gian để bảo mật CSDL
Giải pháp đơn giản nhất bảo vệ dữ liệu trong CSDL là ở mức độ tập tin, chống lại sự truy cập trái phép vào các tập tin CSDL là hình thức mã hóa. Tuy nhiên, mã hóa dữ liệu ở mức độ này là giải pháp mang tính “tất cả trong một”, giải pháp này không cung cấp mức độ bảo mật truy cập đến CSDL ở mức độ bảng (table), cột (column) và dòng (row). Một điểm yếu nữa của giải pháp này là bất cứ ai với quyền truy xuất CSDL đều có thể truy cập vào tất cả dữ liệu trong CSDL. Điều này phát sinh một nguy cơ nghiêm trọng, cho phép các đối tượng với quyền quản trị (admin) truy cập tất cả các dữ liệu nhạy cảm. Thêm vào đó, giải pháp này bị hạn chế vì không cho phép phân quyền khác nhau cho người sử dụng CSDL.
Giải pháp thứ hai, đối nghịch với giải pháp mã hóa cấp tập tin nêu trên, giải quyết vấn đề mã hóa ở mức ứng dụng. Giải pháp này xử lý mã hóa dữ liệu trước khi truyền dữ liệu vào CSDL. Những vấn đề về quản lý khóa và quyền truy cập được hỗ trợ bởi ứng dụng. Truy vấn dữ liệu đến CSDL sẽ trả kết quả dữ liệu ở dạng mã hóa và dữ liệu này sẽ được giải mã bởi ứng dụng. Giải pháp này giải quyết được vấn đề phân tách quyền an ninh và hỗ trợ các chính sách an ninh dựa trên vai trò (Role Based Access Control – RBAC). Tuy nhiên, xử lý mã hóa trên tầng ứng dụng đòi hỏi sự thay đổi toàn diện kiến trúc của ứng dụng, thậm chí đòi hỏi ứng dụng phải được viết lại. Đây là một vấn đề đáng kể cho các công ty có nhiều ứng dụng chạy trên nhiều nền CSDL khác nhau.
Từ những phân tích hai giải pháp nêu trên, có thể dễ dàng nhận thấy một giải pháp bảo mật CSDL tối ưu cần hỗ trợ các yếu tố chính sau:
1. Hỗ trợ mã hóa tại các mức dữ liệu cấp bảng, cột, hàng.
2. Hỗ trợ chính sách an ninh phân quyền truy cập đến mức dữ liệu cột, hỗ trợ các chính sách an ninh dựa trên vai trò - RBAC.
3. Cơ chế mã hóa không ảnh hưởng đến các ứng dụng hiện tại.
Dưới đây là hai mô hình thỏa mãn các yêu cầu trên, đặc biệt là yêu cầu thứ ba.
a. Phương pháp xây dựng tầng mã hoá để bảo mật CSDL
Trong mô hình này, một CSDL trung gian (proxy) được xây dựng giữa ứng dụng và CSDL gốc. Hình (Sơ đồ 1). CSDL trung gian này có vai trò mã hóa dữ liệu trước khi cập nhật vào CSDL gốc, đồng thời giải mã dữ liệu trước khi cung cấp cho ứng dụng. CSDL trung gian đồng thời cung cấp thêm các chức năng quản lý khóa, xác thực người dùng và cấp phép truy cập.
Giải pháp này cho phép tạo thêm nhiều chức năng về bảo mật cho CSDL. Tuy nhiên, mô hình CSDL trung gian đòi hỏi xây dựng một ứng dụng CSDL tái tạo tất cả các chức năng của CSDL gốc.
Ứng dụng CSDL trung gian CSDL Oracle Dữ liệu giải mã Dữ liệu mã hoá Dữ liệu giải mã Dữ liệu mã hoá