Cơ sở dữ liệu gần như là một thành phần không thể thiếu trong bất cứ ứng dụng công nghệ thông tin nào hiện nay, từ các ứng dụng kế toán, tài chính, hướng dẫn nấu ăn, thể hình, tìm kiếm cho đến ngay chính trang web bạn đang đọc này cũng cần đến cơ sở dữ liệu. Vậy cơ sở dữ liệu là gì? và tại sao nó lại đã và đang đóng những vai trò cực kỳ quan trọng như vậy trong công nghệ thông tin? Bài viết này sẽ trả lời cho những câu hỏi đó. Bài viết nằm trong Series bài viết “Cơ sở dữ liệu” của thienmaonline.vn. Bạn có thể tham khảo nội dung của toàn bộ Series tại đây.

Bạn đang xem: Cơ sở dữ liệu là gì

*

Cơ sở dữ liệu là gì?

Trước đây, khi muốn lưu trữ dữ liệu thông thường chúng ta lưu trữ nó dưới dạng một hệ thống tệp tin. Chẳng hạn trong một công ty, bộ phận Văn phòng có thể soạn thảo các văn bản báo cáo bằng Microsoft Word, Phòng kế toán lại sử dụng Exel để tính lương cho nhân viên với danh sách nhân viên và mức lương nhận về từ phòng nhân sự, phòng nhân sự lại lưu trữ thông tin chi tiết về hồ sơ của nhân viên như: Họ tên, Tuổi, Giới tính, Ngày sinh, Ngày tuyển dụng, Hoàn cảnh gia đình,Trình độ đào tạo, Các chứng chỉ chuyên môn nghiệp vụ, Mức lương, Mức thưởng, Mức trừ…Dữ liệu của phòng vật tư lại bao gồm các thông tin về mua sắm trang thiết bị… Việc quản lý khi đó đối với từng phòng là khá dễ dàng. Tuy nhiên, do thông tin được tổ chức ở mỗi phòng ban mỗi khác, cũng như phần mềm công cụ để triển khai mỗi nơi cũng rất khác nhau nên sự phối hợp tổ chức và khai thác ở các phòng ban là khó khăn. Thông tin ở phòng ban này không sử dụng được cho phòng ban khác. Cùng một thông tin được nhập vào máy tại nhiều nơi khác nhau gây ra lãng phí công sức nhập tin và không gian lưu trữ trên các vật mang tin. Sự trùng lắp thông tin có thể dẫn đến tình trạng không nhất quán dữ liệu. Chẳng hạn, nhân viên Trần Văn Tuấn được ghi đầy đủ ở phòng Nhân sự, nhưng tại phòng Kế toán chỉ ghi tắt là Tran v Tuan. Thông tin được tổ chức ở nhiều nơi nên việc cập nhật cũng dễ làm mất tính nhất quán dữ liệu. Một nhân viên của công ty có thay đổi về hoàn cảnh gia đình (mới cưới vợ/ lấy chồng, sinh thêm con…) có thể được cập nhật ngay tại phòng ban đó nhưng sau một thời gian mới được cập nhật tại hệ thống của các phòng ban liên quan khác. Do hệ thống được tổ chức thành các hệ thống file riêng lẻ nên thiếu sự chia sẻ thông tin giữa các nơi. Việc kết nối các hệ thống này hay việc nâng cấp ứng dụng sẽ là rất khó khăn. Hay đặc biệt là khi muốn tổng hợp dữ liệu để cho thấy tình hình hoạt động của toàn bộ công ty sẽ tương đối khó khăn, đặc biệt khi có nhân sự biến động, các phòng ban phải gửi lại toàn bộ dữ liệu và đồng bộ phiên bản để có thể xử lý được. Để giải quyết vấn đề này, khái niệm cơ sở dữ liệu ra đời.

*

Cơ sở dữ liệu là một hệ thống các dữ liệu có cấu trúc được lưu trữ trên các thiết bị lưu trữ thông tin thứ cấp (như băng từ,đĩa từ…) để có thể thỏa mãn yêu cầu khai thác thông tin đồng thời của nhiều người sử dụng hay nhiều chương trình ứng dụng với nhiều mục đích khác nhau. CSDL phải là một tập hợp các thông tin mang tính hệ thống chứ không phải là các thông tin rời rạc, không có mối quan hệ với nhau. Các thông tin này phải có cấu trúc và tập hợp các thông tin này phải có khả năng đáp ứng các nhu cầu khai thác của nhiều người sử dụng một cách đồng thời. Đây là các đặc trưng của CSDL.

