Christopher Date (2004) mô tả ba cấp độ kiến trúc của một hệ thống cơ sở dữ liệu (DBS), cụ thể là, cấp độ bên ngoài, cấp độ khái niệm và cấp độ bên trong. Các mức này được minh họa trong Hình 2.1; chúng ta sẽ thảo luận ngắn gọn về từng cái. Cấp độ bên ngoài liên quan đến quan điểm người dùng cá nhân. Do đó, nó thay đổi tùy theo quan điểm người dùng. Cấp độ bên ngoài được xác định bởi lược đồ bên ngoài (external schema)
Trang 1CHAPTER 2: MÔI TRƯỜNG HỆ THỐNG CƠ SỞ DỮ LIỆU
2.1 Các mức Kiến trúc
Christopher Date (2004) mô tả ba cấp độ kiến trúc của một hệ thống cơ sở
dữ liệu (DBS), cụ thể là, cấp độ bên ngoài, cấp độ khái niệm và cấp độ bên trong Các mức này được minh họa trong Hình 2.1; chúng ta sẽ thảo luận ngắn gọn về từng cái
2.1.1 Cấp độ bên ngoài
Cấp độ bên ngoài liên quan đến quan điểm người dùng cá nhân Do đó, nó thay đổi tùy theo quan điểm người dùng Cấp độ bên ngoài được xác định bởi lược
đồ bên ngoài (external schema)
Thông thường, cơ sở dữ liệu được truy cập thông qua lược đồ bên ngoài của
nó Người lập trình ứng dụng sử dụng cả ngôn ngữ máy chủ (host language ) và ngôn ngữ dữ liệu dưới cấp (data sublanguage ) (DSL) để tạo giao diện người dùng
mà người dùng cuối sử dụng để truy cập hệ thống:
Trang 2- DSL là ngôn ngữ liên quan cụ thể đến các đối tượng và hoạt động của cơ sở dữ liệu Để minh họa, SQL (ngôn ngữ truy vấn có cấu trúc) là DSL tiêu chuẩn của ngành Một ví dụ khác về DSL là ngôn ngữ quản lý và truy vấn kiến thức (Knowledge query and management language) (KQML) Một ví dụ cũ không còn phổ biến là QUEL (viết tắt của “Query Language”) Các ngôn ngữ này (SQL và QUEL) sẽ được thảo luận thêm ở phần sau của khóa học
- Ngôn ngữ máy chủ là ngôn ngữ hỗ trợ DSL ngoài các phương tiện phi cơ sở dữ liệu khác chẳng hạn như thao tác với các biến, tính toán và logic Boolean Ngôn ngữ máy chủ thường là ngôn ngữ cấp cao (high-level languages )(HLL); các ví dụ bao gồm C++, Java, C#, Python, PHP và PL/SQL
- Thông thường, DSL bao gồm ngôn ngữ định nghĩa dữ liệu (data definition language)(DDL), ngôn ngữ thao tác dữ liệu (data manipulation language) (DML)
và ngôn ngữ kiểm soát dữ liệu (data control language ) (DCL) Các ngôn ngữ này này cho phép người dùng (cả người dùng kỹ thuật và người dùng cuối) sử dụng DSL để xác định các dạng xem logic khác nhau của dữ liệu trong cơ sở dữ liệu Tóm lại, các lược đồ bên ngoài là sự giải thích của người dùng về cơ sở dữ liệu nhưng được hỗ trợ bởi DSL
2.1.2 Cấp độ khái niệm
Mức khái niệm là sự biểu diễn trừu tượng toàn bộ nội dung thông tin của cơ
sở dữ liệu Nó được định nghĩa bằng lược đồ khái niệm (conceptual schema )(còn gọi là lược đồ logic), bao gồm định nghĩa của từng đối tượng bền vững (persistent objects) khác nhau tạo nên cơ sở dữ liệu Đối tượng bền vững nghĩa là các đối tượng được lưu trữ vĩnh viễn trong cơ sở dữ liệu cho đến khi bị xóa hoàn toàn
Lược đồ khái niệm bao gồm việc xác định cấu trúc của cơ sở dữ liệu, các ràng buộc bảo mật, ràng buộc hoạt động, và kiểm tra tính toàn vẹn Nó thể hiện một bức tranh gần hơn về cách dữ liệu sẽ được
Trang 3thực sự lưu trữ và quản lý và là cấp độ mà hầu hết người dùng kỹ thuật sẽ liên quan đến
Lược đồ khái niệm phải tuân thủ yêu cầu độc lập dữ liệu Ngoài ra, nó phải được toàn diện vì nó đại diện cho việc thực hiện toàn bộ thiết kế cơ sở dữ liệu 2.1.3 Cấp độ bên trong
Còn được gọi là dạng xem lưu trữ (storage view ), mức bên trong là chính là mức cơ sở dữ liệu Nó là một
mức trên mức vật lý, xử lý các trang, cylinders và theo dõi trên thiết bị lưu trữ
Cấp độ bên trong được xác định bởi lược đồ bên trong (internal schema ), giải quyết các vấn đề như loại bản ghi, chỉ mục, biểu diễn trường, trình tự lưu trữ vật lý của các bản ghi và truy cập dữ liệu và được viết bằng DDL bên trong Cuối cùng, lớp vật lý này có tác động đáng kể đến hiệu suất của kho dữ liệu
2.2 Ánh xạ liên cấp
Hình 2.1 minh họa các lược đồ khác nhau và mối quan hệ qua lại giữa các mức kiến trúc của DBMS Từ hình vẽ, người ta nhận thấy rằng có hai các mức ánh
xạ - ánh xạ khái niệm bên ngoài và ánh xạ khái niệm bên trong:
◾ Ánh xạ khái niệm-bên trong xác định cách biểu diễn các bản ghi khái niệm tại cấp độ bên trong Nếu các thay đổi được thực hiện ở cấp độ bên trong, ánh xạ này phải được cập nhật Thông thường, người quản trị cơ sở dữ liệu (DBA) duy trì ánh
xạ này để bảo tồn độc lập dữ liệu Trong các hệ thống hiện đại, các DBMS tự động cập nhật và duy trì ánh xạ này
◾ Ánh xạ khái niệm bên ngoài xác định cách các khung nhìn bên ngoài được liên kết với khái niệm mức độ Trên thực tế, điều này đạt được nhờ các chương trình ứng dụng và chế độ xem logic thông qua ngôn ngữ máy chủ và DSL
Cần nhớ rằng các cấp độ này là những khái niệm trừu tượng tạo điều kiện thuận lợi cho sự hiểu biết về môi trường DBS Là người dùng cuối, rất có thể bạn
Trang 4sẽ không quan sát được rõ ràng các cấp độ kiến trúc này Tuy nhiên, với tư cách là một kỹ sư phần mềm, là một thành viên trong nhóm kỹ sư phần mềm đang xây dựng hoặc duy trì một DBMS thì kiến thức về những khái niệm trừu tượng này trở nên rất quan trọng
2.3 Hệ quản trị cơ sở dữ liệu
Hệ thống quản lý cơ sở dữ liệu (DBMS) là phần mềm hỗ trợ việc tạo và quản lý cơ sở dữ liệu Khi người dùng đưa ra yêu cầu thông qua một số DSL (thường là SQL), DBMS diễn giải một yêu cầu như vậy, thực hiện các hướng dẫn thích hợp và đáp ứng yêu cầu đó Tùy thuộc vào bản chất của yêu cầu ban đầu, phản hồi có thể được chuyển tiếp (bởi DBMS) trực tiếp tới người dùng cuối hoặc gián tiếp tới người dùng cuối thông qua một chương trình ứng dụng đang thực thi Các chức năng chính của hệ thống phần mềm rất quan trọng này bao gồm:
◾ Định nghĩa dữ liệu (quan hệ, phụ thuộc, ràng buộc toàn vẹn, dạng xem, v.v.)
◾ Thao tác dữ liệu (thêm, cập nhật, xóa, truy xuất, sắp xếp lại và tổng hợp dữ liệu)
◾ Kiểm tra tính toàn vẹn và bảo mật dữ liệu
◾ Quản lý truy cập dữ liệu (bao gồm tối ưu hóa truy vấn), lưu trữ và đồng thời
◾ Bảo trì danh mục hệ thống mà người dùng có thể truy cập (từ điển dữ liệu)
◾ Hỗ trợ các chức năng phi cơ sở dữ liệu khác (ví dụ: các tiện ích như sao chép)
◾ Hỗ trợ ngôn ngữ lập trình
◾ Quản lý giao dịch (tất cả các thay đổi được thực hiện hoặc không có thay đổi nào được thực hiện)
◾ Dịch vụ sao lưu và phục hồi
◾ Hỗ trợ giao tiếp (cho phép DBMS tích hợp với các phần mềm giao tiếp cơ bản )
◾ Hỗ trợ khả năng tương tác bao gồm kết nối cơ sở dữ liệu mở (ODBC), cơ sở dữ liệu Java kết nối (JDBC) và các vấn đề liên quan khác
Trang 5Hiệu quả và hiệu suất tối ưu là những đặc điểm nổi bật của một DBMS tốt.
Để minh họa tầm quan trọng
vai trò của DBMS, hãy xem xét các bước liên quan khi một chương trình ứng dụng truy cập cơ sở dữ liệu:
◾ Chương trình-A đưa ra yêu cầu tới DBMS (được thể hiện dưới dạng ngôn ngữ lược đồ con)
◾ DBMS xem xét lược đồ con Program-A, lược đồ và mô tả vật lý (thông tin này được lưu trữ trong các bảng)
◾ DBMS xác định cách tối ưu để truy cập dữ liệu, xác định tệp nào phải được được truy cập, bản ghi nào trong tệp là cần thiết và phương pháp tốt nhất để truy cập các lệnh DBMS (các lệnh đọc hoặc ghi) vào hệ điều hành
◾ Hệ điều hành truyền dữ liệu giữa ổ đĩa và bộ nhớ chính
◾ Các sự kiện DBMS chuyển sang các trường bắt buộc
◾ DBMS trả lại quyền kiểm soát cho Chương trình-A (có thể với mã hoàn thành)
Hình 2.2 cung cấp một biểu đồ minh họa, nhưng hãy nhớ rằng các bước này được thực hiện tự động theo cách minh bạch đối với người dùng
Trang 62.5 Các thành phần của DBMS Suite
DBMS thực sự là một tập hợp phức tạp của các thành phần phần mềm làm việc cùng nhau cho một
tập hợp các mục tiêu chung Với mục đích minh họa, chúng tôi có thể trình bày các thành phần thiết yếu của DBMS như sau:
◾ Công cụ DBMS
◾ Phân hệ định nghĩa dữ liệu
◾ Phân hệ giao diện người dùng
◾ Phân hệ phát triển ứng dụng
◾ Phân hệ quản trị dữ liệu
◾ Phân hệ từ điển dữ liệu
◾ Trình quản lý truyền thông dữ liệu
◾ Phân hệ tiện ích
Các thành phần chức năng này (được minh họa trong Hình 2.3) không nhất thiết phải được xác định rõ ràng, nhưng chúng tồn tại để đảm bảo hiệu suất chấp nhận được của DBMS Các thành phần chức năng này
được làm rõ trong các phần tiếp theo
Trang 72.5.1 Công cụ DBMS
Công cụ DBMS là liên kết giữa tất cả các phân hệ khác và thiết bị vật lý (máy tính) thông qua hệ điều hành Một số chức năng quan trọng như sau:
◾ Cung cấp quyền truy cập trực tiếp vào các tiện ích và chương trình của hệ điều hành (ví dụ: đầu vào/đầu ra yêu cầu, yêu cầu nén dữ liệu, yêu cầu liên lạc, v.v.)
◾ Quản lý truy cập tập tin (và quản lý dữ liệu) thông qua hệ điều hành
◾ Quản lý truyền dữ liệu giữa bộ nhớ và (các) bộ đệm hệ thống để thực hiện yêu cầu người dùng
◾ Bảo trì dữ liệu chung và siêu dữ liệu được lưu trữ trong từ điển dữ liệu (danh mục hệ thống)
2.5.2 Phân hệ định nghĩa dữ liệu
Phân hệ định nghĩa dữ liệu (DDS hoặc tương đương) bao gồm các công cụ
và tiện ích để xác định và thay đổi cấu trúc của cơ sở dữ liệu Cấu trúc bao gồm các bảng quan hệ, các mối quan hệ, các ràng buộc, hồ sơ người dùng, cấu trúc dữ liệu trên cao, v.v DDL (ngôn ngữ định nghĩa dữ liệu) được sử dụng để xác định tất
cả các đối tượng cơ sở dữ liệu tạo nên lược đồ khái niệm (quan hệ, quan hệ, ràng
Trang 8buộc, v.v.) DML (ngôn ngữ thao tác dữ liệu) được sử dụng để hỗ trợ thao tác và thường bao gồm ngôn ngữ truy vấn để chèn, xóa, cập nhật, và tìm dữ liệu trong cơ
sở dữ liệu DCL (ngôn ngữ điều khiển dữ liệu) được sử dụng để thiết lập điều khiển môi trường để quản lý dữ liệu bởi người dùng cuối Như đã đề cập trước đó, DDL, DML và DCL tạo nên DSL
2.5.3 Phân hệ giao diện người dùng
Phân hệ giao diện người dùng (user interface subsystem )(UIS hoặc tương đương) cho phép người dùng và chương trình truy cập cơ sở dữ liệu thông qua ngôn ngữ truy vấn tương tác như SQL và/hoặc ngôn ngữ máy chủ Ví dụ, giả sử rằng một tệp có tên Sinh viên có các trường {ID#, SName, FName, Status, DOB, } cho mỗi bản ghi Hai truy vấn SQL có thể có trên tệp này được hiển thị trong Ví dụ dưới đây:
// Tạo danh sách sinh viên bắt đầu với tên là Bell và tiếp tục cho đến hết tập tin SELECT ID#, SNAME, FNAME FROM STUDENT WHERE SNAME >=
‘BELL’;
// Tạo danh sách sinh viên bắt đầu với ngày sinh 19960101 và tiếp tục cho đến hết tập tin
SELECT ID#, SNAME, DOB FROM STUDENT WHERE DoB >= 19660101;
Giao diện truyền thống này dựa trên lệnh; tuy nhiên, xu hướng hiện nay là cung cấp giao diện người dùng đồ họa (GUI) Các bộ DBMS tinh vi hơn có thể sử dụng giao diện ngôn ngữ tự nhiên
Giao diện người dùng cũng có thể bao gồm các phần mở rộng ngôn ngữ lập trình dành riêng cho DBMS (ví dụ: PL/SQL của Oracle) Các phần mở rộng ngôn ngữ này chỉ liên quan đến DBMS mà chúng được sử dụng
Ngoài ra, DBMS có thể hỗ trợ nhiều ngôn ngữ cấp cao như C++ và Java, do
đó làm cho nó linh hoạt hơn và thị trường hơn
Trang 92.5.5 Phân hệ quản trị dữ liệu
Phân hệ quản trị dữ liệu (DAS) bao gồm một tập hợp các tiện ích hỗ trợ việc quản lý hiệu quả cơ sở dữ liệu Bao gồm trong phân hệ này là các phương tiện sao lưu và phục hồi, điều chỉnh cơ sở dữ liệu và quản lý lưu trữ Nó thường được sử dụng bởi DBA cũng như kỹ sư phần mềm
2.5.6 Phân hệ từ điển dữ liệu
Từ điển dữ liệu (data dictionary) (DD) là một thuật ngữ truyền thống để chỉ danh mục hệ thống (system catalog) (thường hay được sử dụng hơn) trong nhiều
hệ thống Danh mục hệ thống chứa thông tin về cấu trúc cơ sở dữ liệu, mối quan hệ giữa các đối tượng cơ sở dữ liệu, đặc quyền của hệ thống và đối tượng, người dùng, ràng buộc toàn vẹn, v.v được tự động tạo và duy trì bởi DBMS
Danh mục hệ thống chứa tất cả siêu dữ liệu cho cơ sở dữ liệu Nó có thể được truy vấn bằng cách sử dụng cùng câu lệnh dùng để thao tác với dữ liệu nguồn; do đó, nó có giá trị vô giá đối với các DBA và kỹ sư phần mềm
2.5.7 Trình quản lý truyền thông dữ liệu
Thông thường, một hệ thống riêng biệt được liên kết với DBMS, trình quản
lý truyền thông dữ liệu (DCM) thực hiện các chức năng như:
- Xử lý giao tiếp với người dùng từ xa trong môi trường phân bổ
- Xử lý các thông báo đến và đi từ DBMS
- Giao tiếp với các bộ DBMS khác
Các hệ thống hiện đại có xu hướng có hệ thống con này như một phần không thể thiếu của bộ DBMS Nói ngắn gọn, trình quản lý truyền thông dữ liệu đảm bảo rằng cơ sở dữ liệu giao tiếp hiệu quả với tất cả yêu cầu của khách hàng trong môi trường dựa trên máy khách-máy chủ Thông thường, các phần dựa trên máy chủ
Trang 10của DBMS sẽ chạy trên các máy được chỉ định làm máy chủ trong mạng Tất cả các nút khác sau đó được coi là các nút máy khách có thể yêu cầu dịch vụ cơ sở dữ liệu từ máy chủ Có thể có một số máy chủ cơ sở dữ liệu trong mạng; đồng thời, một nút có thể đóng vai trò vừa là máy chủ vừa là máy khách (miễn là các thành phần phần mềm thiết yếu được đưa ra)
2.5.8 Phân hệ tiện ích
Tiện ích là các chương trình thực hiện các nhiệm vụ quản trị khác nhau Phân hệ tiện ích bao gồm các chương trình tiện ích khác nhau có thể áp dụng cho môi trường cơ sở dữ liệu Ví dụ về các tiện ích như sau:
- Tải các quy trình để tạo phiên bản ban đầu của cơ sở dữ liệu từ các tệp không phải cơ sở dữ liệu
- Sao chép các phương pháp sao chép thông tin
- Các phương pháp sắp xếp lại để sắp xếp lại dữ liệu trong cơ sở dữ liệu
- Các phương pháp xóa tệp
- Các phương pháp thống kê để tính toán và lưu trữ số liệu thống kê
- Tiện ích sao lưu và phục hồi
- Các công cụ để nhập dữ liệu có định dạng khác nhau vào cơ sở dữ liệu và xuất dữ liệu từ cơ sở dữ liệu sang các định dạng khác nhau
- Các tiện ích khác (có thể đã được) phát triển bởi các lập trình viên ứng dụng 2.6 Quan điểm của Front-end và Back-end Perspectives
DBS có thể được coi là một cấu trúc gồm hai phần đơn giản – front-end (giao diện người dùng) và back-end Front-end bao gồm người dùng cuối, ứng dụng và giao diện lập trình; phần back-end bao gồm DBMS thực tế và cơ sở dữ liệu; nó liên quan đến việc tạo và quản lý cơ sở dữ liệu thực tế, hoạt động bên trong của hệ thống, xử lý các yêu cầu, quản lý bộ nhớ và quản lý đầu vào/đầu ra (I/O)
Trang 11Hệ thống front-end có thể nằm trên một máy khác với hệ thống back-end, và
cả hai đều được kết nối bởi một mạng truyền thông Thông thường, IDE (môi trường phát triển tích hợp) hoàn thành vai trò của hệ thống front-end Các ví dụ
phổ biến bao gồm: Delphi (hỗ trợ các ngôn ngữ Object Pascal và C++); NetBeans (hỗ trợ Java, C++, JavaScript, PHP, XML, HTML, v.v.); Visual Studio (hỗ trợ C#, C++, JavaScript, v.v.); và Qt (hỗ trợ C++, C#, Java, Python, Ruby, v.v.) Hệ thống back-end có thể là bất kỳ bộ DBMS hàng đầu nào trên thị trường — Oracle, DB2, MySQL, SQL Server hoặc PostGreSQL Hình 2.4 minh họa khái niệm về
front-end và back-front-end
Trang 12Figure 2.4 Khái niệm Front-end và back-end
2.7 Cấu trúc hệ thống cơ sở dữ liệu
Có thể có thêm lợi ích khi sử dụng các máy khác nhau cho hệ thống back-end và front-back-end Hình 2.5–2.7 hiển thị ba cấu hình có thể Cũng xin lưu ý rằng các cấu trúc liên kết mạng khác nhau có thể áp dụng cho bất kỳ mạng máy tính nào
Trong số ba cấu hình, có lẽ cấu hình được sử dụng phổ biến nhất là cấu hình yêu cầu một back-end và nhiều front-end (Hình 2.6) Đó là do nó cung cấp sự linh hoạt và phức tạp hơn cấu hình đơn giản trong Hình 2.5, đồng thời ít chi phí và chi phí chung hơn so với cấu hình phức tạp hơn của Hình 2.7 Cơ sở dữ liệu nằm trên một máy chủ cơ sở dữ liệu duy nhất (máy source) và có thể truy cập được từ nhiều máy khách
Trang 152.8 Phân loại hệ thống quản lý cơ sở dữ liệu
Hệ cơ sở dữ liệu có thể được phân lớp dựa trên mô hình dữ liệu mà nó hỗ trợ, số lượng người dùng, cấu hình site hoặc dựa trên mục đích sử dụng
2.8.1 Phân loại dựa trên mô hình dữ liệu (Data Models)
Việc phân loại dựa trên các mô hình dữ liệu có thể áp dụng một số cách tiếp cận truyền thống và một số cách tiếp cận mang tính chất hiện đại hơn Các phương pháp tiếp cận truyền thống thường được coi là lỗi thời, trong khi các cách tiếp cận hiện đại đại diện cho những cách tiếp cận đang tăng trưởng và phát triển tích cực trong thị trường phần mềm
Các cách tiếp cận truyền thống là mô hình phân cấp, mô hình mạng và mô hình danh sách đảo ngược; những điều này đã được đề cập trong Chương 1 Mô hình phân cấp được IBM phát triển vào những năm 1960 trong đó tiêu biểu nhất là sản phẩm có tên RAMIS Mô hình mạng cũng được phát triển vào những năm
1960, lấy cảm hứng từ một dự án được khởi xướng tại General Electric Một trong những sản phẩm nổi bật của sáng kiến này là hệ thống CODASYL Mô hình danh sách ngược quy định việc xây dựng và quản lý các chỉ mục sẽ ánh xạ dữ liệu tới các vị trí lưu trữ của chúng trong các tệp cơ sở dữ liệu Cách tiếp cận này đã có một tác động đáng kể đến cấu hình hiện đại của DBMS
Hai cách tiếp cận hiện đại chiếm ưu thế là mô hình quan hệ và mô hình hướng đối tượng, trong đó mô hình quan hệ chiếm phần lớn thị phần Nổi bật nhất trong các mô hình quan hệ (RDBMS) bao gồm Oracle, DB2, MySQL, SQL Server, Informix, PostGreSQL và Sybase (gần đây đã được tích hợp vào SAP) Cơ sở dữ liệu đối tượng hiếm khi xuất hiện riêng rẻ; chúng thường được đóng gói cùng với các bộ RDBMS và được bán trên thị trường dưới dạng bộ DBMS tổng quát Các sản phẩm hàng đầu như Oracle, DB2 và Informix đều thuộc loại này