Bài giảng cơ sở dữ liệu nâng cao

Chương 1. Hệ quản trị cơ sở dữ liệu 7 1.1. Quan niệm về CSDL . 7 1.2. Các khả năng của một hệ quản trị cơ sở dữ liệu. . 7 Chương 2. Cơ sở dữ liệu hướng đối tượng . 9 2.1. Nhu cầu về hệ thống cơ sở dữ liệu hướng đối tượng . 9 2.1.1. Các đối tượng phức tạp 9 2.1.2. Quản lý các tri thức 9 2.1.3. Quản trị các dữ liệu phân tán 10 2.1.4. Nhu cầu về hệ thống cơ sở dữ liệu hướng đối tượng . 10 2.2. Khái niệm về hướng đối tượng 11 2.2.1. Đối tượng . 12 2.2.2. Lớp đối tượng 12 2.2.3. Cá thể . 13 2.2.4. Kế thừa 13 2.3. Cơ sở dữ liệu hướng đối tượng 13 2.4. Thiết kế cơ sở dữ liệu hướng đối tượng . 14 2.4.1. Phân lớp . 14 2.4.2. Tổng quát hóa và đặc biệt hóa 14 2.4.3. Gộp 15 2.5. Xây dựng cơ sở dữ liệu hướng đối tượng 15 Chương 3. Cơ sở dữ liệu phân tán 17 3.1. Các phương pháp phân tán dữ liệu 17 3.1.1. Khái niệm về phân tán dữ liệu 17 3.1.1.1. Các lý do phân mảnh . 17 3.1.1.2. Các kiểu phân mảnh 17 3.1.1.3. Mức độ phân mảnh 19 3.1.1.4. Quy tắc phân mảnh đúng đắn 19 3.1.1.5. Các kiểu cấp phát 19 3.1.1.6. Các yêu cầu thông tin 19 3.1.2. Phân mảnh ngang . 20 3.1.2.1. Yêu cầu thông tin của phân mảnh ngang. 20 3.1.2.2. Phân mảnh ngang nguyên thủy 21 3.1.2.3. Phân mảnh ngang dẫn xuất 23 3.1.3. Phân mảnh dọc . 24 3.1.4. Cấp phát . 24 3.2. Kiểm soát dữ liệu ngữ nghĩa . 26 3.2.1. Quản lý khung nhìn 26 3.2.1.1. Khung nhìn trong quản lý tập trung . 26 3.2.1.2. Cập nhật qua các khung nhìn . 26 3.2.1.3. Khung nhìn trong cơ sở dữ liệu phân tán . 27 3.2.2. An toàn dữ liệu 27 3.2.2.1. Kiểm soát cấp quyền tập trung 27 3.2.2.2. Kiểm soát cấp quyền phân tán . 28 3.3. Quản lý giao dịch và điểu khiền đồng thời phân tán 28 3.3.1. Các khái niệm cơ bản về giao dịch . 28 3.3.1.1. Tính nguyên tử 29 3.3.1.2. Mục dữ liệu . 29 http://www.************** 6 3.3.1.3. Khóa . 30 3.3.1.4. Kiểm soát hoạt động đồng thời bằng khóa . 30 3.3.1.5. Khóa sống (livelock) . 31 3.3.1.6. Khóa “cứng” (deadlock) 31 3.3.1.7. Tính khả tuần tự của lịch biểu. 32 3.3.1.8. Bộ xếp lịch 33 3.3.1.9. Nghi thức 33 3.3.2. Mô hình giao dịch đơn giản 33 3.3.2.1. Ý nghĩa của giao dịch – hàm đặc trưng 33 3.3.2.2. Kiểm tra tính khả tuần tự bằng đồ thị có hướng. 35 3.3.3. Nghi thức khóa 2 pha . 35 3.3.4. Mô hình khóa đọc và khóa ghi . 36 3.3.4.1. Ý nghĩa của giao dịch với khóa đọc và khóa ghi 36 3.3.4.2. Đồ thị tuần tự hóa trong các giao dịch Rlock và Wlock . 36 Chương 4. Hệ trợ giúp ra quyết định . 38 4.1. Giới thiệu về hệ trợ giúp ra quyết định 38 4.2. Thiết kế cơ sở dữ liệu cho hệ trợ giúp ra quyết định 39 4.2.1. Thiết kế logic. 39 4.2.2. Thiết kế vật lý 40 4.3. Kho dữ liệu và kho dữ liệu chuyên đề . 40 4.3.1. Kho dữ liệu 41 4.3.2. Kho dữ liệu chuyên đề. 41 4.3.3. Các lược đồ về chiều 42 4.4. Xử lý phân tích trực tuyến . 43 4.4.1. Giới thiệu. 43 4.4.2. Bảng chéo 43 4.4.3. Cơ sở dữ liệu nhiều chiều . 44 4.5. Khai phá dữ liệu 44