Nói một cách đơn giản thì cơ sở dữ liệu là một hệ thống có cấu trúc để lưu trữ dữ liệu và cho phép xác định và thực hiện các quy tắc sử dụng dữ liệu đó. Các quy tắc sử dụng dữ liệu này tùy thuộc vào thiết kế của cơ sở dữ liệu và ứng dụng và được xác định bởi người thiết kế nó và có thể được thay đổi dựa trên nhu cầu.

Cơ sở dữ liệu đảm bảo tính bảo mật, tính toàn vẹn của dữ liệu, khả năng truy cập dữ liệu nhanh và đáng tin cậy, tính mạnh mẽ; phục vụ nhiều người cùng lúc và thậm chí khi có các sự cố mà vẫn không làm hỏng dữ liệu. Những gì chúng ta cần làm là hiểu cấu trúc của cơ sở dữ liệu và xác định các quy tắc cho dữ liệu.

Lý do chúng ta cần cơ sở dữ liệu là gì?

Bạn muốn xây dựng một ứng dụng quản lý thông tin khách hàng, quản lý kho,…Bạn có một tập dữ liệu và bạn muốn lưu trữ các dữ liệu này. Những dữ liệu này có thể là bất cứ thứ gì như thông tin về khách hàng, sản phẩm, nhân viên, đơn đặt hàng,…Dữ liệu có thể là tồn tại ở bất kỳ định dạng nào như văn bản, số, ngày tháng, tệp tài liệu, hình ảnh, âm thanh hoặc video. Lấy một ví dụ, giả sử bạn có rất nhiều dữ liệu về khách hàng trong công ty của mình, điều đầu tiên bạn nghĩ đến là mở một phần mềm bảng tính (SpreadSheet). Sau đó, bạn bắt đầu ghi bất kỳ dữ liệu nào bạn muốn lưu trữ. Nó có thể là tên khách hàng, ID (định danh khách hàng), địa chỉ và các thông tin khác (chúng ta chưa quan tâm đến loại dữ liệu nào ở đây). Bạn có thể thêm, xóa bỏ hoặc thay đổi bất kỳ thông tin nào bạn muốn.

*

Bây giờ, chúng ta đã có một bảng tính lưu trữ các dữ liệu theo ý của mình. Có vô khối dữ liệu cần được xử lý và lưu trữ. Việc lưu trữ dữ liệu có thể thực hiện một cách cực kỳ đơn giản. Bạn có thể lưu nó dưới dạng file văn bản, file nhị phân, file hình ảnh,…Vấn đề ở đây không phải là chỉ lưu dữ liệu vào và để đó. Vấn đề là cần làm gì với cơ sở dữ liệu để nó đảm bảo nhiều khía cạnh khác không chỉ mỗi là lưu trữ. Để sử dụng lại được những dữ liệu này một cách hiệu quả không phải là một điều đơn giản. Bạn có thể dễ dàng đọc được file văn bản, file nhị phân, nhưng nó sẽ không cho bạn biết được những mối tương quan giữa dữ liệu, không cho phép bạn tìm kiếm hay tạo các truy vấn dữ liệu đúng đắn và hiệu quả.

Điều gì sẽ xảy ra nếu có nhiều dữ liệu, có thể là 10.000 khách hàng hoặc thậm chí lớn hơn, “Liệu ta có thể cứ cuộn thanh xuống để xem từng người một?!”, “Điều gì sẽ xảy ra nếu vấn đề bảo mật là điều cần được chú ý để tránh làm lộ thông tin khách hàng?”. Bạn không thể gửi toàn bộ tệp tin exel đó cho tất cả mọi người. Bạn cần bảo vệ nó và hạn chế số lượng dòng hoặc cột được hiển thị…., “Điều gì sẽ xảy ra nếu vô tình đưa ra thông tin thừa không có ý nghĩa”. Có rất nhiều vấn đề ở đây! Và hầu hết những điều đó có thể được giải quyết thông qua khái niệm cơ sở dữ liệu? Vậy khi nào chúng ta cần dùng một cơ sở dữ liệu?. Chúng ta cần cơ sở dữ liệu khi:

