Tổng quan về các hệ thống cơ sở dữ liệu
Một lượng lớn thông tin hữu ích đối với chúng ta tồn tại ở dạng văn bản, và giá trị của dữ liệu chính là tài sản quan trọng. Tuy nhiên, khả năng quản lý một lượng lớn thông tin, nhanh chóng truy cập đến những thông tin cần thiết còn quan ...
Một lượng lớn thông tin hữu ích đối với chúng ta tồn tại ở dạng văn bản, và giá trị của dữ liệu chính là tài sản quan trọng. Tuy nhiên, khả năng quản lý một lượng lớn thông tin, nhanh chóng truy cập đến những thông tin cần thiết còn quan trọng hơn nữa. Điều đó có nghĩa là có thông tin là chưa đủ, chúng ta còn phải biết cách sử dụng nó sao cho thật hiệu quả. Từ thực tế đó dẫn chúng ta đến một suy nghĩ là: cần phải có một hệ thống quản lý dữ liệu thật mạnh mẽ và hiệu quả. Để quản lý một lượng lớn dữ liệu phức tạp, người sử dụng phải có những công cụ - hỗ trợ tính năng đơn giản trong thao tác nhưng lại hiệu quả trong trích lọc thông tin.
Cơ sở dữ liệu là tập hợp dữ liệu biểu diễn các hoạt động của một hoặc một số tổ chức có liên quan đến nhau. Ví dụ, cơ sở dữ liệu của một trường đại học có thể chứa thông tin về:
Hệ quản trị cơ sở dữ liệu, còn gọi là DBMS là phần mềm được thiết kế để lưu trữ và quản lý một lượng lớn dữ liệu. Sử dụng DBMS là hướng tới một cách tiếp cận mới, không phải lưu trữ dữ liệu ở các tệp tin độc lập và viết từng ứng dụng cụ thể để quản lý chúng. Sự hữu ích của cơ sở dữ liệu sẽ được chúng ta đề cập chi tiết trong phần 4.
Note: Lĩnh vực của hệ quản trị cơ sở dữ liệu là một thế giới thu nhỏ của khoa học máy tính. Những vấn đề đặt ra và công nghệ sử dụng liên quan đến một chuỗi những ngành khoa học như xử lý ngôn ngữ, ngôn ngữ lập trình, biên dịch, hệ điều hành, điều khiển tương tranh, cấu trúc dữ liệu, thuật toán, hệ thống phân tán và song song, giao diện người máy, hệ chuyên gia và trí tuệ nhân tạo, công nghệ thống kê. Chúng ta sẽ không thể đi vào tất cả các lĩnh vực nói trên trong cuốn sách này, nhưng nên chắc chắn rằng đây là những môn học cần thiết và đầy hứng thú.
Mục đích của cuốn sách này là trình bày chi tiết về hệ quản trị cơ sở dữ liệu, nhấn mạnh về cách thức tổ chức thông tin trong DBMS, lưu trữ và truy cập dữ liệu hiệu quả, bao gồm, cách thiết kế một cơ sở dữ liệu và sử dụng DBMS hiệu quả. Quyết định sử dụng DBMS nào cho một ứng dụng cụ thể phụ thuộc vào khả năng của DBMS, cân nhắc xem nó có hỗ trợ ứng dụng này hiệu quả không. Vì thế, để sử dụng tốt một DBMS nào đó, thì chúng ta cần phải hiểu được DBMS đó làm việc như thế nào.
Có rất nhiều loại của hệ quản trị cơ sở dữ liệu, nhưng cuốn sách này tập trung vào hệ thống cơ sở dữ liệu quan hệ (RDBMSs), ngày nay hầu hết các DBMS hỗ trợ hệ thống này. Những câu hỏi sau được giải đáp trong cuốn sách này:
- Thiết kế cơ sở dữ liệu và phát triển ứng dụng: Cách thức người sử dụng có thể biểu diễn các hoạt động của thế giới thực (ví dụ, hoạt động của một trường đại học) bằng những dữ liệu được lưu trữ trong DBMS? Những dữ liệu nào phải được xem xét và tổ chức lưu trữ như thế nào? Như thế nào để phát triển ứng dụng trên DBMS (Chương 2, 3, 6, 7, 19, 20 và 21)
- Phân tích dữ liệu: Người sử dụng đưa ra yêu cầu với hệ thống như thế nào thông qua các truy vấn trên dữ liệu đang được lưu trữ trong DBMS? (Chương 4, và 5) Một chương trực tuyến về Query-by-Example (QBA) cũng có thể phù hợp
- Điều khiển tương tranh và đảm bảo an toàn: Cách thức DBMS cho phép rất nhiều người cùng truy cập tới một dữ liệu đồng thời và làm thế nào để bảo vệ an toàn dữ liệu thậm chí khi hệ thống có sự cố. (Chương 16, 17 và 18)
- Hiệu suất: Làm cách nào DBMS có thể lưu trữ được tập dữ liệu lớn và đáp ứng được yêu cầu về hiệu quả của dữ liệu (Chương 8, 9, 10, 11, 12, 13, và 14)
Những chương cuối trình bày về những chủ để mở rộng như hệ quản trị cơ sở dữ liệu phân tán và song song, kho dữ liệu và những truy vấn phức tạp cho việc hỗ trợ ra quyết định, khai phá dữ liệu, truy vấn thông tin và cơ sở dữ liệu, XML, cơ sở dữ liệu hướng đối tượng, quản lý dữ liệu không gian và DBMS hướng chức năng.
Trong chương này, chúng ta giới thiệu về những vấn đề liệt kê ở trên. Trong phần 2, chúng ta sẽ bắt đầu tìm hiểu tóm tắt về lịch sử và vai trò của hệ quản trị cơ sở dữ liệu trong những hệ thống thông tin hiện đại. Sau đó, chúng ta chỉ ra lợi ích của việc lưu trữ dữ liệu bằng DBMS thay vì lưu trữ bằng hệ thống file trong phần 3, và bàn về những lợi ích của việc sử dụng DBMS để quản lý dữ liệu trong phần 4. Trong phần 5, chúng ta sẽ xem xét dữ liệu được lưu trữ như thế nào trong DBMS. Người sử dụng có lẽ nghĩ rằng thông tin được lưu trữ dưới dạng các khái niệm mức cao như là các thực thể (đối tượng) trong một tổ chức và các mối liên kết giữa các đối tượng này. Ngược lại, DBMS lưu trữ dữ liệu cụ thể ở dạng các bits. Sự khác nhau giữa suy nghĩ của người sử dụng với thực tế lưu trữ dữ liệu trong DBMS được giải quyết bằng cầu nối là một số các mức trừu tượng được DBMS hỗ trợ. Bằng trực giác, người sử dụng có thể biểu diễn dữ liệu ở mức cao và sau đó làm rõ ràng những biểu diễn này bằng cách thêm vào một số thông tin và miêu tả cần thiết.
Trong phần 6, chúng ta đề cập đến việc như thế nào người sử dụng có thể truy cập đến những dữ liệu được lưu trữ trong DBMS và những yêu cầu về công nghệ để làm cho các truy vấn trở nên hiệu quả. Phần 7 cung cấp tổng quan về cách thức DBMS hỗ trợ những truy cập tương tranh và bảo vệ an toàn dữ liệu ngay cả khi hệ thống gặp sự cố. Sau đó, chúng ta biểu diễn sơ bộ kiến trúc bên trong của DBMS trong phần 8 và một số đối tượng làm việc trên DBMS trong phần 9.
Từ những ngày đầu tiên có máy tính, lưu trữ và các thao tác dữ liệu đã trở thành những mối quan tâm chính. DBMS đầu tiên đã được Charles Bachman thiết kế vào những năm 60 và gọi là Lưu trữ dữ liệu tích hợp. Nó được xây dựng dựa trên mô hình mạng. Bachman đã nhận được giải thưởng ACM's Turing (được đánh giá là giải Nobel trong ngành khoa học máy tính) vào năm 1973 trong lĩnh vực cơ sở dữ liệu.
Cuối những năm 60, IBM đã phát triển Hệ thống quản lý dữ liệu và được sử dụng đến ngày nay trong nhiều ứng dụng chính. IMS được xây dựng dựa trên mô hình gọi là mô hình phân cấp. Hệ thống SABRE phục vụ cho hệ thống đặt vé máy bay được Hàng không Mỹ và IBM phối hợp thực hiện và hệ thống này cho phép một số người có thể cùng truy cập vào một dữ liệu thông qua mạng máy tính. Điều thú vị là ngày nay là hệ thống SABRE vẫn được sử dụng trong các dịch vụ du lịch dựa trên nền Web như là Travelocity.
Trong năm 1970, Edgar Codd, thuộc phòng nghiên cứu ở IBM's San Jose đã đưa ra một mô hình biểu diễn dữ liệu mới gọi là mô hình dữ liệu quan hệ. Phát minh này đã mở ra một thời kỳ phát triển mới cho hệ thống cơ sở dữ liệu, những DBMS xây dựng dựa trên mô hình này phát triển rất mạnh mẽ. Codd đã đạt được giải Turing về nghiên cứu này. Những lợi ích của nghiên cứu này được nhận thức rộng rãi và sử dụng DBMSs cho quản lý dữ liệu trở thành chuẩn mực.
Trong những năm 80, mô hình quan hệ phát triển mạnh mẽ và hệ thống cơ sở dữ liệu tiếp tục được ứng dụng rộng rãi. Ngôn ngữ truy vấn dữ liệu (SQL) dùng cho cơ sở dữ liệu quan hệ được dự án IBM's System R phát triển và ngày nay đã trở thành ngôn ngữ truy vấn dữ liệu chuẩn. SQL được chuẩn hóa vào cuối những năm 80 và SQL-92 được phát triển bởi American National Standards Institute (ANSI) và International Standards Organization (ISO) đã thành ngôn ngữ chuẩn hiện nay. Ngoài ra, người sử dụng có thể viết các giao dịch thực hiện trên cơ sở dữ liệu. James Gray đã đạt được giải thưởng Turing năm 1999 về sự đóng góp của ông trong lĩnh vực quản lý giao dịch trên DBMS.
Cuối những năm 80 và những năm 90, đã có rất nhiều tiến bộ trong nhiều lĩnh vực hệ thống cơ sở dữ liệu. Nhiều nghiên cứu đã đem đến sức mạnh cho ngôn ngữ truy vấn và các mô hình dữ liệu trở nên phong phú hơn, đã có những hỗ trợ đáng kể cho những phân tích dữ liệu phức tạp. Một số những hãng như IBM’s, DB2, Oracle, Informix
Điều đặc biệt là sự nổi lên của một số gói ứng dụng như Enterprise resource planning (ERP) và Management resource planning (MRP), đã có tác dụng đáng kể trong việc nâng cao khả năng của lớp trên cùng của DBMS - chính là lớp hướng ứng dụng (application-oriented). Những gói ứng dụng được sử dụng rộng rãi đến từ các hãng Baan, Oracle, PeopleSoft, SAP, và Siebel. Những gói này cung cấp một số các chức năng như: quản lý các đánh giá, lập kế hoạch, phân tích tài chính…Dữ liệu được lưu trữ trong cơ sở dữ liệu quan hệ và lớp ứng dụng có thể được xây dựng để hỗ trợ từng yêu cầu khác nhau của các công ty.
Một lợi ích lớn lao nữa chính là DBMSs đã ra nhập hệ thống Internet. Trong khi thế hệ đầu tiên của các Websites chỉ có thể lưu trữ dữ liệu dưới dạng hệ thống file, thì việc sử dụng cơ sở dữ liệu để lưu trữ dữ liệu và sau đó truy cập đến dữ liệu thông qua các trình duyệt Web đã trở nên vô cùng phổ biến. Các truy vấn được đưa vào thông qua các trình duyệt Web và sau đó kết quả được định dạng và trả về sử dụng ngôn ngữ đánh dấu như HTML để dễ dàng hiển thị lên các trình duyệt. Tất cả các nhà phát triển cơ sở dữ liệu thêm các tính năng khác vào hệ quản trị cơ sở dữ liệu để nó có thể ứng dụng hiệu quả trên Internet.
Hệ quản trị cơ sở dữ liệu tiếp tục thể hiện vai trò của mình khi ngày càng nhiều giao dịch được thực hiện trực tuyến và những truy cập được thực hiện thông qua mạng máy tính. Ngày nay, các tiện ích của cơ sở dữ liệu đa phương tiện, thư viện số, các kho dữ liệu khoa học, thương mại điện tử … đã làm thay đổi cuộc sống của con người.
Để hiểu được sự cần thiết của DBMS, chúng ta cùng nhau xem xét ví dụ sau: Một công ty có một tập hợp dữ liệu lớn (khoảng 500GB
Chúng ta có thể giải quyết các vấn đề về quản lý dữ liệu bằng việc lưu trữ dữ liệu trên hệ thống file riêng rẽ. Tuy nhiên, cách tiếp cận này gặp một số khó khăn, bao gồm:
- Có lẽ chúng ta không có bộ nhớ trong nào đủ 500GB để lưu trữ tất cả dữ liệu. Vì thế, chúng ta phải lưu trữ dữ liệu này thông qua các thiết bị lưu trữ như đĩa, băng từ và sau đó chuyển từng phần vào bộ nhớ trong để xử lý khi cần thiết.
- Thậm chí, nếu chúng ta có một bộ nhớ trong có dung lượng 500GB trên hệ thống máy tính 32-bits, chúng ta cũng không thể tham chiếu trực tiếp đến nhiều hơn 4GB dữ liệu! Chúng ta phải lập trình một vài phương pháp để có thể định vị được tất cả dữ liệu.
- Chúng ta phải viết các chương trình đặc biệt để trả lời từng câu hỏi của người sử dụng đối với dữ liệu. Những chương trình này rất phức tạp vì không gian tìm kiếm quá lớn.
- Chúng ta phải bảo đảm sự đúng đắn của dữ liệu đối với những thay đổi không nhất quán của nhiều người sử dụng đồng thời tác động lên dữ liệu. Nếu những chương trình được viết cho phép truy cập đồng thời thì nó thực sự rất phức tạp.
- Chúng ta phải đảm bảo rằng dữ liệu được lưu trữ phải có tính chất nhất quán nếu như hệ thống gặp trục trặc trong khi đang thực hiện một phiên giao dịch có sự thay đổi dữ liệu.
- Hệ điều hành chỉ cung cấp duy nhất một mật khẩu cho máy tính để đảm bảo an toàn. Điều này không đủ khả năng để cung cấp quyền cho các đối tượng người dùng khác nhau để họ chỉ được phép thực hiện trên các vùng dữ liệu nào đó của cơ sở dữ liệu.
DBMS là tập hợp các phần mềm được thiết kế để có thể thực hiện các công việc nói trên một cách dễ dàng. Bằng việc lưu trữ dữ liệu trên DBMS thay vì việc lưu trữ vào các file riêng rẽ, chúng ta có thể sử dụng các chức năng của DBMS để quản lý dữ liệu dễ dàng. Với dung lượng dữ liệu khổng lồ và số lượng rất lớn những người sử dụng đồng thời, những tính năng mà DBMS hỗ trợ đã trở nên vô cùng quan trọng và không thể thiếu.
Sử dụng DBMS để quản lý dữ liệu có rất nhiều lợi ích:
- Độc lập dữ liệu: Những chương trình ứng dụng nên được độc lập tối đa có thể đối với việc biểu diễn và lưu trữ dữ liệu. DBMS có thể cung cấp các khung nhìn trừu tượng trên dữ liệu cách ly với lưu trữ vật lý của dữ liệu.
- Truy cập dữ liệu hiệu quả: Hàng loạt những tính năng của DBMS có thể giúp lưu trữ và truy cập cơ sở dữ liệu hiệu quả. Những tính năng này đặc biệt quan trọng nếu dữ liệu được lưu trữ trên các thiết bị lưu trữ ngoài.
- Toàn vẹn và an toàn dữ liệu: Nếu dữ liệu luôn luôn được truy cập thông qua DBMS, thì DBMS có thể thiết đặt các ràng buộc toàn vẹn trên dữ liệu. Ví dụ, trước khi thêm thông tin về lương của một nhân viên, DBMS có thể kiểm tra số lương đó không vượt quá số tiền hiện có của phòng. Hoặc, DBMS có thể thiết đặt các quyền truy cập để giới hạn các đối tượng người dùng khác nhau đối với các phần bên trong cơ sở dữ liệu.
- Quản trị dữ liệu: Khi một vài người dùng chia sẻ dữ liệu, người quản trị hệ thống có thể đưa ra những đề xuất mang lại hiệu quả đáng kể. Những chuyên gia có kinh nghiệm hiểu rõ dữ liệu đang được quản lý như thế nào và những nhóm người sử dụng nào có thể sử dụng từng phần trong cơ sở dữ liệu, từ đó họ có thể đưa ra được cách thức tổ chức dữ liệu để giảm được tối đa dư thừa và truy cập trở nên hiệu quả.
- Truy cập đồng thời và khôi phục dữ liệu: DBMS lập lịch cho việc truy cập đồng thời đến dữ liệu để người sử dụng có cảm giác rằng chỉ có một người đang sử dụng dữ liệu trong một khoảng thời gian. Thêm vào đó, DBMS bảo vệ người sử dụng tránh những ảnh hưởng khi hệ thống gặp sự cố.
- Giảm thời gian phát triển ứng dụng: DBMS hỗ trợ rất nhiều các tính năng quan trọng được sử dụng trong rất nhiều các ứng dụng truy cập tới dữ liệu được lưu trữ trong DBMS. Thông qua lược đồ mức cao (high-level interface), những ứng dụng được phát triển nhanh chóng và dễ dàng hơn vì rất nhiều những công việc đã được DBMS hỗ trợ thay vì bạn phải xây dựng trong chương trình ứng dụng.
Với những lợi ích nêu trên thì có lý do nào để chúng ta không sử dụng DBMS? DBMS là sự kết hợp của những gói phần mềm phức tạp, được tối ưu cho những kiểu công việc có sự kế thừa, chồng lên nhau, và nó không thích hợp với những ứng dụng quá hẹp. Ví dụ những ứng dụng có ít ràng buộc hoặc chỉ có một vài các phép toán phải thực hiện. Lý do khác để không sử dụng DBMS là với những ứng dụng không cần có ngôn ngữ truy vấn hỗ trợ. Trong trường hợp này, lưu trữ dữ liệu một cách trừu tượng hóa như trong DBMS là không phù hợp và nó không tận dụng được những tính năng của DBMS như: thực hiện truy vấn phức tạp, bảo mật, điều khiển tương tranh, tự động khôi phục khi có sự cố.
Người sử dụng của DBMS chỉ tập trung vào biểu diễn thế giới thực và các ràng buộc trong đó. Ví dụ, có các đối tượng Sinh viên, Khoa, và các Khóa học khi cần mô tả về trường đại học, và dữ liệu trong cơ sở dữ liệu về trường đại học này được biểu diễn dưới dạng thực thể và các mối quan hệ giữa các thực thể.
Mô hình dữ liệu là tập hợp những cấu trúc biểu diễn dữ liệu ở mức cao, nó đã ẩn đi phần chi tiết dữ liệu được lưu trữ ở mức thấp như thế nào. DBMS cho phép người sử dụng được định nghĩa dữ liệu lưu trữ trong các phần của mô hình dữ liệu. Hầu hết các DBMS hiện nay dựa trên mô hình dữ liệu quan hệ- mô hình được tập trung trình bày trong cuốn sách này.
Mô hình dữ liệu của DBMS ẩn đi rất nhiều các chi tiết về cách thức lưu trữ bên trong của hệ thống để nó trở nên dễ dàng hơn đối với người sử dụng. Mô hình dữ liệu mức ngữ nghĩa là mô hình dữ liệu mức cao, trừu tượng, dễ dàng để người sử dụng tiếp cận và biểu diễn dữ liệu của ứng dụng.
Note: Ví dụ một thiết kế không tốt: Lược đồ quan hệ của thực thể Students sau đây chứng tỏ một thiết kế không tốt; bạn không nên tạo ra trường age, vì giá trị của trường này thay đổi theo thời gian. Tốt hơn, thay vì trường age sẽ là trường DOB (Date of Birth); bởi vì trường luôn có giá trị cố định và trường age cũng có thể suy ra từ trường này. Trong những ví dụ của cuốn sách này, ta vẫn sử dụng trường age để chúng ta dễ đọc.
Mô hình dữ liệu mức ngữ nghĩa được sử dụng rộng rãi nhất ngày nay là mô hình quan hệ -thực thể (còn gọi là mô hình ER), cho phép ta biểu diễn thế giới thực dưới dạng các thực thể và mối liên kết giữa các thực thể đó. Chúng ta sẽ nghiên cứu sâu hơn về mô hình này trong chương 2.
Mô hình quan hệ
Trong phần này chúng ta sẽ tìm hiểu tóm tắt về mô hình quan hệ. Cấu trúc để biểu diễn dữ liệu trong mô hình này ở dạng quan hệ, có thể hiểu là tập hợp của các bản ghi.
Biểu diễn cấu trúc trong mô hình dữ liệu được gọi là lược đồ. Trong mô hình quan hệ, lược đồ của một quan hệ được xác định bằng tên của lược đồ và tên của các trường - còn gọi là các cột hoặc các thuộc tính. Ví dụ, thông tin về sinh viên trong cơ sở dữ liệu của trường đại học có thể được lưu trữ trong quan hệ, được biểu diễn ở dạng lược đồ như sau:
Students(sid: string, name: string, login: string, age: integer, gpa: real)
Lược đồ trên chỉ ra rằng mỗi một bản ghi trong quan hệ Students có năm trường, cùng với tên của trường và kiểu dữ liệu của trường đó.
Một thể hiện dữ liệu của quan hệ Students được chỉ ra trong Hình 1.
Một thể hiện của quan hệ Students
Mỗi một dòng trong quan hệ Students là một bản ghi, biểu diễn chi tiết về một sinh viên cụ thể. Biểu diễn này không phải là toàn bộ thông tin về một đối tượng nào đó- ví dụ, thông tin về chiều cao của sinh viên không được chỉ ra vì nó không quan trọng trong cơ sở dữ liệu của một trường đại học. Mỗi lược đồ chỉ ra cấu trúc của quan hệ, vì thế nó có thể được xem như một khuôn dạng để biểu diễn quan hệ.
Chúng ta có thể xác định các ràng buộc toàn vẹn trên thông tin về các sinh viên, đó là những điều kiện mà các bản ghi trong quan hệ phải tuân theo. Ví dụ, chúng ta có thể xác định mỗi sinh viên phải có một sid duy nhất. Quan sát thấy rằng, chúng ta không thể biểu diễn những ràng buộc này thông qua lược đồ Students. Vì thế, chúng ta phải chỉ ra các ràng buộc trên từng trường dữ liệu khi biểu diễn dữ liệu thông qua DBMS. Việc chỉ ra các ràng buộc về toàn vẹn dữ liệu rất quan trọng trong khi xây dựng mô hình dữ liệu.
Những mô hình dữ liệu
- 1 Khái niệm và đặc điểm tài sản cố định hữu hình
- 2 Vai trò của FDI đối với phát triển kinh tế
- 3 Tản mạn về văn hoá rượu
- 4 biến điệu băng cạnh sót ( vestigial sideband ) VSB.
- 5 Yết tỉ giá gián tiếp
- 6 Một số công cụ quảng cáo
- 7 Kẹo cao su
- 8 Lớp phủ (địa chất)
- 9 Lạc Long Quân
- 10 Vấn đề về bảo mật trên mạng Internet