pdf45 trang | Chia sẻ: tlsuongmuoi | Lượt xem: 2404 | Lượt tải: 3download
Bạn đang xem trước 20 trang tài liệu Bài giảng cơ sở dữ liệu nâng cao, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ng có khả năng cập nhật. Cập nhật qua khung nhìn chỉ được xử lý tự động nếu chúng có thể được lan truyền chính xác đến các quan hệ cơ sở. Hiện nay hầu hết các hệ quản trị CSDL quan hệ hiện đại đều hỗ trợ cập nhật dữ liệu qua khung nhìn bằng cách sử dụng các cơ chế xử lý ngầm, ví dụ như trigger. 3.2.1.3. Khung nhìn trong CSDL phân tán Định nghĩa khung nhìn đều giống nhau trong các hệ quản trị CSDL tập trung hay phân tán. Tuy nhiên khung nhìn trong các hệ thống phân tán có thể được dẫn xuất từ các quan hệ đã được phân mảnh được lưu ở nhiều vị trí khác nhau. Khi một khung nhìn được định nghĩa, tên và câu vấn tin truy xuất của nó sẽ được lưu hồ sơ cấu trúc của CSDL. Bởi vì khung nhìn có thể được sử dụng làm quan hệ cơ sở trong các ứng dụng, định nghĩa của chúng phải được lưu trong CSDL giống như các quan hệ cơ sở. Tùy thuộc vào mức độ tự trị của vị trí được đưa ra bởi hệ thống, các định nghĩa khung nhìn có thể được tập trung tại một vị trí, được nhân bản một phần hoặc toàn bộ. Trong mỗi trường hợp, thông tin liên kết tên khung nhìn với vị trí định nghĩa của nó phải được nhân bản. Nếu định nghĩa khung nhìn không có tại vị trí định nghĩa của nó phải được nhân bản. Nếu định nghĩa khung nhìn không có tại vị trí đưa ra câu vấn tin thì sẽ phải truy xuất từ xa đến vị trí có định nghĩa khung nhìn đó. 3.2.2. An toàn dữ liệu An toàn CSDL là một nhiện vụ quan trọng của hệ thống CSDL nhằm bảo vệ dữ liệu không bị truy xuất “bất hợp pháp”. An toàn dữ liệu bao gồm hai vấn đề: bảo vệ dữ liệu và kiểm soát cấp quyền. Bảo vệ dữ liệu nhằm tránh cho những người “không có phân sự” hiểu được nội dung vật lý của dữ liệu. Chức năng này do hệ thống tập tin đảm trách trong các hệ điều hành tập trung và phân tán. Phương pháp chính là mã hóa dữ liệu, được dùng cho cả các thông tin được lưu trên đĩa lẫn thông tin trao đổi trên mạng. Dữ liệu đã mã hóa chỉ có thể được “giải mã” bởi những người sử dụng được quyền. Kiểm soát cấp quyền phải đảm bảo rằng chỉ những người được phép mới được thực hiện các thao tác trên CSDL. Những người sử dụng khác nhau có thể có quyền truy xuất đến một lương lớn dữ liệu dưới sự kiểm soát thống nhất của một hệ thống tập trung hay phân tán. V ì thế các DBMS phân tán hay tập trung phải có khả năng hạn chế truy xuất một phần dữ liệu đối với một tập con những người sử dụng. 3.2.2.1. Kiểm soát cấp quyền tập trung Ba tác nhân chính có liên quan đến việc kiểm soát cấp quyền là: người sử dụng, là người kích hoạt các chương trình ứng dụng; các thao tác được gắn vào ứng dụng; và các đối tượng CSDL sẽ được các thao tác tác động. Kiểm soát cấp quyền bao gồm việc xem bộ ba (người sử dụng, thao tác, đối tượng) có được phép tiến hành hay không? Một quyền hạn xác định rằng người sử dụng có quyền thực hiện một thao tác thuộc loại nào trên một đối tượng. Khai báo một người sử dụng (hay nhóm người sử dụng) với hệ thống thường được thực hiện bằng một cặp (tên người sử dụng, mật khẩu). Cả tên và mật khẩu đều phải trình ra khi đăng nhập vào hệ thống. Điều đó ngăn chặn những người không có thẩm quyền xâm nhập vào hệ thống. Quyền hạn biểu thị mối liên hệ giữa những người sử dụng và một đối tượng ứng với một tập các thao tác cụ thể. Trong các hệ quản trị CSDL dựa trên SQL, một thao tác là một câu lệnh bậc cao 28 như SELECT, INSERT, UPDATE, hoặc DELETE… Các quyền được định nghĩa hoặc thu hồi bằng các lệnh: GRANT ON TO REVOKE FROM TO 3.2.2.2. Kiểm soát cấp quyền phân tán Các vấn đề của kiểm soát cấp quyền trong môi trường phân tán có nguồn gốc từ sự kiện là các đối tượng và các chủ thể đề phân tán. Những vấn đề này bao gồm: cấp quyền cho người sử dụng ở xa, quản lý các quy tắc cấp quyền phân tán và việc xử lý các khung nhìn và các nhóm người sử dụng. Có hai giải pháp cho vấn đề này: 1. Thống tin xác nhận người sử dụng được nhân bản tại tất cả các vị trí trong mạng. Các chương trình cụ bộ cũng phải chỉ rõ tên và mật khẩu của người sử dụng. 2. Tất cả các vị trí trong hệ thống phân tán cũng nhận diện và xác nhận nhau tương tự như cách người sử dụng thực hiện. Giao tiếp giữa các vị trí được bảo vệ bằng cách sử dụng mật khẩu của vị trí. Một khi vị trí đã được xác nhận thì không cần phải xác nhận người sử dụng của chúng. Các quy tắc cấp quyền phân tán được diễn tả theo cùng phương thức như trong hệ tập trung. Giống như các định nghĩa khung nhìn, chúng phải được lưu vào trong hồ cơ cấu trúc của CSDL. Chúng có thể được nhân bản hoàn toàn tại mỗi vị trí hoặc lưu tại các vị trí của các đối tượng cần truy xuất. Ưu điểm chính của lối tiếp cận nhân bản hoàn toàn là việc cấp quyền có thể được xử lý bằng kỹ thuật hiểu chỉnh vấn tin vào lúc biên dịch. Giải pháp thứ hai tốt hơn trong trường hợp tính chất cục bộ của tham chiếu rất cao. Tuy nhiên việc cấp quyền phân tán không thể kiểm soát được vào lúc biên dịch. Khung nhìn có thể được xem như các đối tượng của cơ chế cấp quyền. Khung nhìn là những đối tượng phức tạp, nghĩa là nó được cấp tạo bởi những đối tượng cơ sở khác. Vì thế trao quyền truy xuất đến một khung nhìn được dịch thành trao quyền truy xuất đến các đối tượng cơ sở. Nếu định nghĩa khung nhìn và các quy tắc cấp quyền được nhân bản hoàn toàn thì việc biên dịch này khá đơn giản và có thể thực hiện tại chỗ. Nhóm các người sử dụng dùng cấp quyền chung làm đơn giản công việc quản lý CSDL phân tán. Trong các DBMS tập trung, khái niệm “mọi người sử dụng” có thể được xem là nhóm công cộng. Trong môi trường phân tán, nhóm công cộng biểu thị cho tất cả mọi người sử dụng của hệ thống. Tuy nhiên, người ta thường đưa ra một mức trung gian nhằm mô tả nhóm công cộng tại một vị trí cụ thể. Quản lý các nhóm trong môi trường phân tán đặt ra một số vấn đề phải giải quyết bởi vì các chủ thể của một nhóm có thể cư ngụ tại nhiều vị trí khác nhau và quyền truy xuất đến một đối tượng có thể được trao cho nhiều nhóm, mà bản thân chúng lại phân tán. Nếu thông tin của nhóm và các quy tắc cấp quyền được nhân bản hoàn toàn tại tất cả mọi vị trí thì việc duy trì quyền truy xuất tương tự như trong hệ thống tập trung. Tuy nhiên việc duy trì các bản sao này hết sức tốn kém. 3.3. Quản lý giao dịch và điểu khiền đồng thời phân tán 3.3.1. Các khái niệm cơ bản về giao dịch Giao dịch là một lần thực hiện chương trình. Đôi khi để biểu thị một giao dịch T ta viết T: begin…end. Giữa begin và end là những bước cơ bản của giao dịch. Chương trình này có thể là một câu vấn tin hoặc một chương trình ngôn ngữ chủ với các lời gọi được gắn vào một câu vấn tin. Có 29 nhiều thực hiện độc lập của cùng một chương trình T được tiến hành đồng thời ở nhiều vị trí khác nhau trên mạng; mỗi thực hiện này là một giao dịch khác nhau. Một giao dịch sẽ đọc dữ liệu và ghi dữ liệu vào CSDL, qua một vùng làm việc riêng (private) – gọi là vùng bộ nhớ tính toán tạm thời. Cụ thể là các tính toán do giao dịch thực hiện sẽ không có tác dụng trên CSDL cho đến khi các giá trị mới được ghi vào CSDL. Ví dụ chúng ta có giao dịch T: Begin Read A A = A + 100 Read A A = A + 2 Write A End Khi đó trong CSDL giá trị của A chỉ được tăng lên 2, vì phép toán A = A + 100 chỉ làm việc trong vùng bộ nhớ tính toán tạm thời. 3.3.1.1. Tính nguyên tử Trên quan điểm về quản lý được, quản lý giao dịch là một có gắp nhằm làm cho các thao tác phức tạp xuất hiện dưới dạng các nguyên tử. Nghĩa là thao tác xảy ra trọn vẹn hoặc không xảy ra. Nếu xảy ra, không có biến cố hay giao dịch nào cùng xảy ra trong suốt thời gian tồn tại của nó. Mỗi nguyên tử về sau ta sẽ gọi là một bước cơ bản hoặc một thao tác cơ bản. Cách thông dụng nhằm đảm bảo được tính nguyên tử của các giao dịch là phương pháp tuần tự hóa. Phương pháp này làm cho các giao dịch được thực hiện một cách tuần tự. Một giao dịch không có tính nguyên tử nếu: 1, Trong hệ thống phân chia thời gian, thời gian cho giao dịch T có thê kết thúc trong khi T đang tính toán và các hoạt động của một giao dịch khác sẽ được thực hiện trước khi T hoàn tất. 2, Một giao dịch có thể không hoàn tất được, chẳng hạn có khi nó phải chấm dứt giữa chứng, có thể vì nó thực hiện một phép tính không hợp lệ (ví dụ phép chia cho 0), hoặc có thể do nó đòi hỏi những dữ liệu không được quyền truy xuất. Bản thân hệ thống CSDL có thể buộc giao dịch này ngừng lại vì nhiều lý do. Chẳng hạn giao dịch đó có thể bị kẹt trong một khóa “cứng” (deadlock) Trong trường hợp (1), nhiệm vụ của hệ thống CSDL là phải bảo đảm rằng cho dù bất kỳ điều gì xảy ra ngay giữa một giao dịch, tác dụng của giao dịch trên CSDL không bị ảnh hưởng của những biến cố bất ngờ này. Trong trường hợp (2), hệ thống phải bảo đảm rằng giao dịch bị hủy bỏ không ảnh hường gì trên CSDL hoặc các giao dịch khác Trong thực tế, mỗi giao dịch đều có một chuỗi các bước cơ bản như: đọc hay ghi một mục dữ liệu vào CSDL hoặc thực hiện các phép toán số học đơn giản trong vùng làm việc riêng, hoặc những bước sơ đẳng khác như các bước khóa, mở khóa, ủy thác hoàn tất giao dịch… Chúng ta luôn giả sử rằng những bước sở đằng này là nguyên tử. Thậm chí thao tác tính toán kết thúc sau khi thời gian dành cho nó đã hết cũng có thể xem là nguyên tử, bởi vì các phép tính toán xảy ra khi đang làm việc trong vùng dữ liệu cục bộ và không thể ảnh hưởng đến vùng làm việc đó cho đến khi giao dịch đang thực hiện dở phép tính số học được tái hoạt động trở lại. 3.3.1.2. Mục dữ liệu 30 Để quản lý các hoạt động đồng thời, CSDL phải được phân nhỏ thành các mục dữ liệu, đó là những đơn vị dữ liệu cần được truy xuất có điều khiển. Bản chất và kích thước các mục dữ liệu do nhà thiết kế hệ thống chọn lựa. Chẳng hạn trong mô hình dữ liệu quan hệ, chúng ta có thể chọn các mục lớn như các quan hệ, hoặc các mục nhỏ như các bộ hay thành phần của các bộ. Chúng ta cũng có thể chọn lựa các mục có kích thước trung gian, như một khối của quan hệ. Kích thước của các mục dữ liệu được hệ thống sử dụng gọi là độ mịn của hệ thống. Một hệ thống được gọi là hạt mịn, nếu nó sử dụng các mục dữ liệu nhỏ và hệ thống là hạt thô nếu nó sử dụng các mục dữ liệu lớn. Phương pháp thông dụng nhất để điều khiển việc truy xuất các mục là sử dụng khóa. Bộ quản lý khóa là thành phần của hệ quản trị chịu trách nhiệm theo dõi xem một mục I hiện có giao dịch nào đang đọc ghi vào các phần của I hay không. Nếu có thì bộ quản lý khóa sẽ ngăn cản không cho các giao dịch khác truy xuất I trong trường hợp truy xuất đó có thể gây ra xung đột. Chọn chế độ hạt thô sẽ làm giảm đi tổng chi phí cần để duy trì các khóa, bởi vì chúng ta cần ít chỗ để lưu các khóa, và chúng ta tiết kiệm được thời gian bởi vì hệ thống chỉ phải thực hiện rất ít hành động đóng mở khóa. Tuy nhiện độ hạt mịn cho phép nhiều giao dịch hoạt động song song, bởi vì xác xuất các giao dịch yêu cầu khóa trên cùng một mục sẽ thấp. 3.3.1.3. Khóa Như chúng ta đã khẳng định, khóa là một đặc quyền truy xuất trên một mục dữ liệu mà bộ quản lý khóa có thể trao cho một giao dịch hay thu hồi lại. Có thể có nhiều kiểu khóa, ví dụ như khóa đọc, khóa ghi… Thông thường tại mỗi thời điểm, chỉ có một tập con các mục bị khóa, vì vậy bộ quản lý khóa có thể lưu các khóa hiện hành trong một bảng khóa vơi các mẫu tin: (I, L, T) – giao dịch T có một khóa kiểu L trên mục I. 3.3.1.4. Kiểm soát hoạt động đồng thời bằng khóa Để thấy được nhu cầu phải sử dụng khóa chúng ta xem xét ví dụ sau đây: Xét hai giao dịch T1 và T2. Mỗi giao dịch truy xuất một mục dữ liệu A được giả sử là mang giá trị nguyên, rồi cộng thêm 1 vào A. hai giao dịch này thực hiện chương trình P. P: Begin Read A A = A + 1 Write A End Chúng ta thực hiện hai giao dịch T1 và T2 như sau: A trong csdl 5 5 5 5 6 6 T1 Read A A = A + 1 Write A T2 Read A A = A + 1 Write A A trong vùng làm việc của T1 5 5 6 6 6 6 A trong vùng làm việc của T2 5 5 5 6 6 Giá trị của A tồn tại trong CSDL, với mỗi giao dịch P đọc A vào vùng làm việc, cộng 1 vào giá trị này rồi ghi kết quả vào trong CSDL. Chúng ta nhận thấy rằng, mặc dù hai giao dịch đều đã cộng thêm 1 vào A, giá trị của A trong CSDL chỉ tăng 1. Giải pháp thông dụng nhất cho vấn đề được trình bày trong ví dụ trên là cung cấp một khóa trên A. Trước khi đọc A, một giao dịch T phải khóa A lại, ngăn cản không cho giao dịch khác truy xuất A cho đến khi T hoàn tất xong thao tác trên A. Hơn nữa T khóa được mục A chỉ khi trước đó A 31 không bị khóa bởi một giao dịch khác. Nếu A đã bị khóa, T phải đợi đến khi giao dịch mở khóa cho A. Vậy để ngăn cản những trường hợp đáng tiếc xẩy ra ta phải dùng khóa. Như vậy trong những chương trình giao dịch phải có khóa và mở khóa. Ta giả sử rằng một khóa phải được đặt trên một mục trước khi đọc hay ghi nó, và thao tác khóa hành động như một hàm đồng bộ hóa. Nghĩa là nếu một giao dịch khóa một mục đã được khóa, nó không thể tiến hành cho đến khi khóa này được giải phóng bằng một lệnh mở khóa được thực hiện bởi giao dịch đang giữ khóa. Ta cũng giả sử rằng mỗi giao dịch đều có thể mở được mọi khóa do chính nó khóa. Một lịch biểu chứa cá thao tác cơ bản của nhiều giao dịch tuân theo các quy tắc của khóa được gọi là hợp lệ. Ví dụ: Chương trình P của ví dụ trên được viết lại với các khóa như sau: P: begin Lock A Read A A = A + 1 Write A Unlock A End Giả sử T1 và T2 là hai giao dịch thực hiện P. Nếu T1 bắt đầu trước, nó yêu cầu khóa trên A. Giả sử rằng không có giao dịch nào đang khóa, bộ quản lý khóa sẽ cho nó khóa mục A. Bây giờ chỉ có T1 mới có thể truy xuất A, nếu T2 bắt đầu trước khi T1 chấm dứt thì khi T2 thực hiện lệnh khóa A, hệ thống buộc T2 phải đợi. Chi khi T1 thực hiện lệnh Unlock A, hệ thống mới cho phép T2 tiến hành. Kết quả là điều bất thường không xảy ra; T1 hoặc T2 sẽ hoàn tất trước khi giao dịch kia bắt đầu, và kết quả chung của chúng là cộng 2 vào A. 3.3.1.5. Khóa sống (livelock) Hệ thống quản lý khóa trao và buộc khóa các mục dữ liệu không thể hoạt động một cách tùy tiện. Giả sử trong ví dụ trên, khi T1 giải phóng khóa trên A, trong khi T2 đang đợi nhận khóa, một giao dịch T3 khác cùng xin một khóa trên A, và T3 được trao khóa này trước T2. Tương tự sau khi T3 mở khóa cho A thì lại có giao dịch T4 xin khóa A… Và rất có thể T2 phải đợi rất lâu hoặc không bao giờ nhận được khóa trên A. Tình huống này gọi là khóa sống. Vậy khóa sống trên mục A của giao dịch T là T không khóa được A vì A luôn bị khóa bởi một giao dịch khác. Rất nhiều giải pháp đã được các nhà thiết kế hệ điều hành đề xuất để giải quyết vấn đề khóa sống, ví dụ như các giao dịch khi khóa một mục phải đăng ký thứ tự, và bộ quản lý khóa sẽ lần lượt trao quyền khóa mục A khi mục này không bị khóa theo thứ tự đã xác định trước. 3.3.1.6. Khóa “cứng” (deadlock) Một vấn đề khác có thể xẩy ra trong điều khiển các hoạt động đồng thời, đó là vấn đề khóa “cứng” (deadlock). Đó là các giao dịch khóa chéo lẫn nhau các mục cần để hoàn thiện giao dịch. Ví dụ: Giả sử chúng ta có hai giao dịch đồng thời T1 và T2 như sau: 32 T1: begin T2:begin Lock A Lock B Unlock A Unlock B end Lock B Lock A Unlock B Unlock A end Giả sử T1 và T2 được thực hiện cùng lúc. T1 yêu cầu khóa A và được trao quyền khóa trên A, còn T2 yêu cầu và được trao quyền khóa trên B. Do đó khi T1 yêu cầu khóa trên B thì nó phải đợi vị T2 đã khóa B. Tương tự khi T2 yêu cầu khó trên A, nó cũng buộc phải đợi vì T1 đã khóa A. Kết quả là không một giao dịch nào tiếp tục hoạt động được, mỗi giao dịch đều phải đợi cho giao dịch kia mở khóa, và chúng đều phải đợi nhưng chẳng bao giờ nhận được khó như yêu cầu. Như vậy khóa “cứng” là một tình huống mà trong đó mỗi thành viên Ti của một tập giao dịch T = {T1, T2,…, TN} đang đợi nhận khóa của một mục hiện đang bị khóa bởi một giao dịch khác trong tập T. Bởi vì mỗi giao dịch trong tập T đều đang đợi, nói không thể mở khóa cho mục mà một giao dịch khác đang cần, vì vậy tất cả vẫn tiếp tục đợi mãi mãi. Một số giải pháp cho vấn đề khóa “cứng”: 1. Yêu cầu các giao dịch phải đưa tất cả mọi yêu cầu khóa cùng một lúc, và bộ quản lý khóa trao tất cả các khóa cho chúng nếu được, hoặc không trao và cho giao dịch này đợi nếu một hay nhiều khóa đang được giữ bởi một giao dịch khác. 2. Gán một thứ tự tuyến tính cho các mục, buộc tất cả các giao dịch phải xin khóa theo thứ tự này. Một cách khác nhằm xử lý các khóa “cứng” là không ngăn cản chúng. Và cứ sau mỗi khoảng thời gian nhất định ,hệ thống sẽ kiểm tra yêu cầu khóa và tìm xem có xảy ra khóa “cứng” hay không. Nếu chúng ta sử dụng đồ thị chờ đợi, với các nút là cá giao dịch và các cung T1 T2 biểu thị cho T2 đang đợi nhận khóa trên một mục đang được T1 giữ. Thế thì mỗi chu trình trong đồ thị chờ sẽ biểu thị cho một khóa “cứng”, và nếu không có chu trình thì kết luật là không có khóa “cứng”. Nếu một khóa “cứng” được phát hiện, thì hệ thống phải khởi động lại và các tác dụng trên CSĐL của giao dịch khóa “cứng” đó phải bỏ đi. Quá trình hủy bỏ và tái khởi động có thể gặp rắc rối nếu chúng ta không biết được cách thức các giao dịch ghi vào CSDL trước khi chúng hoàn thành. 3.3.1.7. Tính khả tuần tự của lịch biểu. Giả sử chúng ta có một tập các giao dịch T = {T1, T2,…, TN}. Chúng ta thấy ngay rằng nếu các giao dịch thực hiện tuần tự theo một thứ tự nào đó, giao dịch nọ nối tiếp giao dịch kia thì các sự cố tranh chấp chắc chắn không xẩy ra và trong CSDL chúng ta có một kết quả nào đó. Giả sử chúng ta có tập giao dịch T = {T1, T2,…, TN}, tương ứng với T ta có N! các lịch biểu tuần tự khác nhau. Bởi vậy chúng ta giả sử rằng hoạt động của các giao dịch đồng thời l à đúng đắn nếu và chỉ nếu tác dụng cảu nó giống như tác dụng có được của một lịch biểu tuần tự. Chúng ta định nghĩa một lịch biểu S cho một tập cá giao dịch T là thứ tự (có thể xen kẽ) các bước cơ bản của các giao dịch (khóa, đọc, ghi, …) được thực hiện. Các bước của một giao dịch đã cho phải xuất hiện trong lịch biểu theo đúng thứ tự xảy ra trong giao dịch đó. 33 Vậy một lịch biểu S của tập giao dịch T được gọi là hợp lệ và đúng đắn nếu các bước cơ bản của một giao dịch Ti đã cho phải xuất hiện trong lịch biểu S theo đúng thứ tự xảy ra trong giao dịch Ti và các bước cơ bản của các giao dịch tuân theo các quy tắc của khóa. Một lịch biểu S của các giao dịch trong T là một hoán vị của các bước cơ bản của Ti  T. Giả sử trong T có k bước cơ bản nên chúng ta có k! hoán vị khác nhau của các bước cơ bản. Vậy với tập giao dịch T ta có k! lịch biểu S khác nhau. Tuy nhiên trong số đó có nhiều lịch biểu vô nghĩa và không đúng đắn hoặc không hợp lệ. Việc quản lý các giao dịch là quản lý các lịch biểu đúng đắn và hợp lệ tương đơn với một lịch biểu tuần tự nào đó. Lịch biểu được gọi là khả tuần tự nếu tác dụng của nó giống với tác dụng của một lịch biểu tuần tự ngược lại gọi là bất khả tuần tự. Hai lịch biểu được gọi là tương đương nếu chúng cho kết quả giống nhau. 3.3.1.8. Bộ xếp lịch Chúng ta nhận thấy rằng khi thực hiện hoạt động đồng thời các giao dịch có thể gây ra t ình trạng khóa sống, khóa “cứng” và vấn đề bất khả tuần tự. Để loại bỏ những vấn đền này, chúng ta sẽ dùng bộ xép lịch và các nghi thức. Bộ xếp lịch là thành phần của hệ thống CSDL, có vai trò làm trọng tài phân xử các yêu cầu đang có xung đột. Chẳng hạn chúng ta đã biết cách loại bỏ khác sống của một bộ xép lịch “đến trước phục vụ trước”. Một bộ xếp lịch cũng có thể xử lý các khóa “cứng” và tính bất khả tuần tự bằng cách” 1. Buộc một giao dịch phải đợi, chẳng hạn cho đến khi khóa đang được yêu cầu phải giải phóng. 2. Buộc một giao dịch ngừng lại và tái khởi động. 3.3.1.9. Nghi thức Chúng ta cũng có thể sử dụng một công cụ khác để xử lý khóa gài và tính bất khả tuần tự. Công cụ đó là các nghi thức mà tất cả các giao dịch phải tuân theo. Một nghi thức, theo nghĩa tổng quát nhất, chỉ là một hạn chế trên chuỗi các bước cơ bản mà một giao dịch có thể thực hiện. 3.3.2. Mô hình giao dịch đơn giản 3.3.2.1. Ý nghĩa của giao dịch – hàm đặc trưng Về nguyên tắc, ý nghĩa của giao dịch Ti chính là tác dụng của chương trình P tương ứng trên CSDL. Về hình thức, chúng ta gán một hàm f đặc trưng cho mỗi cặp Lock A và Unlock A. Hàm f nhận đối là các giá trị của tất cả các mục bị khóa bởi giao dịch T trước khi mở khóa cho A, và giá trị của f là giá trị mới của A sau khi mở khóa A. Chú ý rằng một giao dịch có thể có nhiều hàm như thế đối với một mục A, bởi vì chúng ta có thể khóa và mở khóa một mục A nhiều lần. Vậy gọi A0 là giá trị ban đầu của A trước khi các giao dịch bắt đầu thực hiện, như vậy giá trị của hàm f(A0,….) sau khi Unlock A là giá trị mới của A. Một cách tổng quát gọi A là giá trị của mục A trước khi lock A thì giá trị mới của A sau khi Unlock A là f(A,…) ta ký hiệu: lock A….unlock A f(A,…). Các giá trị mà A có thể nhận trong khi thực hiện giao dịch là những công thức được xây dựng bằng cách áp dụng những hàm này cho các giá trị ban đầu của các mục. 34 Hai công thức khác nhau được coi là những giá trị khác nhau. Hai lịch biểu là tương đương nếu các công thức cho giá trị cuối cùng của mỗi mục giống nhau trong cả hai lịch biểu. Ta xét ví dụ sau: T1: begin T2: begin T3: begin Lock A Lock A Unlock A f1(A,B) Unlock B f2(A,B) End Lock B Lock C Unlock B f3(B,C) Lock A Unlock C f4(A,B,C) Unlock A f5(A,B,C) End Lock A Lock B Unlock C f6(A,C) Unlock A f7(A,C) End Chúng ta có ba giao dịch và những hàm đặc trưng có liên quan với mỗi cặp Lock – Unlock; là những hàm xuất hiện trên cùng một dòng với Unlock. Chẳng hạn f1, nhận A và B làm đối số, bởi vậy là những mục trong Lock A – Unlock A của T1. Hàm f3 chỉ nhận B và C làm đối số bởi vì T2 mở khóa B, và trong Lock B – Unlock B có B và C. Hình sau trình bày một lịch biểu của những giao dịch này và tác dụng của chúng trên các mục A, B, và C. Bước Thao tác A B C 1 T1:Lock A A0 B0 C0 2 T2: Lock B A0 B0 C0 3 T2: Lock C A0 B0 C0 4 T2: UnLock B A0 f3(B0,C0) C0 5 T1: Lock B A0 f3(B0,C0) C0 6 T1: UnLock A f1(A0,f3(B0,C0)) f3(B0,C0) C0 7 T2: Lock A f1(A0,f3(B0,C0)) f3(B0,C0) C0 8 T2: UnLock C f1(A0,f3(B0,C0)) f3(B0,C0) (i) 9 T2: UnLock A (ii) f3(B0,C0) (i) 10 T3: Lock A (ii) f3(B0,C0) (i) 11 T3: Lock C (ii) f3(B0,C0) (i) 12 T1: UnLock B (ii) f2(A0,f3(B0,C0)) (i) 13 T3: UnLock C (ii) f2(A0,f3(B0,C0)) (iii) 14 T3: UnLock A (iv) f2(A0,f3(B0,C0)) (iii) Ký hiệu: (i) = f4(f1(A0,f3(B0,C0)),B0,C0) (ii) = f5(f1(A0,f3(B0,C0)),B0,C0) (iii) = f6((ii), (i)) (iv) = f7((ii),(i)) Chúng ta có thể nhận xét rằng lịch biểu này là không có đặc tính khả tuần tự. Thật vậy, giả sử rằng nó khả tuần tự. Thế thì nếu T1 thực hiện trước T2 trong lịch biểu tuần tự, giá trị cuối cùng của B sẽ là: f3(f2(A0,B0),C0) chứ không phải f2(A0, f3(B0,C0)). Chúng ta thấy rằng giả thiết các công thức của hàm f sinh ra một giá trị duy nhất là mấu chốt lập luận, thật vậy điều gì sẽ xẩy ra chẳng hạn nếu tồn tại: f3(f2(A0,B0),C0) = f3(A0,f3(B0,C0)) Trong trường hợp này chúng ta không thể kết luận lịch biểu bất khả tuần tự được. Cần lưu ý rằng phép kiểm tra tính khả tuần tự bằng hàm đặc trưng là một phương pháp phức tạp với những tập nhiều giao dịch và nhiều thao tác. hơn nữa phép kiểm tra này là một phương pháp 35 yếu vì hai công thức của các hàm đặc trưng có thể khác nhau nhưng giá trị của chúng có thể giống nhau. 3.3.2.2. Kiểm tra tính khả tuần tự bằng đồ thị có hướng. Để xác định rằng một bộ xếp lịch nào đó là đúng, chúng ta phải chứng minh rằng mỗi lịch biểu S được nó cho phép đều có đặc tính khả tuần tự. Vì vậy chúng ta cần có một phép kiểm tra đơn giản về tính khả tuần tự của một lịch biểu. Thuật toán 3.3. Kiểm tra tính khả tuần tự một lịch biểu S Vào: Một lịch biểu S của một tập các giao dịch T1, T2,…, Tk Ra: Khẳng định S có khả tuần tự hay không. Nếu có thì đưa ra một lịch biểu tuần tự tương đương với S. Phương pháp: Xây dựng một đồ thị có hướng G (được gọi là đồ thị tuần tự hóa) có các nút là các giao dịch Ti. Để xác định các cung của đồ thị G, gọi (a1, a2,…, aN) là tập các bước cơ bản trong S. Trong đó mỗi ai là một thao tác có dạng Tj: Lock A hoặc Tj: Unlock A Nếu aj là thao tác kiểu Unlock A thì tìm thao tác ap kế tiếp sau aj có dạng Ts: Lock A. Nếu có một cặp thao tác như thế và s  j, chúng ta vẽ một cung từ Tj đến Ts (Tj Ts). Cung này có ý nghĩa là trong một lịch biểu tuần tự tương đương với S, Tj phải thực hiện trước trước Ts. Nếu G có một chu trình thì S là bất khả tuần tự, ngược lại nếu G không có chu trình thì S là khả tuần tự và chúng ta tìm một thứ tự tuyến tính cho các giao dịch cho Ti bằng một quá trình gọi là sắp xếp topo của đồ thị G như sau: Sắp xếp Topo đồ thị có hướng G không có chu trình Ta biết rằng trong G phải có một nút Tj nào đó không có cung đến, nếu không G có một chu trình. Liệt kê Tj rồi loại Tj ra khỏi G. Sau đó lặp lại quá trình này trên đồ thị còn lại cho đến khi không còn nút nào nữa. Thứ tự các nút được liệt kê trong danh sách là một thứ tự tuần tự của các giao dịch. Thứ tự đó tạo nên lịch biểu tuần tự tương dương với S. 3.3.3. Nghi thức khóa 2 pha Chúng ta cần phải hiểu rõ những điều kiện để một lịch biểu là khả tuần tự nhằm tìm được một bộ xếp lịch và một nghi thức, đảm bảo rằng mọi lịch biểu mà chúng ta cho phép đều khả tuần tự. Nghi thức được gọi là nghi thức hai phai, nếu mọi giao dịch thực hiện tất cả các thao tác khóa trước tất cả các thao tác mở khóa. Các giao dịch tuân thủ theo nghi thức này được gọi là các giao dịch hai pha: pha đầu là khóa và pha thứ hai là pha mở khóa. Nghi thức hai pha có đặc điểm là mọi tập giao dịch tuân theo nghi thức này đều có các lịch biểu khả tuần tự. Trước tiên chúng ta sẽ chứng minh rằng nghi thức hai pha bảo đảm được tính khả tuần tự. Định lý 3.1. Nếu S là một lịch biểu của các giao dịch hai pha thì S là khả tuần tự. Chứng minh: Giả sử khẳng định trên không đúng. Vậy đồ thị G của lịch biểu S sẽ có một chu trình Ti1 Ti2…. Tin Ti1 36 Do đó có một thao tác khóa do Ti2 sẽ đi sau một thao tác mở khóa do Ti1, một thao tác kho do Ti3 sẽ đi sau một thao tác mở khóa Ti2… Cuối cùng một thao tác khóa Ti1 sẽ đi sau một thao tác mở khóa Ti1. Điều này mâu thuẫn với giả thiết Ti1 là giao dịch hai pha. Vậy khẳng định trên là đúng. 3.3.4. Mô hình khóa đọc và khóa ghi Nếu chúng ta phân biệt một truy xuất chỉ đọc và một truy xuất đọc – ghi, chúng ta có thể phát triển một mô hình chi tiết hơn cho các giao dịch loại đọc ghi này. Trong một số trường hợp mô hình này cho phép sử dụng một số hoạt động đồng thời bị cấm ví dụ như nhiều giao dịch có thể cùng giữ khóa đọc một mục A. Chúng ta phân biệt hai loại khóa. 1. Khóa đọc Rlock. Một giao dịch T chỉ đọc một mục A sẽ thực hiện lệnh Rlock A, ngăn không cho bất kỳ giao dịch khác ghi giá trị mới lên A, tuy nhiên các giao dịch khác vẫn có thể giữ một khóa đọc trên A cùng lúc với T. 2.Khóa ghi Wlock. Khi một giao dịch muốn thay đổi giá trị của mục A đầu tiên sẽ lấy khóa ghi bằng cách thực hiện lệnh Wlock A, khi một giao dịch đang giữ khóa ghi trên một mục, những giao dịch khác không thể lấy được khóa đọc hoặc khóa ghi trên mục đó. Như vậy khóa đọc mục A chỉ cám các giao dịch khác ghi dữ liệu vào a, còn khóa ghi trên mục cấm các giao dịch khác cả ghi hoặc đọc mục A. 3.3.4.1. Ý nghĩa của giao dịch với khóa đọc và khóa ghi Chúng ta giả sử mỗi lần áp dụng khóa ghi cho một mục A sẽ có một hàm duy nhất đi kèm với khóa đó và nó tạo ra một giá trị mới cho A; hàm đó phụ thuộc vào tất cả các mục bị khóa trước khi mở khóa A. Tuy nhiên chúng ta giả sử rằng một khóa đọc trên A không làm thay đổi A. Giả sử rằng mục A có một giá trị ban đầu A0 và tác dụng của một lịch biểu trên CSDL có thể được diễn tả bằng những công thức của các hàm đặc tưng f, là những giá trị của mỗi mục được ghi ít nhất là một lần bởi các giao dịch. Tuy nhiên vì có thể có một giao địch đọc các mục nhưng không ghi gì hoặc đọc một số mục chỉ sau khi ghi vào lần cuối cùng, vì thế những giá trị mà mỗi mục đang có khi một giao dịch chỉ đọc nó cũng được xử lý như giá trị cũ. Vì vậy chúng ta có thể nói hai lịch biểu là tương đương nếu: 1. Chúng sinh ra cùng giá trị cho mỗi mục. 2. Mỗi khóa đọc được áp dụng bởi mỗi giao dịch trong cả hai lịch biểu vào những lúc mục bị khóa có cùng giá trị. 3.3.4.2. Đồ thị tuần tự hóa trong các giao dịch Rlock và Wlock Chúng ta xét những điều kiện mà trong đó, từ ý nghĩa của các giao dịch và các lịch biểu, ta có thể suy ra được khi nào một giao dịch phải đi trước một giao dịch khác trong một lịch biểu tuần tự tương đương. Giả sử rằng có một lịch biểu S trong đó một khóa ghi mục A bởi giao dịch T1, và gọi f là hàm đi kèm với khóa ghi đó. Sau khi T1 mở khóa A, gọi T2 là một trong những giao dịch kế tiếp nhận khóa đọc A trước khi một giao dịch khác nhân khóa ghi A. Chắc chắn rằng T1 phải thực hiện trước T2 trong một lịch biểu tuần tự tương đương với S. Nếu không thì T2 đọc một tía trì của A không chứa hàm f. Tương tự, nếu T3 là giao dịch kế tiếp sau T1 nhận khóa ghi A thì T1 phải thực hiện trước T3. 37 Bây giờ ta giả sử rằng T4 là một giao dịch nhận khóa đọc A trước khi T1 khóa ghi A. Nếu T1 xuất hiện trước T4 trong lịch biểu tuần tự thì T4 đọc một giá trị của A có chứa hàm f, còn trong lịch biểu S, giá trị được đọc bởi T4 không chứa f. Vì vậy, T4 phải thực hiện trước T1 trong một lịch biểu tuần tự tương đương với S. Suy luận duy nhất không thê thực hiện được là nếu trong S hai giao dịch cùng nhần khóa đọc một mục A theo một thứ tự nào đó thì những giao dịch này phải xuất hiện theo thứ tự đó trong một lịch biểu tuần tự. Đúng ra thứ tự tương đối này là của các khóa đọc không tạo ra sẹ khác biệt nào trên các giá trị được tạo ra bởi các giao dịch thực hiện đồng thời. Thuật toán 3.4. Kiểm tra tính khả tuần tự của các lịch biểu với các khóa đọc/ghi. Vào: Một lịch biểu S cho một tập các giao dịch T1, T2,…, TN Ra: Khẳng định S có khả tuần tự hay không, nếu được sẽ đưa ra một lịch biểu tuần tự tương ứng. Phương pháp: Chúng ta xây dựng một đồ thị G như sau. Các nút tương ứng là các giao dịch. Các cung được xác định bằng quy tắc sau: 1. Giả sử trong S, giao dịch Ti nhận khóa đọc hoặc khóa A. Tj là giao dịch kế tiếp khóa ghi A, và i  j. Khi đó chúng ta đặt một cung từ Ti đến Tj. 2. Giả sử trong S, giao dịch Ti khóa ghi A. Gọi Tm với m  i là một giao dịch khác khóa đọc A sau khi Ti mở khóa A những trước các giao dịch khác khóa ghi A. Chúng ta vẽ mộ cung từ T i đến Tm. Nếu G có chu trình thi S là bất khả tuần tự, ngược lại thì một sắp xếp topo của G là thứ tự tuần tự cho các giao dịch này. 38 Chương 4. Hệ trợ giúp ra quyết định 4.1. Giới thiệu về hệ trợ giúp ra quyết định Các hệ thống trợ giúp ra quyết định là các hệ thống giúp việc quản lý xác định đúng vấn đề, ra quyết định một cách thông minh. Hệ thống như vậy cần đến lý thuyết tối ưu, lý thuyết về hành vi quản lý, điều khiển quá trình thống kê… Cuối những năm 60, người ta dùng máy tính trong quá trình ra quyết định. ban đầu là tự động hóa công việc lập các báo cáo và đôi lúc là tính toán, phân tích. Các hệ thống đó được gọi là hệ thống quyết định quản lý, về sau được xây dựng thành những hệ thống thông tin quản lý. Vào những năm 70, người ta phát triển những ngôn ngữ hỏi, và xây dựng trên những ngôn ngữ này một số hệ thống trợ giúp ra quyết định chuyên dùng. Các hệ thống như vậy là những bước đầu tiên cho phép người dùng có kĩ năng truy vấn trực tiếp dữ liệu, tự hình thành các câu hỏi liên quan đến kinh doanh mà không cần đến sự trợ giúp của các chuyên gia tin học. Ngày nay các sản phẩn của ngôn ngữ hỏi SQL được dùng một cách rộng rãi, ý tượng xử lý tách biệt, tức là việc sao chếp các dữ liệu từ môi trường đang hoạt động sang một môi trường khác, vẫn rất quan trọng. Ý tưởng này cho phép người ta thao tác với các dữ liệu được trích ra theo các yêuc cầu mà không cần quá trình suy luận trong môi trường đang hoạt động. Đương nhiên trong quá trình ra quyết định, người ta có thể chỉ sử dụng một phần chiết suất của dữ liệu chứ không cần tất cả. Khác với hệ thống CSDL, hệ thống trợ giúp ra quyết định chưa có lý thuyết riêng và hoàn chỉnh. Người ta thường yêu cầu mô hình logic đối với các hệ thống như hệ trợ giúp ra uyết định. Nhưng không phân biệt được rõ mô hình logic với mô hình vật lý. Các khía cạnh về trợ giúp ra quyết định Các CSDL trợ giúp ra quyết định thể hiện các đặc tính đặc biệt là chỉ đọc CSDL. Tuy điều này không áp đặt cho tất cả các hệ thống trợ giúp ra quyết định. Do vậy, các phép toán xử lý dữ liệu như cập nhật dữ liệu, rất hiếm khi được sử dụng; người ta thường tải lại dữ liệu hay làm tươi dữ liệu thay cho việc cập nhật trực tiếp. Đôi khi trên những bảng trung gian, người ta có thể thực hiện các phép toán cập nhật dữ liệu, nhưng quá trình ra quyết định bình thường không bao giờ cập nhật CSDL trợ giúp quyết định. Có sáu đặc tính của hệ thống trợ giúp quyết định, ba đặc tính đầu liên quan đến khía cạnh logic và ba đặc tính còn lại liên quan đến khía cạnh vật lý. Các khái niệm như dòng, cột được dùng theo nghĩa của CSDL quan hệ. 1. Các cột được dùng theo nghĩa tổ hợp của nhiều thuộc tính. 2. Nói chung hệ trợ giúp ra quyết định không đề cập đến tính toàn vẹn dữ liệu, do các dữ liệu đã được coi như đúng 3. Các khóa thường mang yếu tố thời gian. 4. Kích thước CSDL có xu hướng ngày càng lớn. 5. Các bảng chi số dùng trong CSDL thường có kích thước lớn và nặng nề. 39 6. CSDL thường sử dụng nhiều loại dư thừa dữ liệu, nhưng các dư thừa này được hệ thống kiểm soát. Các câu hỏi trong hệ thống trợ giúp quyết định cũng có đặc tính riêng, thường là rất phức tạp. 1. Tính phức tạp của biểu thức logic. Các câu hỏi trợ giúp ra quyết định thường yêu cầu các biểu thức phức tạp trong câu lệnh dẫn đến khó viết, khó hiểu. 2. Tính phức tạp của phép toán kết nối quan hệ. Các câu hỏi trợ giúp quyết định thường truy cập nhiều loại sự kiện. Trong một CSDL được chuẩn hóa thì các câu hỏi loại này thường yêu cầu rất nhiều phép kết nối. Do vậy, người thiết kế thường phải phi chuẩn CSDL bằng cách tiến hành trước một số phép kết nối trên các bảng. 3. Tính phức tạp của các hàm số. Các câu hỏi trong hệ trợ giúp ra quyết định thường sử dụng các hàm thống kê, hàm toán học. Chỉ một số ít các hệ thống đáp ứng được các loại câu hỏi dạng này. Thường thì người thiết kế cho phép câu hỏi gọi đến đoạn chương trình được viết trong một ngôn ngữ lập trình hoặc ngôn ngữ khai thác dữ liệu khác. 4. Tính phức tạp về phân tích. Để trả lời các câu hỏi trong hệ trợ giúp ra quyết định, người ta cần phải sử dụng nhiêu câu hỏi con. Điều này gây khó khăn cho cả người sử dụng và hệ thống. 4.2. Thiết kế CSDL cho hệ trợ giúp ra quyết định Việc thiết kế CSDL cho hệ trợ giúp ra quyết định được thực hiện ít nhất qua hai bước là bước thiết kế logic và thiết kế vật lý: 1. Thiết kế logic: tập trung vào việc chỉnh lý các quan niệm theo lý thuyết quan hệ. Các bảng dữ liệu ứng với các quan hệ. Người ta xác định các miền ứng với các kiểu dữ liệu, xác định các mối liên kết giữa các cột cảu bảng. Tiếp theo là việc chuẩn hóa các bảng và xác định các điều kiện ràng buộc dữ liệu. 2. Bước thiết kế vật lý: tập trung vào tính hiệu quả của lưu trữ và hiệu suất của hệ thống. Về nguyên tắc, người ta có thể lựa chọn bất kì một cách tổ chức dữ liệu nào, nhưng việc chuyển hóa mô hình logic sang mô hình vật lý theo đại số quan hệ là hợp lý hơn cả. 4.2.1. Thiết kế logic. Các quy luật thiết kế logic không phụ thuộc vào việc sử dụng CSDL, tức là không phụ thuộc vào loại ứng dụng trên CSDL. Do vậy thiết kế cho hệ thống tác nghiệp hay cho hệ trợ giúp quyết định như sau: 1. Tổ hợp các cột và ít phụ thuộc: Các câu hỏi trợ giúp quyết định thường xử lý tổ hợp các cột, chứ không dùng các cột đơn. Có thể gọi tổ hợp các cột như một cột tổ hợp. Theo quan điểm thiết kế logic, các cột tổ hợp có tư cách như cột bình tưhờng. Điều này có tác dụng giảm số các phụ thuộc hàm giữa các cột đơn. Việc này dẫn đến thiết kế logic đơn giản hơn, cũng như tạo thuận lợi đối với những kiểu dữ liệu do người dùng xác định. 2. Các ràng buộc về tính toàn vẹn: hệ trợ giúp quyết định là hệ thống cho phép chỉ đọc dữ liệu và tính toàn vẹn dữ liệu chỉ được kiểm tra lúc tải dữ liệu cho nên trong lược đồ logic người ta không đặt ra các điểm kiểm tra tính toán vẹn. 3. Các khóa về thời gian: Các CSDL tác nghiệp thường chỉ cần các dữ liệu hiện tại. Các CSDL trợ giúp quyết đinh thường cần đến các dữ liệu lịch sử, nên người ta cần tính đến việc đánh dấu thời gian trên hầu hết các dữ liệu hay trên một vài dữ liệu. Để quản lý các mốc thời gian, các thuộc tính 40 khóa cũng cần được đánh dấu thời gian. Việc làm này cần được quá trình thiết kế logic lưu ý khi xác định các phụ thuộc hàm giữa các cột đánh dấu mới và các cột trong bảng. 4.2.2. Thiết kế vật lý CSDL trong hệ thống trợ giúp quyết định có xu hướng nặng nề, kích thước lớn, và đòi hỏi nhiều loại dư thừa dữ liệu có kiểm soát. người ta thương đề cập khái niệm phân đoạn và chỉ số hoá. Việc phân đoạn nhằm vào CSDL lơn, chia các bảng dữ liệu thanh tập các phần, hay các đoạn rời nhau, phù hợp với công việc lưu trữ vật lý. Công việc này giúp người ta quản lý và trả lời các câu hỏi trên các bảng dễ hơn. Điển hình là mỗi đoạn dữ liệu gắn với một số tài nguyên tin học như phần cứng, thời gian, bộ xử lý trung tâm. Điều này có thể giảm thiểu các cạnh tranh về tài nguyên trên mỗi đoạn dữ liệu. Việc dùng các bảng chỉ số giảm được thời gian vào/ra khi cần truy cập dữ liệu. Nhiều sản phẩm hệ quản trị CSDL cung cấp cho người dùng chỉ một loại chỉ số là cây cân đối, nhưng còn có nhiều loại chỉ số khác được dùng trong hệ thống trợ giúp quyết định là bảng bit, hàm băm. Dư thừa dữ liệu có điều khiển là công cụ quan trọng để giảm các thao tác vào/ra và tối thiểu hoá các nội dung. Tính dư thừa dữ liệu được hệ quản trị CSDL quản lý mà người dùng không cần quan tâm: 1. Quản lý các bản sao chính các của dữ liệu cơ bản và quản lý các bản sao. 2. Quản lý các dữ liệu suy diễn bên cạnh dữ liệu cơ bản. Thông thường người ta sử dụng các bảng tổng hợp và /hoặc các cột thu được bằng cách tính toán hay suy diễn. 4.3. Kho dữ liệu và kho dữ liệu chuyên đề Các hệ thống điều hành thường xuyên yêu cầu chặt chẽ về hiệu suất, về kích thước giao tác, về tính hoạt động theo kế hoạch, tính ứng dụng cao. Ngược lại các hệ thống trợ giúp quyết định có những yêu cầu đa dạng về hiệu suất, không biết trước về công việc sẽ làm, kích thước giao tác lơn, được sử dụng tuỳ theo cảm tính của người quản lý. Những khác biệt này gây nên không ít khó khăn cho việc tích hợp các xử lý điều hành với việc trợ giúp quyết định trong một hệ thống đơn mà vẫn phải đáp ứng các yêu cầu về kế hoạch, quản lý tài nguyên, và điều chỉnh được hiệu suất của hệ thống. Do vậy, người quản trị hệ thống điều hành thường miễn cưỡng chấp nhận các hoạt động trợ giúp quyết định trong hệ thống của họ. Phần này đề cập một quan tâm của các hệ trợ giúp ra quyết định. Đó là việc truy cập dữ liệu từ nhiều nguồn khác nhau, từ nhiều hệ thống điều hành khác nhau. Những dữ liệu dùng để ra quyết định được lưu trữ theo cách thức riêng trong kho dữ liệu Hình 4.1. Kiến trúc tổng quan của kho dữ liệu Trích dữ liệu Làm sạch dữ liệu Chuyển hoá dữ liệu Tải dữ liệu Làm tươi dữ liệu CSDL Tác nghiệp Kho dữ liệu Môi trường trợ giúp ra quyết định 41 4.3.1. Kho dữ liệu Thuật ngữ kho dữ liệu được dùng từ cuối những năm 80 của thế kỷ XX. Kho dữ liệu được dùng cho công tác ra quyết định trong quản lý, là tập hợp các dữ liệu thay đổi theo thời gian, không cho phép cập nhật, được tích hợp hướng chủ đề. Khái niệm không thể cập nhật được giải thích kĩ hơn là một khi được bổ sung, dữ liệu sẽ không thay đổi, dù rằng nó có thể bị xoá. Lí do đề xuất khái niệm mới như kho dữ liệu là: 1. Người ta cần sử dụng nguồn dữ liệu đơn, sạch, bền vững để trợ giúp việc ra quyết định 2. Hệ thống trợ giúp ra quyết định không chịu tác động của các hệ thống điều hành. Đ/N. Kho dữ liệu (dataware house). Kho dữ liệu là nơi chứa các dữ liệu có yếu tố thời gian, không bị thay đổi, hướng chủ đề, dùng để trợ giúp việc ra quyết định. Đ/N. Kho dữ liệu xí nghiệp (Enterprise datawarehouse). Kho dữ liệu xí nghiệp là kho dữ liệu tích hợp, tập trung, là nguồn dữ liệu được điều khiển dùng cho việc ra quyết định của người sử dụng. Mục đích của kho dữ liệu là ra quyết định, nên được tăng cường các chức năgn hỏi dữ liệu và kích thước của kho dữ liệu thường có xu hướng lớn. Đ/N. Tính hạn chế phạm vi. Tính hạn chế phạm vi khi xét nhiều yếu tố cho phép xét một yếu tố mà không quan tâm đến các yếu tố khác, tức là giả thiết các yếu tố khác là không thay đổi. Người ta thấy rằng có một số vấn đề dẫn đến việc khảo sát và dùng khả năng hạn chế phạm vi trong hệ trợ giúp ra quyết định - Các sai sót về thiết kế CSDL; - Sự không hiệu quả của các phép toán quan hệ; - Khả năng không đủ mạnh của các hệ quản trị CSDL theo mô hình quan hệ; - Các lỗi về thiết kế kiến trúc làm hạn chế khả năng của hệ thống. 4.3.2. Kho dữ liệu chuyên đề. Các kho dữ liệu nhằm cung cấp nguồn đơn chất của các dữ liệu dùng cho các hoạt động trợ giúp ra quyết đinh. Tuy nhiên, khi các kho dữ liệu trở nên thông dụng, người ta thấy người sử dụng thường thực hiện các thao tác phân tích dữ liệu và ra báo cáo trên một phần nhỏ của kho dữ liệu. Hơn nữa người sử dụng hay lặp lại cùng một thao tác trên các phần nhỏ của kho dữ liệu. Việc thực hiện nhiều lần một thao tác trên toàn bộ kho dữ liệu là không hiệu quả, cho nên người ta cần đến loại kho dữ liệu chuyên dụng, được người sử dụng xây dựng theo yêu cầu xử lý riêng. Có như vậy thì việc truy cập các dữ liệu đồng bộ với kho dữ liệu mới nhanh. Đ/N. Kho dữ liệu chuyên đề (data mart). Kho dữ liệu chuyên đề có vai trò như kho dữ liệu, nhưng các dữ liệu trong đó cho phép cập nhật và dùng cho trợ giúp quyết định với mục đích đặc biệt hơn. Kho dữ liệu chuyên đề là kho dữ liệu hạn chế, gồm các dữ liệu được tuyển chọn và tổng hợp từ kho dữ liệu của xí nghiệp. Để tạo ra được một kho dữ liệu chuyên đề, người ta thường theo ba cách tiếp cận sau: 1. Trích dữ liệu từ kho dữ liệu. Các dữ liệu được trích từ kho dữ liệu để đạt được hiện suất phục vụ cao và có tính hạn chế phạm vi. Thông thường các dữ liệu trích ra này được tải vào CSDL có 42 lược đồ vật lý gần giống với phần ứng dụng của kho dữ liệu. Do tính đặc biệt hơn của kho dữ liệu chuyên đề so với kho dữ liệu, lược đồ vật lý của dữ liệu có thể đơn giản hơn. 2. Tạo ra kho dữ liệu chuyên đề riêng biệt. Tiếp cận này xuất phát từ tính đơn thể của kho dữ liệu, không trích dữ liệu từ kho dữ liệu và không truy cập kho dữ liệu do một vài nguyên nhân. 3. Coi kho dữ liệu chuyên đề là nền tảng của kho dữ liệu. Một vài phát triển hệ thống trợ giúp ra quyết định đã xây dựng các kho dữ liệu chuyên đề trước tiên, mỗi khi cần thiết. Kho dữ liệu sẽ được tao ra bằng cách tập hợp các kho dữ liệu chuyên đề. Đ/N. Tính chia hạt. Tính chia hạt trong cơ ở dữ liệu đề cập khả năng lưu trữ được phần tử nhỏ nhất cảu dữ liệu gộp trong CSDL. Liên quan đến việc thiết kế kho dữ liệu chuyên đề, người ta nhận thấy một yếu tố quan trọng đối với bất kì CSDL trợ giúp ra quyết định nào là tính chia nhỏ thành hạt của CSDL. Sớm hay muôn thì các kho dữ liệu dùng để ra quyết định đều yêu cầu truy cập dữ liệu chi tiết nhất, nên yêu cầu chi thành hạt đối với kho dữ liệu không gây ra vấn đề lớn như đối với kho dữ liệu chuyên đề. Nếu kho dữ liệu chuyên đề được xây dựng bằng cách trích các dữ liệu từ kho dữ liệu mà không biết các ứng dụng có nhu cầu thường xuyên về các dữ liệu ở mức hạt hay không, thì việc trích dữ liệu và cập nhật các dữ liệu ở mức hạt sẽ tốn kém nhiều. 4.3.3. Các lược đồ về chiều. Các hệ thống trợ giúp ra quyết định thường cần đến kết quả phân tích về lịch sử của các giao dịch tác nghiệp. Thông tin này được lưu trong các tệp và được truy cập tuần tự. Do nhu cầu, đến một lúc nào đó người ta cần trực tiếp truy cập các thông tin này chỉ theo một số góc cạnh cần quan tâm. Chẳng hạn đối với thông tin về sản lượng rượu vang, người ta cần biết về sản lượng, về người sản xuất,về tuổi của rượu… Để trợ giúp nhu cầu truy cập này, người ta dùng CSDL có nhiều bảng tra cứu. Cơ sỏ dữ liệu như vậy có tệp dữ liệu trung tâm chứa cá dữ liệu về các hoạt động tác và nhiều bảng tra cứu về sản lượng, người sản xuất, tuổi của rượu. Các bảng này tựa như bảng chỉ số vì chúng có con trỏ trỏ đến các bản ghi trong tệp dữ liệu, nhưng khác với bảng chỉ số ở chỗ người dùng co thể tác động đến các bảng tra cứu theo cách tường minh và bảng tra cứu có thể mang các thông tin phụ, chẳng hạn như địa chỉ của nhà sản xuất. Các tổ chức nhiều bảng tra cứu có ưu điểm hơn so với việc dùng một tệp tra cứu, cả về không gian nhớ lẫn thời gian vào/ra. Khi dùng tiếp cận này trong cơ sỏ dữ liệu quan hệ, tệp dữ liệu và các tệp tra cứu trở thành các bảng, tức là ảnh của các tệp; các con trỏ trong tệp tra cứu trở thành khoá chính của bảng tra cưu; những tên trong tệp dữ liệu trở thành cá khoá ngoài trong bảnh ảnh của tệp dữ liệu. Trường hợp điển hình là các khoá chính và khoá ngoài đều được chỉ số hoá. Theo phương thức này, ảnh của tệp dữ liệu được gọi là bảng sự kiện và các ảnh của tệp tra cứu được gọi là các bảng về chiều. Thiết kế tổng thể phù hợp được gọi là lược đồ hình sao, hay lược đồ về chiều, vì trong thiết kế thực thể quan hệ người ta nới rộng các bảng sự kiện, để nối với cá bảng về chiều. Ví dụ CSDL RUOU(TenRuou, NhaSX, NamSX, SoLuong) trong đó thuộc tính NamSX được mô tả bằng khoảng từ năm t1 đến năm t2. Theo thuật ngữ lược đồ hình sao thì bảng RUOU được gọi là bảng sự kiện còn bảng SanXuat(Nam, NamBD, NamKT) được gọi là bảng về chiều. Ruou TenRuou NhaSX NamSX SoLuong SanXuat Nam NamBD NamKT Lúa mới Hà Nội 1980 200 1980 1980 1985 Thăng Long Hà Nội 1990 300 1990 1986 1992 Đ/N. Lược đồ hình sao. Lược đồ hình sao là thiết kế CSDL đơn giản, trong đó các dữ liệu về chiều được tách khỏi các dữ liệu về sự kiện. Mô hình về chiều là tên gọi khác của lược đồ hình sao. 43 Câu hỏi trên CSDL theo lược đồ hình sao cần đến các bảng về chiều để phát hiện tất cả những tổ hợp khoá ngoài cần thiết, rồi dùng tổ hợp này để truy cập bảng sự kiện. Giả sử việc truy cập các bảng về chiều và truy cập bảng sự kiện được thể hiện gọn trong một câu hỏi đơn, thì cách tốt nhất để thực hiện câu hỏi này thước theo kết nối hình sao. Kết nối hình sao là chiến thuật đặc biệt để thực hiện phép kết nối được thực hiện theo hai bước. 1. Tiến hành phép tích đề các đối với các bảng về chiều. Lưu ý rằng khi tối ưu hoá câu hỏi, người ta thường tránh sử dụng phép tích đề các. Trong trường hợp này, các bảng kích thước nhỏ tham giá trước vào phép tích đề các. 2. Dùng kết quả của tích đề các để quản lý bảng sự kiện theo kĩ thuật chỉ số hoá. Kĩ thuật chỉ số hoá cho phép chiến thuật này hiệu quả hơn. Một biến dạng của lược đồ hình sao là lược đồ hoa tuyết, thực hiện việc chuẩn hoá các bảng chiều. Đ/N. Lược đồ hoa tuyết. Lược đồ hoa tuyết là biến dạng của lược đồ hình sao, trong đó các bảng được chuẩn hoá. 4.4. Xử lý phân tích trực tuyến 4.4.1. Giới thiệu. Thuật ngữ xử lý phân tích trực luyến OLAP nhằm vào quá trình tương tác với hệ thống, bao gồm các thao tác tạo mới, quản lý, phân tích và lập các báo cáo về dữ liệu, thông qua các câu lệnh yêu cầu tìm kiếm, và xử lý dữ liệu trong bảng dữ liệu nhiều chiều. Đ/N. Xử lý phân tích trực tuyến. Xử lý phân tích trực tuyến là mở rộng của lĩnh vực CSDL quan hệ để trợ giúp các mô hình kinh doanh. Quá trình OLAP dùng các qui luật để truy cập nhanh và tiện lợi đến các dữ liệu cho các hệ thống quản lý thông tin hay trợ giúp ra quyết định. OLAP là việc sử dụng tập các công cụ đồ hoạ để người dụng thấy được nhiều chiều của dữ liệu, cho phép phân tích các dữ liệu. Quá trình phân tích yêu cầu gộp dữ liệu, theo nhiều cách, tuỳ theo cách thức nhóm dữ liệu khác nhau. Một trong những khía cạnh cơ bản của xử lý phân tích trực tuyến là số khả năng nhóm dữ liệu nhiều lên rất nhanh, và người dùng cần xem xét tất cả các khả năng đó. 4.4.2. Bảng chéo Các kết quả của quá trình phân tích trực tuyến đưa ra thường không theo dạng bảng quan hệ, mà theo bảng hai chiều, được gọi là bảng chéo. Xét câu hỏi “Tìm tổng số rượu do những công ty rượu cung cấp trên bảng dưới đây: Ruou Ten CongTy Nam SoLuong Lúa mới Hà Nội 1980 200 Vang Hà Nội 1995 350 Vang Huda Huế 1990 450 Lúa mới Hà Bắc 1990 320 Người ta xây dựng một bảng mới gọi là bảng chéo để thể hiện câu trả lời. Bảng chéo khác với bảng quan hệ ở chỗ, số các cột phụ thuộc vào dữ liệu thực, tức là cấu trúc của bảng lẫn ý nghĩa của các dòng đều phụ thuộc vào giá trị thực của dữ liệu. Do vậy bảng chéo không phải là quan hệ, mà chỉ là một báo cáo có hình thức như ma trận hai chiều. Ví dụ: Lúa mới Vang Tổng Hà Nội 200 350 550 Huda Huế 0 450 450 44 Hà Bắc 320 0 320 Tổng 520 800 1320 4.4.3. CSDL nhiều chiều Quá trình xử lý phân tích trực tuyến có thể được đặt trong môi trường quan hệ, và quá trình này còn được gọi là OLAP quan hệ viết tắt là ROLAP. Trong thực tế nhiều người nhận thấy có cách tiếp cận tốt hơn, là OLAP nhiều chiều viết tắt là MOLAP. MOLAP cần đến CSDL nhiều chiều. Việc lưu trữ này được gọi là lưu trữ theo quan niệm. Để hình dung thấy nhiều chiều, nhưng trong các hệ thống thực tế thì tổ chức vật lý của MOLAP rất gần với tổ chức logic. Hệ quản trị CSDL trong trường hợp này được gọi là hệ quản trị CSDL nhiều chiều. Các CSDL có thể được thể hiện trong bảng hai, ba chiều. 4.5. Khai phá dữ liệu Khai phá dữ liệu, mục đích của nó là nhìn vào phân đáng quan tâm của dữ liệu, những phần được dùng để thiết lập chiến lược kinh doanh hay để xác định hành vi khác thường. Đ/N. Khai phá dữ liệu. Khai phá dữ liệu là quá trình trích ra những thông tin dùng được, đúng và chưa biết trước từ CSDL lơn, rồi dùng thông tin này để ra các quyết định. Các công cụ khai phá dữ liệu dùng các kĩ thuật thống kê đối với khối lượng dữ liệu lớn để tìm ra những phần dữ liệu cần thiết. Các CSDL trong khai phá dữ liệu thường rất lớn, do vậy có xu hướng đơn giản hoá các thuật toán. Một số thuật ngữ dùng trong khai phá dữ liệu như “dân số” để chỉ các thao tác có thể thực hiện trong một bảng dữ liệu, “luật liên kết” để chỉ sự phụ thuộc giữa các dữ liệu khi xét các giao tác… Luật liên kết được phát hiện do áp dụng các phép toán gộp phù hợp. Một số qui luật khác được xác định như luật “tương quan tuần tự”, luật “phân loại”.

Các file đính kèm theo tài liệu này:

  • pdfbaigiangcosodulieunangcao_3564.pdf
Tài liệu liên quan