Khối lượng dữ liệu lưu trữ lớn: Khi bạn có thể có hàng nghìn hoặc hàng triệu thông tin cần lưu trữ.Đòi hỏi độ chính xác cao: Khi bạn muốn lọc và lưu trữ dữ liệu để loại bỏ những dữ liệu bất thường, không chính xác.Yêu cầu an toàn và bảo mật dữ liệu: Nếu dữ liệu là nhạy cảm và cần hạn chế quyền truy cập vào dữ liệu thì chỉ đơn giản là không được chia sẻ với ai. Tuy nhiên trong nhiều trường hợp, chúng ta phải sử dụng và hiển thị thông tin cho những người có thẩm quyền và giám sát được sự thay đổi thông tin, cần biết ai đã thực hiện thay đổi dữ liệu ở một thời điểm nào đó.Loại bỏ sự dư thừa dữ liệu: Nếu dữ liệu dư thừa sẽ dẫn đến xung đột, vậy nên chỉ cần có một dữ liệu duy nhất không trùng lặp.Đảm bảo hoạt động không gián đoạn, mất mát thông tin: “Điều gì sẽ xảy ra nếu ta bị ngắt kết nối hoặc gặp sự cố và bị mất dữ liệu của mình?”. Việc này là không thể chấp nhận được vì mất dữ liệu quan trọng như đơn đặt hàng của khách hàng, đặt vé máy bay, hay thông tin tài khoản ngân hàng … Cơ sở dữ liệu sẽ đảm bảo tính sẵn sàng cho các kết nối tránh mất mát dữ liệu hoặc lỗi khi mở tệp…Đồng bộ hóa dữ liệu và đảm bảo tính nhất quán cho dữ liệu: Làm thế nào để xử lý khi có nhiều người cùng ghi đè lên cùng một dữ liệu cùng lúc. Chẳng hạn khi hai người A và B cùng ghi vào cùng một ô,… có thể dẫn tới việc mọi người thay đổi các thông tin của nhau. Cơ sở dữ liệu sẽ giải quyết vấn đề này.

Nếu ứng dụng của bạn yêu cầu xử lý dữ liệu với ít nhất là một trong các yêu cầu nêu trên, khi đó bạn cần phải có một cơ sở dữ liệu. Cơ sở dữ liệu giúp:

Giảm sự trùng lặp thông tin xuống mức thấp nhất và do đó bảo đảm được tính nhất quán và toàn vẹn dữ liệu.Đảm bảo dữ liệu có thể được truy xuất theo nhiều cách khác nhau.Khả năng chia sẻ thông tin cho nhiều người sử dụng và nhiều ứng dụng khác nhau.

Xem thêm: Tải Game Hiệp Sĩ Nexo, Lego® Nexo Knights™: Merlok 2

Tuy nhiên, để đạt được các ưu điểm trên,CSDL đặt ra những vấn đề cần phải giải quyết. Đó là:

Tính bảo mật và quyền khai thác thông tin của người sử dụng: Do có nhiều người được phép khai thác CSDL một cách đồng thời nên cần phải có một cơ chế bảo mật và phân quyền hạn khai thác CSDL.Tranh chấp dữ liệu: Nhiều người được phép truy nhập vào cùng một tài nguyên dữ liệu (Data Source) của CSDL với những mục đích khác nhau: Xem, thêm, sửa hoặc xóa dữ liệu. Do đó, cần phải có một cơ chế ưu tiên truy nhập dữ liệu cũng như cơ chế giải quyết tình trạng khóa chết (Dead Lock) trong quá trình sử dụng dữ liệu. Cơ chế ưu tiên có thể được thực hiện bằng việc cấp quyền (hay mức độ) ưu tiên cho từng người khai thác – người nào được cấp quyền hạn ưu tiên cao hơn thì được ưu tiên truy nhập dữ liệu trước, ví dụ: quyền đọc được ưu tiên trước quyền ghi dữ liệu; dựa trên thời điểm truy nhập – ai có yêu cầu truy xuất trước thì có quyền truy nhập dữ liệu trước; hoặc theo cơ chế lập lịch truy xuất hay các cơ chế khóa…Đảm bảo dữ liệu khi có sự cố: Việc quản lý dữ liệu tập trung có thể làm tăng khả năng mất mát hoặc sai lệch thông tin khi có sự cố như mất điện đột xuất, một phần đĩa lưu trữ CSDL bị hư hỏng …Một số hệ điều hành mạng có cung cấp dịch vụ sao lưu (cơ chế sử dụng đĩa cứng dự phòng – RAID), tự động kiểm tra và khắc phục lỗi khi có sự cố, tuy nhiên, bên cạnh dịch vụ của hệ điều hành, để đảm bảo CSDL luôn luôn ổn định, một CSDL nhất thiết phải có một cơ chế khôi phục dữ liệu khi các sự cố bất ngờ xảy ra.

Để giải quyết tốt tất cả các vấn đề đặt ra cho một CSDL như đã nêu trên cần có một hệ thống các phần mềm chuyên dụng. Hệ thống các phần mềm đó được gọi là hệ quản trị CSDL (tiếng Anh là DataBase Management System – DBMS).

*

Hệ quản trị cơ sở dữ liệu là gì?

