Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu ppt

41 377 1
Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu ppt

Đ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

Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu Roger Sanders, Quản lý cao cấp, EMC Tóm tắt: Bài viết này giới thiệu khái niệm cơ bản của tính nhất quán cơ sở dữ liệu và các cơ chế khác nhau trong sử dụng của DB2 để cho phép làm việc trong cả môi trường dữ liệu một người dùng và nhiều người dùng. Đây là bài viết thứ 6 trong bảy bài viết hỗ trợ bạn bắt đầu làm việc với DB2 9 trên hệ điều hành Linux, UNIX, và Windows™ chuẩn bị cho bài thi lấy chứng chỉ 730. Trước khi bạn bắt đầu Về loạt bài viết này Suy nghĩ về việc có được/đạt được chứng chỉ DB2 (Bài thi số 730)? Để đạt được điều này bạn tiếp cận một cách chính xác theo các hướng dẫn. Đây là loạt bài gồm bảy bài viết chuẩn bị cho cuộc thi lấy chứng chỉ DB2 loạt bài viết này giới thiệu mọi thứ cơ bản cần thiết Các chủ đề này bạn cần phải hiểu rõ trước khi bạn làm bài kiểm tra đầu tiên. Thậm chí kể cả khi bạn chưa có kế hoạch để có được chứng chỉ này, thì tập hợp các bài viết này vẫn là nơi tốt để bạn tìm hiểu xem cái gì mới khi sử dụng DB2 9. Về bài viết này Bài viết này sẽ chỉ dẫn cho bạn khái niệm cơ bản nhất của tính nhất quán dữ liệu và các cơ chế khác nhau được sử dụng bởi DB2 9 trong Linux, UNIX và Windows để thực thi được trong cả hai môi trường cơ sở dữ liệu một người và nhiều người sử dụng. Đây là bài viết thứ sáu trong loạt bảy bài viết bạn có thể sử dụng để chuẩn bị cho các bài thi Cơ bản về DB2 9 (DB2 9 Fundamental). Điểm trọng yếu của bài viết này là giới thiệu các mục tiêu chính, đó là "tính nhất quán của dữ liệu". Bạn có thể xem các mục tiêu này tại: http://www-03.ibm.com/certify/tests/obj730.shtml. Các đối tượng Sau khi hoàn thành bài học này, bạn có thể:  Xác định các nhân tố ảnh hưởng đến việc thực hiện khóa  Danh sách các đối tượng được điều khiển  Xác định các đặc trưng của các khóa DB2  Xác định mức độc lập được sử dụng để đưa ra trạng tái Các điều kiện tiên quyết Để hiểu được một số vấn đề quan trọng của bài viết này, bạn nên tham gia vào các phần sau:  Đối tượng: Là bất kỳ cái gì trong cơ sở dữ liệu mà có thể được tạo ra hay thực thi với SQL (Ví dụ: các bảng, các chỉ mục, các gói, ).  Bảng: Là một cấu trúc logic được sử dụng để hiển thị dữ liệu như là một tập hợp của các hàng không định thứ tự với một số cột xác định. Mỗi một cột chứa một tập giá trị, trong đó mỗi giá trị là cùng kiểu với nhau (hoặc kiểu con của kiểu dữ liệu cột); định nghĩa cột cho phép xác định cấu trúc của bảng và các hàng của bảng chứa dữ liệu chính xác của bảng đó.  Bản ghi: Thể hiện dữ liệu lưu trữ theo từng hàng trong bảng.  Trường: Thể hiện của cột được lưu trong bảng.  Giá trị: Xác định thành phần dữ liệu cái được tìm thấy tại mỗi hàng và cột trong bảng cơ sở dữ liệu.  Ngôn ngữ truy vấn cấu trúc (SQL): Là ngôn ngữ chuẩn được sử dụng để định nghĩa các đối tượng và thực thi dữ liệu trong cơ sở dữ liệu quan hệ. Để có nhiều thông tin hơn về SQL hãy xem bài viết thứ tư trong loạt bài viết này.  Bộ tối ưu hóa DB2: Là thành phần của bộ tiền biên dịch SQL (precompiler) là cái được chọn để truy cập cho câu lệnh SQL Data Manipulation Language (DML)(Ngôn ngữ xử lý dữ liệu) bằng việc mô hình hóa giá trị thực thi của một số truy cập riêng biệt và được chọn như là một cách với số chi phí cần thiết nhỏ nhất. Các yêu cầu hệ thống Bạn không cần thiết phải có bản sao chép của DB2 9 để hoàn thành bài học này. Tuy nhiên, bạn sẽ nhận được nhiều kết quả của bài học này hơn nếu bạn tải phiên bản dùng thử của IBM DB2 9 để làm việc trong bài học này. Các phiên làm việc Tìm hiểu tính nhất quán dữ liệu Tính nhất quán dữ liệu là gì? Cách để đưa được câu trả lời tốt nhất cho câu hỏi này đó làm dựa vào ví dụ. Công ty bạn làm việc là một chuỗi các nhà hàng và công việc bạn cần làm là xây dựng một cơ sở dữ liệu để có thể lưu trữ được dữ liệu cho từng nhà hàng này. Để phiên làm việc giải quyết vấn đề này đơn giản, cơ sở dữ liệu của bạn chứa bảng thống kê cho từng nhà hàng trong chuỗi các nhà hàng. Mỗi khi hàng hóa được cung cấp hoặc được sử dụng bởi từng nhà hàng riêng biệt thì bảng thống kê tương ứng của từng nhà hàng sẽ được sửa chữa tương ứng phù hợp với thay đổi đó. Bây giờ, khi có một số chai nước sốt cà chua được di chuyển từ một nhà hàng này tới một nhà hàng khác. Khi đó, bảng thống kê báo cáo sẽ bị thay đổi tương ứng, số chai nước sốt cà chua của nhà hàng ban đầu cần phải giảm bớt đi và số chai nước sốt cà chua của nhà hàng nhận sẽ được tăng lên tương ứng. Nếu bạn chỉ giảm số chai nước sốt cà chua của nhà hàng ban đầu mà lại không tăng được số chai nước sốt cà chua của nhà hàng nhận trong bảng thống kê, dữ liệu sẽ trở lên mâu thuẫn - và vì thế tổng số chai nước sốt cà chua của chuỗi nhà hàng là không được chính xác. Dữ liệu trong cơ sở dữ liệu có thể trở lên mâu thuẫn nếu người dùng quên thực hiện các thao tác thay đổi cần thiết (như trong ví dụ trước), nếu hệ thống bị phá vỡ trong khi người dùng đang thực hiện các thay đổi hoặc khi ứng dụng cơ sở dữ liệu vì một lý do nào đó bị dừng đột ngột. Sự mâu thuẫn cũng có thể xảy ra khi các người sử dụng truy cập đến cùng một bảng cơ sở dữ liệu tại cùng một thời gian. Để tránh việc xảy ra mâu thuẫn dữ liệu, đặc biệt phải thận trọng khi sử dụng trong môi trường nhiều người dùng, DB2 được thiết kế hỗ trợ để tránh sự mâu thuẫn trong dữ liệu:  Các phiên làm việc (transactions)  Các mức cô lập (iosolation levels)  Các khóa (locks) Các phiên làm việc và các khung phiên làm việc Mỗi phiên làm việc (được biết như đơn vị công việc) là một dãy gồm một hoặc nhiều các xử lý SQL được nhóm lại với nhau như một đơn vị riêng lẻ, phiên làm việc thường được sử dụng để xử lý ứng dụng. Sự bắt đầu và kết thúc của phiên làm việc được định nghĩa là tập hợp các điểm xác định của cơ sở dữ liệu; sẽ có hai trường hợp hoặc là các xử lý SQL thực thi cho các cách phiên làm việc được áp dụng cho cơ sở dữ liệu (được xử lý - committed) hoặc là các xử lý của SQL không được thực hiện đầy đủ và bỏ qua (quay trở lại - rolled back). Với việc nhúng các ứng dụng SQL và các tập mã lệnh (script) từ Command Center (Trung tâm câu lệnh) hoặc trên Script Center (Trung tâm tập lệnh) hoặc Command Line Processor (Xử lý dòng lệnh) các cách phiên làm việc được khởi tạo một cách tự động cho lần đầu khi các câu lệnh SQL được thực thi, hay là sau khi kết nối đến cơ sở dữ liệu thành công thì các phiên làm việc lúc này mới bị ngắt. Cho một lần khởi tạo, phiên làm việc phải được ngắt bởi người dùng hoặc bởi ứng dụng đã khởi động phiên làm việc đó trừ khi bộ xử lý biết trao quyền tự động (trong trường hợp này mỗi một câu lệnh SQL cho phép xử lý được xem như một phiên làm việc đơn lẻ khi đó xử lý được nhanh chóng thực hiện). Trong hầu hết các trường hợp, các phiên làm việc được thực thi hoặc bằng câu lệnh COMMIT hoặc bằng câu lệnh ROLLBACK. Khi câu lệnh COMMIT được thực thi, tất cả các thay đổi tới cơ sở dữ liệu khi các phiên làm việc khởi tạo được cố định có nghĩa là các thay đổi sẽ được lưu trữ tới đĩa. Khi câu lệnh ROLLBACK được thực thi tất cả các thay đổi được tạo ra tới cơ sở dữ liệu khi phiên làm việc được khởi tạo được quay lại và cơ sở dữ liệu được trả lại ở trạng thái trước khi phiên làm việc được thực hiện. Trong một trường hợp khác dữ liệu được đảm bảo trả lại trạng thái phù hợp khi hoàn thành phiên làm việc. Điều quan trọng là trong khi phiên làm việc cung cấp cơ sở dữ liệu đảm bảo thì sự thay đổi dữ liệu chỉ bị ngắt sau khi phiên làm việc được thực hiện thành công, điều đó dẫn tới người dùng hay các ứng dụng cho phép đảm bảo rằng một dãy các xử lý SQL được thực hiện trong mỗi phiên làm việc luôn luôn đưa ra kết quả trong cơ sở dữ liệu xác định. Hiệu quả của các xử lý COMMIT và ROLLBACK Chú ý rằng, các phiên làm việc thường bị ngắt khi thực thi câu lệnh SQL dạng COMMIT hay ROLLBACK. Để hiểu rõ các câu lệnh này làm việc như thế nào, bạn tham khảo tới ví dụ trong phần này. Nếu theo các câu lệnh SQL được hiển thị phần sau: Ví dụ 1. Dòng công việc đơn giản gồm ba phiên làm việc CONNECT TO MY_DB CREATE TABLE DEPARTMENT (DEPT_ID INTEGER NOT NULL, DEPT_NAME VARCHAR(20)) INSERT INTO DEPARTMENT VALUES(100, 'PAYROLL') INSERT INTO DEPARTMENT VALUES(200, 'ACCOUNTING') COMMIT INSERT INTO DEPARTMENT VALUES(300, 'SALES') ROLLBACK INSERT INTO DEPARTMENT VALUES(500, 'MARKETING') COMMIT Kết quả, bảng DEPARTMENT được tạo ra có dạng như sau: DEPT_ID (Mã phòng) DEPT_NAME (Tên phòng) 100 PAYROLL 200 ACCOUNTING 500 MARKETING Kết quả như vậy là bởi vì khi câu lệnh COMMIT đầu tiên được thực thi, nó tạo ra bảng DEPARTMENT và chèn hai bản ghi vào bảng DEPARTMENT vĩnh viễn. Một mặt khác, khi câu lệnh ROLLBACK đầu tiên được thực hiện thì bản ghi thứ ba được chèn thêm vào bảng DEPARTMENT và đồng thời bảng được trả lại ở trạng thái trước khi câu lệnh chèn thêm phần tử này được thực hiện. Cuối cùng, khi câu lệnh COMMIT thứ hai được thực hiện thì thực hiện chèn thêm bản ghi thứ tư xác định vào bảng DEPARMENT và cơ sở dữ liệu tiếp tục trả lại trạng thái phù hợp. Khi bạn nhìn thấy ví dụ này, lệnh xử lý xác nhận hoặc quay trở lại chỉ thực hiện thay đổi phù hợp để tạo ra phiên làm việc cái mà câu lệnh commit hay câu lệnh rollback thực hiện xử lý. Khi mà dữ liệu bị thay đổi không được xem xét thì các người sử dụng và các ứng dụng khác luôn luôn không thể nhìn thấy chúng (tất nhiên có một ngoại lệ cái mà sẽ được trình bày ở phần sau), và chúng có thể quay lại kết quả đơn giản trước khi thực hiện xử lý quay trở lại. Tuy nhiên khi một dữ liệu thay đổi được xem xét chúng trở lên có tác dụng với các người dùng và các ứng dụng khác và có thể không mất thời gian di chuyển bởi xử lý quay trở lại. Tác dụng của các phiên làm việc không thực hiện thành công Chúng tôi đã trình bày điều gì xảy ra khi một phiên làm việc bị ngắt bởi câu lệnh COMMIT hoặc câu lệnh ROLLBACK. Nhưng vấn đề gì xảy ra nếu hệ thống xảy ra lỗi trước khi phiên làm việc có thể hoàn thành? Trong trường hợp này, Hệ quản trị cơ sở dữ liệu DB2 sẽ quay lại tất cả các sự thay đổi không được xem xét để có thể lưu giữ cơ sở dữ liệu phù hợp với giả định là có tồn tại ngay từ khi phiên làm việc được khởi tạo. Hình 1 so sánh tác dụng của phiên làm việc thành công với các phiên làm việc bị lỗi trước khi nó được ngắt thành công Hình 1. So sánh sự giữa phiên làm việc thành công và không thành công Các mức độ độc lập và thống nhất Điều gì không thể xảy ra khi nhiều người dùng cùng truy cập đến một cơ sở dữ liệu Trong các môi trường một người dùng, mỗi một phiên làm việc chạy liên tục và không xảy ra đụng độ với các phiên làm việc khác. Tuy nhiên, trong môi trường nhiều người sử dụng các phiên làm việc có thể (và thường xuyên) xảy ra tình trạng cùng chạy đồng thời tại một thời điểm. Trong trường hợp này, mỗi một phiên làm việc chạy tuần tự có tiềm tàng khả năng cản trở với các phiên làm việc chạy ở chế độ chen vào hoặc song song, điều này có nghĩa là các kết quả của chạy song song đồng thời nhận được so với các kết quả chạy tuần tự. Khi các phiên làm việc song song được sử dụng trong các môi trường nhiều người dùng, có bốn trường hợp hay các điều ngoại lệ có thể xảy ra:  Cập nhật thiếu (Lost update): Điều này xảy ra khi hai phiên làm việc cùng đọc và sau đó cập nhật cho cùng một dữ liệu và khi đó có một trong hai phiên làm việc cập nhật bị mất. Ví dụ: Phiên làm việc 1 và Phiên làm việc 2 cùng đọc một dòng của dữ liệu và cả hai đều thực hiện tính toán dựa trên dữ liệu đã đọc được. Nếu Phiên làm việc 1 thực hiện cập nhật giá trị mới cho hàng và Phiên làm việc 2 cũng thực hiện tương tự thì thao tác xử lý cập nhật của Phiên làm việc 1 là bị mất. Bởi vì vậy nên DB2 được thiết kế không cho phép xảy ra trường hợp đặc biệt này.  Đọc dư thừa (Dirty read): Điều này xảy ra khi mà phiên làm việc thực hiện đọc dữ liệu không được xem xét. Ví dụ: Phiên làm việc 1 thay đổi hàng của dữ liệu và Phiên làm việc 2 đọc đến dữ liệu đã bị thay đổi trước khi Phiên làm việc 1 thực hiện được thao tác thay đổi đó. Nếu Phiên làm [...]... các hàng đã thực hiện lần trước Để duy trì tính ổn định của cơ sở dữ liệu và tính toàn vẹn của dữ liệu thì khi cho phép nhiều ứng dụng cùng truy cập đến cùng một dữ liệu tại cùng một thời điểm thì phải đảm bảo tính thống nhất Một trong các cách mà DB2 cho phép thống nhất cơ sở dữ liệu đó là sử dụng các mức độc lập, cái mà cho phép xác định dữ liệu được sử dụng như thế nào trong một phiên làm việc hoặc... - IN) không gian bảng và các bảng Khóa có thể đọc dữ liệu trong bảng đã được khóa (bao gồm dữ liệu không được xem xét) nhưng không thể thay đổi được dữ liệu này Trong chế độ này, khóa sở hữu không yêu cầu các khóa ở mức độ hàng vì thế các ứng dụng tồn tại có thể đọc và thay đổi dữ liệu trên bảng Khóa sở hữu có thể đọc dữ liệu trong bảng đã được khóa nhưng có thể không thay đổi dữ liệu này Tiếp đó,... để truy cập dữ liệu nguồn thực hiện dừng xử lý một cách đơn giản cho đến khi phiên làm việc đang xử lý đã bị ngắt và khóa không phù hợp được giải phóng Các thuộc tính khóa Tất cả các khóa đều có các thuộc tính khóa cơ bản sau:  Đối tượng: Thuộc tính Đối tượng xác định dữ liệu nguồn đang được khóa Hệ quản trị cơ sở dữ liệu DB2 yêu cầu khóa trên dữ liệu nguồn như các không gian bảng, các bảng, và các... hợp, hệ quản trị cơ sở dữ liệu DB2 hoàn toàn đòi hỏi có khóa khi mà cần thi t và các khóa này tồn tại mãi trong các điều khiển của hệ quản trị cơ sở dữ liệu DB2 Ngoại trừ trong trường hợp mức độ độc lập đọc không xem xét được sử dụng, phiên làm việc không bao giờ cần thi t phải có yêu cầu khóa Thực tế, chỉ đối tượng cơ sở dữ liệu có thể thực sự yêu cầu cần khóa bởi phiên làm việc trên một bảng Hình 6 mô... của bảng đã tồn tại được phiên làm việc yêu cầu khóa ở mức độ bảng khi thực hiện xử lý Hệ quản trị cơ sở dữ liệu DB2 cũng có thể làm cho bị ảnh hưởng đến một phiên làm việc xác định để yêu cầu khóa ở mức bảng khi thực thi câu lệnh LOCK TABLE theo khuôn dạng: LOCK TABLE [Tên bảng] IN [SHARE | EXCLUSIVE] MODE Trong đó Tên bảng được dùng để xác định tên của bảng đang tồn tại để yêu cầu khóa ở mức độ bảng... trong bảng và các hàng đó có thể khóa bởi Shared Tuy nhiên, nếu bảng ở chế độ khóa Share thì các hàng ở mức Share trong bảng không thể được yêu cầu bởi chính khóa sở hữu Nếu hoặc là bảng hay hàng ở chế độ khóa Share thì các phiên làm việc tồn tại khác có thể đọc dữ liệu nhưng không thể thay đổi dữ liệu đó Khóa sở hữu và của bất kỳ ứng dụng tồn tại khác có thể đọc và thay đổi dữ liệu trên bảng đã bị khóa... With Intent đổi dữ liệu trên bảng đã bị khóa Khóa sở hữu giành Các bảng được các khóa trên các hàng mà nó đọc vì thế các ứng dụng tồn tại khác có thể đọc nhưng không thể Exclusive (SIX)) cập nhật dữ liệu trong bảng đã bị khóa Khóa sở hữu có thể cập nhật trong bảng đã bị khóa Cập nhật (Update (U)) Các bảng và khóa sở hữu tự động giành được các khóa tập và các trung (Exclusive) trên bất kỳ hàng nào đã... Kích cỡ: Thuộc tính kích cỡ để xác định kích thước vật lý của từng phần dữ liệu được khóa Khóa không phải luôn điều khiển cho toàn bộ dữ liệu nguồn Ví dụ, hiếm khi bạn cần ứng dụng thực hiện điều khiển xử lý trong toàn bộ bảng, Hệ quản trị cơ sở dữ liệu DB2 có thể cho phép ứng dụng thực hiện điều khiển thông qua hàng đặc biệt trong bảng  Thời gian tồn tại: Thuộc tính thời gian tồn tại xác định thời... cách logic cơ chế được sử dụng để xác định kiểu khóa cần thi t cho đối tượng tham chiếu Hình 6 Các khóa cần thi t như thế nào Hệ quản trị cơ sở dữ liệu DB2 luôn luôn cố gắng để đạt được các khóa ở mức hàng Tuy nhiên, đặc trưng này làm cho có thể bị sửa chữa bởi việc thực thi một dạng đặc biệt của câu lệnh ALTER TABLE, theo dạng như sau: ALTER TABLE [Tên bảng] LOCKSIZE TABLE Trong đó Tên bảng dùng để... cơ chế được sử dụng để liên kết dữ liệu nguồn với từng phiên làm việc đơn với mục đích điều khiển làm thế nào các phiên làm việc khác tương tác với nguồn trong khi dữ liệu nguồn vẫn liên kết với phiên làm việc gốc (Phiên làm việc mà dữ liệu được liên kết được khóa và được gọi là hold khóa hay own khóa.) Hệ quản trị cơ sở dữ liệu DB2 sử dụng khóa để ngăn chặn các phiên làm việc từ việc truy cập dữ liệu . Chuẩn bị cho kỳ thi 730 cơ bản về DB2 9, Phần 6: Nhất quán dữ liệu Roger Sanders, Quản lý cao cấp, EMC Tóm tắt: Bài viết này giới thi u khái niệm cơ bản của tính nhất quán cơ sở dữ liệu. cái gì mới khi sử dụng DB2 9. Về bài viết này Bài viết này sẽ chỉ dẫn cho bạn khái niệm cơ bản nhất của tính nhất quán dữ liệu và các cơ chế khác nhau được sử dụng bởi DB2 9 trong Linux, UNIX. thực thi được trong cả hai môi trường cơ sở dữ liệu một người và nhiều người sử dụng. Đây là bài viết thứ sáu trong loạt bảy bài viết bạn có thể sử dụng để chuẩn bị cho các bài thi Cơ bản về DB2

Ngày đăng: 07/08/2014, 09:23

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan