Chơng II CSDL phântántheomôhìnhClient-ServercủaOracle A. Khái niệm về CSDL phântán Một CSDL phântán là một tập hợp dữliệu mà về mặt logic tập dữliệu này thuộc về một hệ thống, nh ng đợc trải trên các vị trí (khác nhau) của một mạng máy tính. Chú ý rằng phântáncó nghĩa là dữliệu không c trú trên một vị trí (khác với CSDL tập trung, đơn lẻ) và phải có tơng quan logic với nhau (dữ liệucó một số các thuộc tính ràng buộc chúng với nhau) chứ không phải là một tập hợp CSDL cục bộ hoặc các tệp c trú tại các vị trí khác nhau trong một mạng máy tính. Tuy việc quản trị một hệ thống CSDL phântán sẽ gặp nhiều khó khăn hơn so với hệ CSDL tập trung nhng xu h- ớng xây dựng các hệ CSDL phântán ngày càng phát triển và có nhiều ứng dụng trong thực tế vì các nguyên nhân sau: Xuất phát từ chính yêu cầu thực tế về tổ chức và kinh tế: Trên thực tế nhiều tổ chức là không tập trung, dữliệu ngày càng lớn và phục vụ cho đa ngời dùng nằm phântán vì vậy CSDL phântán là thích hợp với cấu trúc tự nhiên của các tổ chức đó. Đây là một trong các yếu tố quan trọng thúc đẩy việc phát triển CSDL phân tán. Một ví dụ minh hoạ cho vấn đề này là hệ thống bán vé máy bay thống nhất trên toàn thế giới. Mỗi hãng hàng không có một hệ CSDL riêng, có sự quản lý riêng và không thể có lý do nào để CSDL này tập trung ở một chỗ. Mặt khác các hãng hàng không lại có hợp tác với nhau trong việc bán vé phục vụ hành khách cho những tuyến đờng thuộc phạm vi quản lý của nhiều hãng. Do vậy hệ thống dữliệu về chuyến bay của các hãng hàng không chính là một hệ CSDL phântán đợc quản lý thống nhất tại trung tâm điều khiển bay đặt tại Mỹ. Sự liên kết các CSDL đang tồn tại: CSDL phântán là giải pháp tự nhiên khi có các CSDL đang tồn tại và sự cần thiết thực hiện xây dựng một ứng dụng toàn cục. Trong trờng hợp này CSDL phântán đợc tạo từ dới lên (Bottom-up) từ các CSDL đã tồn tại trớc đó. Quá trình này có thể đòi hỏi CSDL phải cấu trúc lại cục bộ ở một mức độ nhất định. Dù sao, những sửa đổi này là nhỏ hơn rất nhiều so với việc tạo lập một CSDL tập trung hoàn toàn mới. Sự phát triển mở rộng: Các tổ chức có thể mở rộng bằng cách thêm các đơn vị mới, vừa có tính tự trị vừa có quan hệ tơng đối với các tổ chức khác. Khi đó CSDL phântán hỗ trợ sự mở rộng tổ chức một cách uyển chuyển với một mức độ ảnh hởng tối thiểu tới các đơn vị đang tồn tại. Với CSDL tập trung, cũng có thể khởi tạo kích thớc lớn cho việc mở rộng tổ chức trong tơng lai. Điều đó rất khó đánh giá và chi phí thực hiện sẽ lớn, hoặc việc mở rộng tổ chức sẽ có ảnh hởng lớn không chỉ trên các ứng dụng mới mà còn trên các ứng dụng cũ đang tồn tại. Làm giảm tổng chi phí tìm kiếm: Trên thực tế nhiều ứng dụng cục bộ rõ ràng làm giảm tổng chi phí truyền thông trên phơng diện một CSDL tập trung. Bởi vậy một trong các mục đích chính trong thiết kế CSDL phântán là tạo tối đa các vị trí ứng dụng. Sự quan tâm hiệu suất (Performance Considerations): S tồn tại một vài bộ xử lý tự trị đa đến kết quả tăng hiệu suất thông qua một mức độ song song cao. Sự quan tâm này chỉ có thể đ ợc ứng dụng cho một hệ thống đa xử lý không nhất thiết phải là một hệ CSDL phân tán. Dù sao, CSDL phântáncó lợi trong sự phân tándữliệu phản ánh các tiêu chuẩn phụ thuộc ứng dụng và số tối đa vị trí các ứng dụng. Bằng phơng pháp này sẽ giảm tối thểu sự gây trở ngại lẫn nhau giữa các bộ xử lý. Trọng tải đợc chia sẻ giữa các bộ xử lý, và các tắc nghẽn nguy kịch, nh tắc nghẽn mạng truyền thông, tắc nghẽn dịch vụ chung cho toàn bộ hệ thống sẽ đợc tránh. Kết quả này là một hệ quả của đòi hỏi khả năng xử lý tự trị cho các ứng dụng cục bộ đã đợc phát biểu trong định nghĩa CSDL phân tán. Tính tin cậy và tính sẵn sàng: CSDL phân tán, đặc biệt với dữliệu d thừa, cũng đợc sử dụng để đạt đợc một sự tin cậy và tính sẵn sàng cao hơn. Để đạt đợc mục đích này cũng gặp một số trở ngại và phải giải quyết bằng việc sử dụng các kỹ thuật vẫn cha đợc hoàn thiện. Bản thân khả năng xử lý tự trị của các vị trí khác nhau trong CSDL phântán cũng không bảo đảm tính tin cậy cao của hệ thống, nhng nó đảm bảo hạn chế sự đổ vỡ toàn bộ hệ thống. Các sự cố trong CSDL phântáncó thể thờng xuyên hơn một CSDL tập trung vì cósố lợng thành phần lớn hơn, nhng hậu quả chỉ ảnh hởng tới các ứng dụng sử dụng dữliệucủa vị trí có sự cố và việc đổ vỡ toàn bộ hệ thống là hiếm xảy ra. B. Môhình xử lý Client-Server Môhình xử lý Client-Server là một môhình liên quan đến việc xử lý hợp tác đối với các yêu cầu từ Client (hoặc ngời yêu cầu) đợc máy Server tiến hành xử lý và gửi trả kết quả về cho Client. Trong khi các hệ phântán là hiện tợng tơng đối mới thì phântán ở mức hệ điều hành đã đợc hiểu khá tờng tận và đợc dùng rộng rãi. Ví dụphântán các chức năng số học và vào/ra, phântán các chức năng hệ điều hành cho nhiều CPU trong bộ đa xử lý của IBM 3090/600 (sáu bộ xử lý). Hệ phântán đã tiến hoá từ môi trờng nguyên thuỷ nhất để hỗ trợ cho xử lý ứng dụng. Chính môi trờng xử lý dựa trên Server cha có khả năng xử lý ứng dụng phân tán. Việc xử lý ứng dụng trên Server đợc thực hiện trên một hệ thống máy tính có gắn các thiết bị câm không thông minh. Một máy PC đơn lẻ hay máy lớn IBM với các thiết bị cuối dựa trên hiển thị kí tự là một thí dụ về môi trờng xử lý dựa trên Server. Theo quan điểm ứng dụng thì xử lý trên Server hoàn toàn không phân tán. Việc xử lý hợp tác Client-Server thực tế là một dạng riêng của xử lý phântán với tài nguyên (và nhiệm vụ ảnh h - ởng tới tài nguyên) đợc trải qua hai hay nhiều hệ thống tính toán rời rạc. Môhình xử lý Client-Server đã nổi lên nh một mức cao hơn của việc xử lý dùng chung thiết bị đã có trong mạng cục bộ (LAN). Thí dụ trong môi trờng xử lý dùng chung thiết bị, các máy tính cá nhân (PC) đợc gắn với thiết bị hệ thống với mục đích cho phép các PC này dùng chung tài nguyên tệp trên đĩa cứng và máy in. Theo thuật ngữ LAN, các thiết bị dùng chung nh vậy đợc gọi là các phục vụ (Server). Tên phục vụ là thích hợp hơn cả vì các thiết bị dùng chung này dùng để nhận các yêu cầu cần phục vụ từ các PC cho các chức năng thấp, tổng quát. Trong xử lý dùng chung thiết bị trên LAN, các yêu cầu của PC này thờng bị giới hạn về các dịch vụ liên quan tới tệp dùng chung hay tệp xử lý in. Nhợc điểm hiển nhiên của cách tiếp cận nh vậy là ở chỗ mọi xử lý ứng dụng đều đợc thực hiện trên các PC đơn lẻ, và chỉ một số chức năng nào đó (in, vào ra tệp) mới là phân tán. Do đó, toàn bộ tệp phải đợc gửi cho một PC đã ban ra yêu cầu READ tệp đó. Nếu tệp đợc cập nhật thì toàn bộ tệp đó bị khoá bởi PC đã ban ra yêu cầu cập nhật tệp đó. Chính vì các lý do trên mà môhình xử lý Client-Server là việc mở rộng tự nhiên của việc dùng chung thiết bị và các trạm làm việc đóng vai trò khách của máy chủ. Phầncó ý nghĩa nhất củamôhình này là xử lý ứng dụng đợc phân chia (không nhất thiết phải chia đều) giữa Client và Server. Xử lý thực tế đợc khởi đầu và kiểm soát một phần bởi nơi yêu cầu dịch vụ là Client nhng không phải theo kiểu chủ-tớ. Thay vì vậy, cả Client và Server đều hợp tác để thực hiện thành công ứng dụng. Chẳng hạn nếu PC chạy chơng trình cần một bản ghi đặc biệt nào đó từ một tệp dùng chung thì nó sẽ chuyển yêu cầu cho Server CSDL tiến hành xử lý cục bộ rồi nhận nhận lại đúng bản ghi đã yêu cầu. Về mặt kiến trúc xử lý Client-Server có các đặc tính: Đờng liên lạc tin cậy, chắc chắn giữa Client và Server. Các Client khởi xớng tơng tác Client-Server. Phântán xử lý ứng dụng giữa Client và Server. Server kiểm soát các dịch vụ do Client yêu cầu. Server làm trọng tài cho các yêu cầu tranh chấp. Các u điểm củamôhình Client-Server: Phát huy đợc sức mạnh năng lực công nghệ tính toán của PC. Các PC ngày nay với giá thành nhỏ đã cung cấp một năng lực tính toán đáng kể mà trớc đây các máy tính lớn mới có đợc. Cho phép xử lý đợc thực hiện tại gần nguồn dữliệu cần xử lý (các CSDL trên Server). Do đó lu lợng (và thời gian đáp ứng) của mạng giảm đi rất nhiều, hiệu năng và khả năng chuyển tải của mạng đợc tăng lên. Tạo điều kiện cho việc dùng giao diện đồ hoạ (GUI) có sẵn trên các trạm làm việc hiện có. Cho phép và cổ vũ hệ thống mở. Thực tế là Client và Servercó thể chạy trên các nền phần cứng và phần mềm khác nhau. Tuy nhiên không phải là môhình Client-Server đã hoàn chỉnh, môhình này vẫn còn các nhợc điểm sau đây: Nếu có nhiều thành phần logic của ứng dụng đợc chuyển về Server thì Server sẽ nảy sinh hiện tợng cổ chai nh máy tính lớn (main frame) trong môhình thiết bị cuối. Các tài nguyên củaServer sẽ ở trạng thái bị đòi hỏi làm việc ở mức cao hơn do việc tăng số ngời tiêu thụ tài nguyên (End User). Các ứng dụng phân tán, đặc biệt là những ứng dụng đợc thiết kế cho xử lý hợp tác thờng phức tạp hơn các ứng dụng không phân tán. Tuy nhiên một vài sự phức tạp này có thể đợc giảm bớt bằng cách thu nhỏ vấn đề lớn thành một tập hợp vấn đề nhỏ hơn, có thể có đợc tính độc lập lẫn nhau, tơng tự nh trong hệ thiết kế đơn thể. C. Hệ quản trị CSDL Oracle Đối với một hệ CSDL phântán thì hệ quản trị CSDL có ý nghĩa rất quan trọng vì phải đảm bảo tính thống nhất và toàn vẹn củadữ liệu, đảm bảo cho các chơng trình ngời dùng truy xuất đến CSDL phântán nh là một CSDL tập trung duy nhất. Ngoài ra hệ quản trị CSDL còn phải đảm bảo chức năng phân quyền truy nhập và bảo mật trên đờng truyền. Trong các hệ quản trị CSDL phântán hiện nay thì hệ quản trị CSDL Oracle đợc đánh giá là u việt nhất với các chức năng tiên tiến: phân tán, sao bản (replication), bảo mật cao, tính nhất quán dữ liệu, thủ tục chạy ngầm (Procedure Storge), đoạn mã xử lý sự kiện kích hoạt (Triggers), khoá dữliệu đến từng hàng, chạy thông suốt trên 120 loại phần cứng từ máy lớn đến máy nhỏ và 19 hệ điều hành, hỗ trợ hầu hết các nghi thức mạng, là CSDL đầu tiên trên thế giới tích hợp Web. OracleServer cung cấp việc quản lý dữliệu bảo mật, tin cậy, hiệu quả cho các hệ thống ứng dụng từ các hệ thống giao dịch trực tuyến (OLTP) cỡ lớn đến các ứng dụng sử dụng các kho dữliệu (Data Warehouse) có nhiều giao dịch. Oracle không chỉ hỗ trợ cho các nhu cầu quản lý nghiệp vụ phức tạp mà còn cung cấp các công cụ mềm dẻo cho phân tándữliệu tới ngời dùng một cách thực sự, hiệu quả và phù hợp mọi qui mô để đạt đ ợc hiệu năng tối u từ mọi tài nguyên đã có. OS server sql Pl/sql Công cụ ứng dụng OracleDữliệu Kiến trúc phân lớp của hệ CSDL ORACLE Hệ quản trị CSDL Oracle bao gồm CSDL Oracle, các môi trờng phát triển, các công cụ và các trình ứng dụng đợc viết trên đó đợc hoạt động theomôhình xử lý Client-Server. Extent hợp thành cấp phát cho bộ phận Cơ sởdữliệuORACLE Tablespace hợp thành bộ phận bộ phận hợp thành còn trống Đ sử dụngã hợp thành hợp thành Segment Data Index Cluster Rollback Temporary Cache hợp thành bộ phận Các file của HĐH Block bộ phậnSơ đồ tổng thể CSDL phântáncủaORACLE Về mặt logic thì CSDL Oracle đợc cấu tạo nên từ các thành phần nhỏ gọi là Tablespace. Mỗi Tablespace có một chức năng riêng nh Tablespace System dành cho sự hoạt động của hệ thống, Table User dành cho các hoạt động của ngời dùng .v.v. Các Tablespace có thể mở rộng cũng nh thu hẹp lại và đơn vị cấp phát bộ nhớ cho các Tablespace là các Extent. Mỗi Extent lại bao gồm các Segment (đoạn) nh Segment Index, Segment dữ liệu. Về mặt vật lý thì mỗi Tablespace đợc tạo nên từ các file của hệ điều hành nằm phân tán. Các file của hệ điều hành sẽ đợc chia thành nhiều Block. Mỗi Block sẽ chứa một hoặc nhiều hàng dữ liệu. Kiến trúc Serverdữliệucủa Oracle: Database Buffer Cache Server User DBWR LGWR PMON LCKn Data Files Redo Log Files ARCH Kiến trúc ServerdữliệuORACLE SGA Shared Pool Redo Log Buffer Parameter Files Control Files Offline Storage RECO SMON CKPT Data Buffer Cache Môhình kiến trúc củaOracleServercó thể chia ra làm ba khối cơ bản nh sau : Oracle data base : Bao gồm Database Files, Redolog Files, Control Files và Parameter Files. -Database File : lu trữ tất cả dữ liệucủacơsởdữ liệu. -Redo log File : dùng để khôi phục, ghi lại những thay đổi thông tin trên database. -Control File : ghi lại cấu trúc vật lý của Database. -Parameter File hay còn gọi là Init File chứa các tham số thiết lập môi trờng làm việc nh đờng dẫn tới CSDL, kích thớc thành phần trong SGA, tạo khả năng theo dõi các câu lệnh SQL và dựng lại cây phân tích câu lệnh. File này nằm ở th mục DATABSE trong th mục đã cài Oracle và có tên là INIT + <bí danh CSDL>+.ORA. Thể hiện củaOracleServer : Là sự kết hợp giữa bộ nhớ đệm và các tiến trình nền. Bất cứ khi nào OracleServer bắt đầu, một vùng nhớ hệ thống toàn cục (System Global Area : SGA) đợc cấp phát, đồng thời các tiến trình nền cũng đợc khởi động. Thể hiện củaOracle là một phơng tiện để truy cập dữliệu trong Data File. - SGA: một nhóm bộ đệm dùng chung mà OracleServer cấp phát cho một thể hiện. - Background Process: là các tiến trình chạy ngầm bên dới phục vụ cho tất cả các User. - User Process & Server Process : User Process đợc tạo khi User chạy một chơng trình ứng dụng. Khi đó OracleServer cũng tạo ra các Server Process để đáp ứng các yêu cầu từ phía User Process. Giữa User Process và Server Process luôn có sự liên hệ với nhau. Quá trình thực hiện củaServer Process theo một số bớc sau : + Phân tích cú pháp các câu lệnh SQL (Parse). + Thi hành các câu lệnh SQL (Excute). + Trả lại kết quả thực hiện các câu lệnh SQL cho User Process (Fetch). Trớc khi dữliệucó thể truy cập đợc thì Server Process phải đợc thực hiện để đa dữliệu lên vùng nhớ đệm dùng chung. Các khối dữliệu sau khi đợc thao tác, sửa đổi sẽ đợc viết trở lại bộ nhớ ngoài nhờ một tiến trình nền gọi là Database Writer (DBWR). Do việc cập nhật lại dữliệu từ vùng nhớ dùng chung (SGA) ra đĩa là rất tốn thời gian cho nên tiến trình CKPT (Check Point) sẽ đảm bảo việc cập nhật dữliệu sẽ thực hiện vào thời điểm cần thiết. Cũng do việc cập nhật xảy ra không liên tục cho nên tiến trình LGWR (Log Writer) sẽ cập nhật lại các thay đổi của Redo Buffer ra các Redo Log File. Nếu sử dụng lu trữ trực tuyến thì các Redo Log File sẽ đợc cập nhật trực tuyến sang một vùng lu trữ khác (Offline Storage) để đề phòng sự cố xảy ra đối với hệ thống. . CSDL phân tán theo mô hình Client - Server của Oracle A. Khái niệm về CSDL phân tán Một CSDL phân tán là một tập hợp dữ liệu mà về mặt logic tập dữ liệu. hiếm xảy ra. B. Mô hình xử lý Client- Server Mô hình xử lý Client- Server là một mô hình liên quan đến việc xử lý hợp tác đối với các yêu cầu từ Client (hoặc