Hệ quản lý cơ sở dữ liệu (Database Management System – DBMS) là phần mềm tương tác với người dùng cuối, ứng dụng và chính cơ sở dữ liệu để thu thập và phân tích dữ liệu. Phần mềm DBMS bao gồm các tiện ích cốt lõi được cung cấp để quản trị cơ sở dữ liệu. Đó là các công cụ hỗ trợ tích cực cho các nhà phân tích & thiết kế CSDL và những người khai thác CSDL.

Cho đến nay có khá nhiều hệ quản trị CSDL mạnh được đưa ra thị trường như: Visual Fox Pro, MicroSoft Access, SQL-Server, DB2, Sybase, Paradox, Informix, Oracle…với các chất lượng khác nhau. Chúng ta thường nhầm cơ sở dữ liệu của mình là Oracle, MySQL, SQL Server, MongoDB… Tuy nhiên, chúng không phải là cơ sở dữ liệu, chúng là hệ thống quản lý cơ sở dữ liệu (DBMS) hay gọi tắt là các hệ quản trị cơ sở dữ liệu.

Giống như bạn có một bãi đỗ xe và người trông xe chính là DBMS. DBMS là phần mềm sẽ được cài đặt trên máy tính cá nhân của bạn hoặc trên một máy chủ, sau đó bạn sẽ sử dụng nó để quản lý một hoặc nhiều cơ sở dữ liệu. Giống như bạn giao việc cho người trông xe sẽ quản lý xe, để xe như nào cho hợp lý. Cơ sở dữ liệu gồm dữ liệu của bạn và các quy tắc về dữ liệu đó, trong khi DBMS là chương trình quản lý dữ liệu của bạn và nó thực thi các quy tắc bạn đã chỉ định trên dữ liệu của mình. Ví dụ, các quy tắc có thể là kiểu dữ liệu, như số nguyên hoặc chuỗi hoặc mối quan hệ giữa chúng.

Trong thực tế, việc có nhiều cơ sở dữ liệu là hoàn toàn bình thường. Cơ sở dữ liệu xử lý đơn đặt hàng và thông tin khách hàng của bạn là hoàn toàn độc lập với cơ sở dữ liệu xử lý thông tin về nhân sự các phòng ban của bạn. Và trong nhiều tổ chức, bạn không chỉ có nhiều cơ sở dữ liệu mà còn có nhiều DBMS. Đôi khi đó là bởi vì một DBMS tốt hơn ở một mặt này và yếu mặt khác. Không gì là hoàn hảo!

Mỗi hệ quản trị CSDL đều được cài đặt dựa trên một mô hình dữ liệu cụ thể mà nó hỗ trợ. Hầu hết các hệ quản trị CSDL hiện nay đều dựa trên mô hình quan hệ. Cơ sở dữ liệu quan hệ đã trở nên thống trị từ những năm 1980. Những dữ liệu trong mô hình này được mô tả dưới dạng bảng gồm các hàng và các cột và phần lớn sử dụng SQL (Structured Query Language – ngôn ngữ truy vấn cấu trúc) để ghi và truy vấn dữ liệu. Vào những năm 2000, các cơ sở dữ liệu phi quan hệ đã trở nên phổ biến, được gọi là NoSQL vì chúng sử dụng các ngôn ngữ truy vấn khác.

Ngoài ra có nhiều hệ quản trị cơ sở dữ liệu khác nhau và được phân loại theo mô hình cấu trúc tổ chức dữ liệu hoặc của dữ liệu như:

Hệ quản trị cơ sở dữ liệu quan hệ (Relational Database Management Systems)Hệ thống cơ sở dữ liệu phân cấp (Hierarchical Database Systems)Hệ thống cơ sở dữ liệu mạng (Network Database Systems)Hệ thống cơ sở dữ liệu hướng đối tượng (Object-Oriented Database Systems)Hệ thống cơ sở dữ liệu NoSQL (NoSQL Database Systems)

Trong Series bài viết này, chúng ta sẽ tập trung vào hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) bởi đây là loại được sử dụng phổ biến nhất trong các ứng dụng hiện nay. Tuy nhiên, về cơ bản các nguyên tắc nền tảng lý thuyết được trình bày trong series này cũng có thể sử dụng được trên tất cả các DBMS khác.

Xem thêm: 083 Là Mạng Gì – đầu Số Sim 083 Mang ý Nghĩa Gì

Bây giờ chắc hẳn, bạn đã hiểu tại sao chúng ta cần cơ sở dữ liệu, cơ sở dữ liệu là gì và sự khác biệt giữa cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu. Điều này sẽ là nền tảng đầu tiên để chúng ta có thể hiểu các nguyên tắc cơ bản về cơ sở dữ liệu trong các bài viết tiếp theo.

Chuyên mục: Hỏi Đáp