Cơ sở dữ liệu

Cơ sở dữ liệu (Database) là một tập hợp các dữ liệu có tổ chức, thường được lưu trữ và truy cập điện tử từ hệ thống máy tính. Khi cơ sở dữ liệu phức tạp hơn, chúng thường được phát triển bằng cách sử dụng các kỹ thuật thiết kế và mô hình hóa chính thức.
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. Tổng cộng của cơ sở dữ liệu, DBMS và các ứng dụng liên quan có thể được gọi là "hệ thống cơ sở dữ liệu". Thông thường thuật ngữ "cơ sở dữ liệu" cũng được sử dụng để nói đến bất kỳ DBMS, hệ thống cơ sở dữ liệu hoặc ứng dụng nào được liên kết với cơ sở dữ liệu.
Các nhà khoa học máy tính có thể phân loại các hệ thống quản lý cơ sở dữ liệu theo các mô hình cơ sở dữ liệu mà họ hỗ trợ. Cơ sở dữ liệu quan hệ đã trở nên thống trị trong những năm 1980. Những dữ liệu mô hình này dưới dạng các hàng và cột trong một loạt các bảng 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.

Lịch sử

Các kích thước, khả năng và hiệu suất của cơ sở dữ liệu và DBMS tương ứng của chúng đã tăng theo thứ tự độ lớn. Những sự gia tăng hiệu suất này được kích hoạt bởi sự tiến bộ công nghệ trong các lĩnh vực của bộ xử lý, bộ nhớ máy tính, lưu trữ máy tính và mạng máy tính. Sự phát triển của công nghệ cơ sở dữ liệu có thể được chia thành ba thời đại dựa trên mô hình hoặc cấu trúc dữ liệu: điều hướng,  SQL / quan hệ và hậu quan hệ.
Hai mô hình dữ liệu điều hướng ban đầu chính là mô hình phân cấp và mô hình CODASYL (mô hình mạng)
Mô hình quan hệ, lần đầu tiên được Edgar F. Codd đề xuất vào năm 1970, đã thoát ly khỏi truyền thống này bằng cách nhấn mạnh rằng các ứng dụng nên tìm kiếm dữ liệu theo nội dung, thay vì theo các liên kết. Mô hình quan hệ sử dụng các tập hợp các bảng kiểu sổ cái, mỗi bảng được sử dụng cho một loại thực thể khác nhau. Chỉ vào giữa những năm 1980, phần cứng máy tính đã trở nên đủ mạnh để cho phép triển khai rộng rãi các hệ thống quan hệ (DBMS cộng với các ứng dụng). Tuy nhiên, vào đầu những năm 1990, các hệ thống quan hệ chiếm ưu thế trong tất cả các ứng dụng xử lý dữ liệu quy mô lớn và Tính đến  năm 2018 chúng vẫn chiếm ưu thế: IBM DB2, Oracle, MySQL và Microsoft SQL Server là DBMS được tìm kiếm nhiều nhất. Ngôn ngữ cơ sở dữ liệu thống trị, SQL được tiêu chuẩn hóa cho mô hình quan hệ, đã ảnh hưởng đến các ngôn ngữ cơ sở dữ liệu cho các mô hình dữ liệu khác. Cơ sở dữ liệu đối tượng được phát triển vào những năm 1980 để khắc phục sự bất tiện của sự không phù hợp trở kháng quan hệ đối tượng, dẫn đến việc đặt ra thuật ngữ "hậu quan hệ" và cũng là sự phát triển của cơ sở dữ liệu quan hệ đối tượng lai.
Thế hệ cơ sở dữ liệu hậu quan hệ tiếp theo vào cuối những năm 2000 được gọi là cơ sở dữ liệu NoQuery, giới thiệu các kho lưu trữ khóa giá trị nhanh và cơ sở dữ liệu định hướng tài liệu. Một "thế hệ tiếp theo" cạnh tranh được gọi là cơ sở dữ liệu NewQuery đã thử triển khai các mô hình mới giữ lại mô hình quan hệ / SQL trong khi hướng đến việc phù hợp với hiệu suất cao của NoQuery so với các DBMS quan hệ có sẵn trên thị trường.

Những năm 1970, DBMS quan hệ

Edgar Codd làm việc tại IBM ở San Jose, California, tại một trong những văn phòng của họ, chủ yếu liên quan đến việc phát triển các hệ thống đĩa cứng. Ông không hài lòng với mô hình điều hướng của phương pháp CODASYL, đáng chú ý là thiếu cơ sở "tìm kiếm". Năm 1970, ông đã viết một số bài báo phác thảo một cách tiếp cận mới để xây dựng cơ sở dữ liệu mà cuối cùng đã đạt đến đỉnh cao trong bài A Relational Model of Data for Large Shared Data Banks.
Trong bài báo này, ông đã mô tả một hệ thống mới để lưu trữ và làm việc với các cơ sở dữ liệu lớn. Thay vì các bản ghi được lưu trữ trong một số loại danh sách các bản ghi dạng tự do được liên kết như trong CODASYL, ý tưởng của Codd là sử dụng " bảng " các bản ghi có độ dài cố định, với mỗi bảng được sử dụng cho một loại thực thể khác nhau. Một hệ thống danh sách liên kết sẽ rất kém hiệu quả khi lưu trữ cơ sở dữ liệu "thưa thớt" trong đó một số dữ liệu cho bất kỳ một bản ghi nào có thể bị bỏ trống. Mô hình quan hệ đã giải quyết điều này bằng cách chia dữ liệu thành một loạt các bảng (hoặc quan hệ) được chuẩn hóa, với các phần tử tùy chọn được chuyển ra khỏi bảng chính đến nơi chúng chỉ chiếm phòng nếu cần. Dữ liệu có thể được chèn, xóa và chỉnh sửa tự do trong các bảng này, với DBMS thực hiện bất kỳ bảo trì nào cần thiết để hiển thị chế độ xem bảng cho ứng dụng / người dùng. 
Mô hình quan hệ cũng cho phép nội dung của cơ sở dữ liệu phát triển mà không cần viết lại liên kết và con trỏ. Phần quan hệ xuất phát từ các thực thể tham chiếu các thực thể khác trong mối quan hệ được gọi là mối quan hệ một-nhiều, như mô hình phân cấp truyền thống và mối quan hệ nhiều-nhiều, như mô hình điều hướng (mạng). Do đó, một mô hình quan hệ có thể biểu thị cả mô hình phân cấp và điều hướng, cũng như mô hình bảng gốc của nó, cho phép mô hình thuần túy hoặc kết hợp theo ba mô hình này, như ứng dụng yêu cầu.
Ví dụ, việc sử dụng phổ biến hệ thống cơ sở dữ liệu là theo dõi thông tin về người dùng, tên, thông tin đăng nhập, địa chỉ và số điện thoại khác nhau. Theo cách tiếp cận điều hướng, tất cả các dữ liệu này sẽ được đặt trong một bản ghi và các mục không sử dụng sẽ không được đặt trong cơ sở dữ liệu. Theo cách tiếp cận quan hệ, dữ liệu sẽ được chuẩn hóa thành bảng người dùng, bảng địa chỉ và bảng số điện thoại (ví dụ). Bản ghi sẽ được tạo trong các bảng tùy chọn này chỉ khi địa chỉ hoặc số điện thoại thực sự được cung cấp.
Liên kết thông tin lại với nhau là chìa khóa cho hệ thống này. Trong mô hình quan hệ, một số thông tin được sử dụng làm "khóa", xác định duy nhất một bản ghi cụ thể. Khi thông tin được thu thập về người dùng, thông tin được lưu trữ trong các bảng tùy chọn sẽ được tìm thấy bằng cách tìm kiếm khóa này. Chẳng hạn, nếu tên đăng nhập của người dùng là duy nhất, địa chỉ và số điện thoại của người dùng đó sẽ được ghi lại với tên đăng nhập làm khóa. Việc "liên kết lại" các dữ liệu liên quan trở lại thành một bộ sưu tập đơn giản là điều mà các ngôn ngữ máy tính truyền thống không được thiết kế cho.
Giống như cách tiếp cận điều hướng sẽ yêu cầu các chương trình lặp để thu thập các bản ghi, phương pháp quan hệ sẽ yêu cầu các vòng lặp để thu thập thông tin về bất kỳ một bản ghi nào. Các đề xuất của Codd là một ngôn ngữ được định hướng theo tập hợp, sau này sẽ sinh ra SQL phổ biến. Sử dụng một nhánh toán học được gọi là tính toán tuple, ông đã chứng minh rằng một hệ thống như vậy có thể hỗ trợ tất cả các hoạt động của cơ sở dữ liệu thông thường (chèn, cập nhật, v.v.) cũng như cung cấp một hệ thống đơn giản để tìm và trả về các tập hợp dữ liệu trong một thao tác.
Bài báo của Codd đã được hai người tại Berkeley, Eugene Wong và Michael Stonebraker chú ý. Họ đã bắt đầu một dự án được gọi là INGRES bằng cách sử dụng nguồn vốn đã được phân bổ cho một dự án cơ sở dữ liệu địa lý và các lập trình viên sinh viên để tạo mã. Bắt đầu từ năm 1973, INGRES đã cung cấp các sản phẩm thử nghiệm đầu tiên thường sẵn sàng để sử dụng rộng rãi vào năm 1979. INGRES tương tự như System R theo một số cách, bao gồm cả việc sử dụng "ngôn ngữ" để truy cập dữ liệu, được gọi là QUEL. Theo thời gian, INGRES chuyển sang tiêu chuẩn SQL mới nổi.
Bản thân IBM đã thực hiện một thử nghiệm thực hiện mô hình quan hệ, PRTV và một mô hình sản xuất, Business System 12, cả hai đều đã ngừng hoạt động. Honeywell đã viết MRDS cho Multics, và bây giờ có hai triển khai mới: Alphora Dataphor và Rel. Hầu hết các triển khai DBMS khác thường được gọi là quan hệ thực sự là các DBMS SQL.
Năm 1970, Đại học Michigan đã bắt đầu phát triển Hệ thống quản lý thông tin MICRO dựa trên mô hình Dữ liệu lý thuyết tập hợp của DL Childs. MICRO đã được sử dụng để quản lý các tập dữ liệu rất lớn bởi Bộ Lao động Mỹ, Cục Bảo vệ Môi trường Mỹ, và các nhà nghiên cứu từ Đại học Alberta, trường Đại học Michigan, và trường Đại học Wayne State. Nó chạy trên các máy tính lớn của IBM sử dụng Hệ thống đầu cuối Michigan. Hệ thống vẫn được sử dụng cho đến năm 1998.

Phương pháp tích hợp

Trong những năm 1970 và 1980, các nỗ lực đã được thực hiện để xây dựng các hệ thống cơ sở dữ liệu với phần cứng và phần mềm tích hợp. Triết lý cơ bản là sự tích hợp như vậy sẽ cung cấp hiệu suất cao hơn với chi phí thấp hơn. Ví dụ là IBM System / 38, việc cung cấp Teradata sớm và máy cơ sở dữ liệu Britton Lee, Inc.
Một cách tiếp cận khác để hỗ trợ phần cứng cho quản lý cơ sở dữ liệu là bộ tăng tốc CAFS của ICL, bộ điều khiển đĩa phần cứng với khả năng tìm kiếm được lập trình. Về lâu dài, những nỗ lực này thường không thành công vì các máy cơ sở dữ liệu chuyên dụng không thể theo kịp sự phát triển và tiến bộ nhanh chóng của các máy tính đa năng. Do đó, hầu hết các hệ thống cơ sở dữ liệu hiện nay là các hệ thống phần mềm chạy trên phần cứng đa năng, sử dụng lưu trữ dữ liệu máy tính đa năng. Tuy nhiên, ý tưởng này vẫn được một số công ty như Netezza và Oracle (Exadata) theo đuổi.

Cuối những năm 1970, SQL DBMS

IBM bắt đầu làm việc trên một hệ thống nguyên mẫu dựa trên các khái niệm của Codd là System R vào đầu những năm 1970. Phiên bản đầu tiên đã sẵn sàng vào năm 1974/5 và sau đó bắt đầu hoạt động trên các hệ thống nhiều bảng trong đó dữ liệu có thể được phân tách để tất cả dữ liệu cho một bản ghi (một số trong đó là tùy chọn) không phải được lưu trữ trong một "chunk" lớn. Các phiên bản đa người dùng sau đó đã được khách hàng thử nghiệm vào năm 1978 và 1979, vào thời điểm đó, một ngôn ngữ truy vấn được tiêu chuẩn hóa - SQL  - đã được thêm vào. Các ý tưởng của Codd đã tự thiết lập cả khả thi và vượt trội so với CODASYL, thúc đẩy IBM phát triển một phiên bản sản xuất thực sự của System R, được gọi là SQL/DS, và sau đó là Database 2 (DB2).
Cơ sở dữ liệu Oracle của Larry Ellison (hay đơn giản hơn là Oracle) bắt đầu từ một chuỗi khác, dựa trên các tài liệu của IBM về Hệ thống R. Mặc dù việc triển khai Oracle V1 đã được hoàn thành vào năm 1978, nhưng mãi đến khi Oracle Phiên bản 2 đánh bại IBM trên thị trường vào năm 1979.
Stonoplker tiếp tục áp dụng các bài học từ INGRES để phát triển cơ sở dữ liệu mới, Postgres, hiện được gọi là PostgreQuery. PostgreSQL thường được sử dụng cho các ứng dụng quan trọng toàn cầu (các cơ quan đăng ký tên miền.org và.info sử dụng nó làm kho lưu trữ dữ liệu chính của họ, cũng như nhiều công ty lớn và tổ chức tài chính).
Ở Thụy Điển, bài báo của Codd cũng được đọc và Mimer SQL được phát triển từ giữa những năm 1970 tại Đại học Uppsala. Năm 1984, dự án này được hợp nhất thành một doanh nghiệp độc lập.
Một mô hình dữ liệu khác, mô hình quan hệ thực thể, xuất hiện vào năm 1976 và đã trở nên phổ biến cho thiết kế cơ sở dữ liệu vì nó nhấn mạnh một mô tả quen thuộc hơn so với mô hình quan hệ trước đó. Sau đó, các cấu trúc mối quan hệ thực thể được trang bị thêm như một cấu trúc mô hình dữ liệu cho mô hình quan hệ và sự khác biệt giữa hai cấu trúc đã trở nên không liên quan.

Những năm 1980, trên máy tính để bàn

Những năm 1980 mở ra thời đại của máy tính để bàn. Các máy tính mới trao quyền cho người dùng của họ với các bảng tính như Lotus 1-2-3 và phần mềm cơ sở dữ liệu như dBASE. Sản phẩm dBASE rất nhẹ và dễ dàng cho bất kỳ người dùng máy tính nào hiểu được. C. Wayne Ratliff, người tạo ra dBASE, đã tuyên bố: "dBASE khác với các chương trình như BASIC, C, FORTRAN và COBOL ở chỗ rất nhiều công việc bẩn thỉu đã được thực hiện. Thao tác dữ liệu được thực hiện bởi dBASE thay vì người dùng, vì vậy người dùng có thể tập trung vào những gì anh ta đang làm, thay vì phải làm rối với các chi tiết bẩn của việc mở, đọc và đóng tệp và quản lý phân bổ không gian. "  dBASE là một trong những phần mềm bán chạy hàng đầu trong những năm 1980 và đầu những năm 1990.

Những năm 1990, hướng đối tượng

Những năm 1990, cùng với sự gia tăng trong lập trình hướng đối tượng, đã chứng kiến sự tăng trưởng về cách xử lý dữ liệu trong các cơ sở dữ liệu khác nhau. Các lập trình viên và nhà thiết kế bắt đầu coi dữ liệu trong cơ sở dữ liệu của họ là đối tượng. Điều đó có nghĩa là nếu dữ liệu của một người nằm trong cơ sở dữ liệu, các thuộc tính của người đó, như địa chỉ, số điện thoại và tuổi của họ, giờ đây được coi là thuộc về người đó thay vì dữ liệu không liên quan. Điều này cho phép các mối quan hệ giữa dữ liệu là quan hệ với các đối tượng và thuộc tính của chúng chứ không phải cho các trường riêng lẻ. Thuật ngữ " không khớp trở kháng quan hệ đối tượng " đã mô tả sự bất tiện của việc dịch giữa các đối tượng được lập trình và các bảng cơ sở dữ liệu. Cơ sở dữ liệu đối tượng và cơ sở dữ liệu quan hệ đối tượng cố gắng giải quyết vấn đề này bằng cách cung cấp ngôn ngữ hướng đối tượng (đôi khi là phần mở rộng cho SQL) mà các lập trình viên có thể sử dụng thay thế cho SQL hoàn toàn quan hệ. Về phía lập trình, các thư viện được gọi là ánh xạ quan hệ đối tượng (ORM) cố gắng giải quyết vấn đề tương tự.

Những năm 2000, NoSQL và NewSQL

Cơ sở dữ liệu XML là một loại cơ sở dữ liệu hướng tài liệu có cấu trúc, cho phép truy vấn dựa trên các thuộc tính tài liệu XML. Cơ sở dữ liệu XML chủ yếu được sử dụng trong các ứng dụng mà dữ liệu được xem thuận tiện dưới dạng tập hợp tài liệu, với cấu trúc có thể thay đổi từ rất linh hoạt đến rất cứng nhắc: ví dụ bao gồm các bài báo khoa học, bằng sáng chế, hồ sơ thuế và hồ sơ nhân sự.
Cơ sở dữ liệu NoSQL thường rất nhanh, không yêu cầu lược đồ bảng cố định, tránh các hoạt động tham gia bằng cách lưu trữ dữ liệu không chuẩn hóa và được thiết kế để mở rộng theo chiều ngang.
Trong những năm gần đây, có nhu cầu lớn về cơ sở dữ liệu phân tán ồ ạt với dung sai phân vùng cao, nhưng theo định lý CAP, hệ thống phân tán không thể đồng thời cung cấp sự đảm bảo tính nhất quán, tính sẵn sàng và phân vùng. Một hệ thống phân tán có thể đáp ứng bất kỳ hai trong số các bảo đảm này cùng một lúc, nhưng không phải cả ba. Vì lý do đó, nhiều cơ sở dữ liệu NoSQL đang sử dụng cái được gọi là tính nhất quán cuối cùng để cung cấp cả đảm bảo dung sai phân vùng và tính sẵn sàng với mức độ thống nhất dữ liệu giảm.
NewSQL là một lớp cơ sở dữ liệu quan hệ hiện đại nhằm cung cấp hiệu năng có thể mở rộng tương tự của các hệ thống NoQuery để xử lý khối lượng công việc xử lý giao dịch trực tuyến (đọc-ghi) trong khi vẫn sử dụng SQL và duy trì bảo đảm ACID của hệ thống cơ sở dữ liệu truyền thống.

Trường hợp sử dụng

Cơ sở dữ liệu được sử dụng để hỗ trợ các hoạt động nội bộ của các tổ chức và để củng cố các tương tác trực tuyến với khách hàng và nhà cung cấp (xem phần mềm Doanh nghiệp).
Cơ sở dữ liệu được sử dụng để chứa thông tin quản trị và dữ liệu chuyên ngành hơn, chẳng hạn như dữ liệu kỹ thuật hoặc mô hình kinh tế. Ví dụ bao gồm hệ thống thư viện máy tính, hệ thống đặt chỗ chuyến bay, hệ thống kiểm kê bộ phận máy tính và nhiều hệ thống quản lý nội dung lưu trữ các trang web dưới dạng bộ sưu tập các trang web trong cơ sở dữ liệu.

Ứng dụng

Tương tác bên ngoài với cơ sở dữ liệu sẽ thông qua một chương trình ứng dụng có giao diện với DBMS. Điều này có thể bao gồm từ một công cụ cơ sở dữ liệu cho phép người dùng thực hiện các truy vấn SQL bằng văn bản hoặc bằng đồ họa, đến một trang web tình cờ sử dụng cơ sở dữ liệu để lưu trữ và tìm kiếm thông tin.

Giao diện chương trình ứng dụng

Một lập trình viên sẽ lập trình các tương tác vào cơ sở dữ liệu (đôi khi được gọi là nguồn dữ liệu) thông qua giao diện chương trình ứng dụng (API) hoặc thông qua ngôn ngữ cơ sở dữ liệu. API hoặc ngôn ngữ cụ thể được chọn sẽ cần được DBMS hỗ trợ, có thể gián tiếp thông qua bộ xử lý trước hoặc API bắc cầu. Một số API nhằm mục đích độc lập với cơ sở dữ liệu, ODBC là một ví dụ thường được biết đến. Các API phổ biến khác bao gồm JDBC và ADO.NET.

Lưu trữ

Lưu trữ cơ sở dữ liệu là nơi chứa vật chất hóa vật lý của cơ sở dữ liệu. Nó bao gồm mức độ nội bộ (vật lý) trong kiến trúc cơ sở dữ liệu. Nó cũng chứa tất cả thông tin cần thiết (ví dụ: siêu dữ liệu, "dữ liệu về dữ liệu" và cấu trúc dữ liệu bên trong) để tái cấu trúc mức khái niệm và cấp độ bên ngoài từ cấp độ bên trong khi cần. Đưa dữ liệu vào lưu trữ vĩnh viễn nói chung là trách nhiệm của công cụ cơ sở dữ liệu hay còn gọi là "công cụ lưu trữ". Mặc dù DBMS thường truy cập thông qua hệ điều hành cơ bản (và thường sử dụng các hệ thống tệp của hệ điều hành làm trung gian để bố trí lưu trữ), các thuộc tính lưu trữ và cài đặt cấu hình là cực kỳ quan trọng đối với hoạt động hiệu quả của DBMS và do đó được duy trì chặt chẽ bởi quản trị cơ sở dữ liệu. Một DBMS, trong khi hoạt động, luôn có cơ sở dữ liệu của nó nằm trong một số loại lưu trữ (ví dụ: bộ nhớ và bộ nhớ ngoài). Dữ liệu cơ sở dữ liệu và thông tin cần thiết bổ sung, có thể với số lượng rất lớn, được mã hóa thành các bit. Dữ liệu thường nằm trong bộ lưu trữ trong các cấu trúc trông hoàn toàn khác với cách dữ liệu nhìn ở cấp độ khái niệm và bên ngoài, nhưng theo cách cố gắng tối ưu hóa (tốt nhất có thể) các cấu trúc này khi người dùng và chương trình cũng cần như để tính toán các loại thông tin cần thiết từ dữ liệu (ví dụ: khi truy vấn cơ sở dữ liệu).
Một số DBMS hỗ trợ chỉ định mã hóa ký tự nào được sử dụng để lưu trữ dữ liệu, do đó, nhiều mã hóa có thể được sử dụng trong cùng một cơ sở dữ liệu.
Các cấu trúc lưu trữ cơ sở dữ liệu mức thấp khác nhau được sử dụng bởi công cụ lưu trữ để tuần tự hóa mô hình dữ liệu để nó có thể được ghi vào phương tiện lựa chọn. Các kỹ thuật như lập chỉ mục có thể được sử dụng để cải thiện hiệu suất. Lưu trữ thông thường là theo định hướng hàng, nhưng cũng có cơ sở dữ liệu tương quan và định hướng cột.

Quan điểm cụ thể hóa

Thường dự phòng lưu trữ được sử dụng để tăng hiệu suất. Một ví dụ phổ biến là lưu trữ các khung nhìn cụ thể hóa, bao gồm các khung nhìn bên ngoài hoặc kết quả truy vấn thường xuyên cần thiết. Lưu trữ các quan điểm như vậy giúp tiết kiệm điện toán đắt tiền của chúng mỗi khi chúng cần thiết. Nhược điểm của các khung nhìn cụ thể hóa là chi phí phát sinh khi cập nhật chúng để giữ cho chúng được đồng bộ hóa với dữ liệu cơ sở dữ liệu được cập nhật ban đầu của chúng và chi phí dự phòng lưu trữ.

Sao chép nhân rộng

Đôi khi, cơ sở dữ liệu sử dụng dự phòng lưu trữ bằng cách sao chép đối tượng cơ sở dữ liệu (có một hoặc nhiều bản sao) để tăng tính khả dụng của dữ liệu (cả hai để cải thiện hiệu suất của nhiều người dùng cuối truy cập vào cùng một đối tượng cơ sở dữ liệu và để cung cấp khả năng phục hồi trong trường hợp không thành công một cơ sở dữ liệu phân tán). Cập nhật của một đối tượng được nhân rộng cần phải được đồng bộ hóa trên các bản sao đối tượng. Trong nhiều trường hợp, toàn bộ cơ sở dữ liệu được nhân rộng.

Bảo mật

Bảo mật cơ sở dữ liệu liên quan đến tất cả các khía cạnh khác nhau của việc bảo vệ nội dung cơ sở dữ liệu, chủ sở hữu và người dùng của nó. Nó bao gồm từ bảo vệ khỏi việc sử dụng cơ sở dữ liệu trái phép có chủ ý đến cơ sở dữ liệu vô tình truy cập bởi các thực thể trái phép (ví dụ: một người hoặc một chương trình máy tính).
Kiểm soát truy cập cơ sở dữ liệu liên quan đến việc kiểm soát ai (một người hoặc một chương trình máy tính nhất định) được phép truy cập thông tin nào trong cơ sở dữ liệu. Thông tin có thể bao gồm các đối tượng cơ sở dữ liệu cụ thể (vd hoặc các cấu trúc dữ liệu khác để truy cập thông tin). Các điều khiển truy cập cơ sở dữ liệu được thiết lập bởi nhân viên được ủy quyền đặc biệt (bởi chủ sở hữu cơ sở dữ liệu) sử dụng các giao diện DBMS bảo mật chuyên dụng được bảo vệ.
Điều này có thể được quản lý trực tiếp trên cơ sở cá nhân, hoặc bằng cách phân công các cá nhân và đặc quyền cho các nhóm, hoặc (trong các mô hình phức tạp nhất) thông qua việc phân công các cá nhân và nhóm cho các vai trò sau đó được cấp quyền. Bảo mật dữ liệu ngăn người dùng trái phép xem hoặc cập nhật cơ sở dữ liệu. Sử dụng mật khẩu, người dùng được phép truy cập vào toàn bộ cơ sở dữ liệu hoặc các tập hợp con của nó được gọi là "các bộ phận con". Ví dụ: cơ sở dữ liệu nhân viên có thể chứa tất cả dữ liệu về một nhân viên, nhưng một nhóm người dùng có thể được phép chỉ xem dữ liệu bảng lương, trong khi những người khác chỉ được phép truy cập vào lịch sử làm việc và dữ liệu y tế. Nếu DBMS cung cấp một cách để tương tác nhập và cập nhật cơ sở dữ liệu, cũng như thẩm vấn nó, khả năng này cho phép quản lý cơ sở dữ liệu cá nhân.
Bảo mật dữ liệu nói chung liên quan đến việc bảo vệ các khối dữ liệu cụ thể, cả về mặt vật lý (nghĩa là khỏi tham nhũng, hoặc phá hủy hoặc xóa; ví dụ: xem bảo mật vật lý) hoặc giải thích chúng hoặc các phần của chúng đối với thông tin có ý nghĩa (ví dụ: nhìn vào chuỗi bit mà chúng bao gồm, kết luận số thẻ tín dụng hợp lệ cụ thể, ví dụ: xem mã hóa dữ liệu).
Thay đổi và truy cập các bản ghi nhật ký những người đã truy cập thuộc tính nào, những gì đã được thay đổi và khi nó được thay đổi. Dịch vụ ghi nhật ký cho phép kiểm tra cơ sở dữ liệu pháp y sau đó bằng cách lưu giữ hồ sơ về các lần xuất hiện và thay đổi truy cập. Đôi khi mã cấp độ ứng dụng được sử dụng để ghi lại các thay đổi thay vì để mã này vào cơ sở dữ liệu. Giám sát có thể được thiết lập để cố gắng phát hiện các vi phạm an ninh.

Giao dịch và xử lý giao dịch đồng thời

Các giao dịch cơ sở dữ liệu có thể được sử dụng để giới thiệu một số mức độ chịu lỗi và tính toàn vẹn dữ liệu sau khi phục hồi sau sự cố. Giao dịch cơ sở dữ liệu là một đơn vị công việc, thường đóng gói một số hoạt động trên cơ sở dữ liệu (ví dụ: đọc đối tượng cơ sở dữ liệu, viết, lấy khóa, v.v.), một sự trừu tượng được hỗ trợ trong cơ sở dữ liệu và các hệ thống khác. Mỗi giao dịch có các ranh giới được xác định rõ về mặt thực thi chương trình / mã được bao gồm trong giao dịch đó (được xác định bởi người lập trình giao dịch thông qua các lệnh giao dịch đặc biệt).
Từ viết tắt ACID mô tả một số tính chất lý tưởng của giao dịch cơ sở dữ liệu: tính nguyên tử, tính nhất quán, sự cô lập và độ bền.

Di chuyển

Một cơ sở dữ liệu được xây dựng với một DBMS không thể di chuyển sang một DBMS khác (nghĩa là DBMS khác không thể chạy nó). Tuy nhiên, trong một số tình huống, mong muốn di chuyển, di chuyển cơ sở dữ liệu từ DBMS này sang DBMS khác. Các lý do chủ yếu là kinh tế (các DBMS khác nhau có thể có tổng chi phí sở hữu hoặc TCO khác nhau), chức năng và hoạt động (các DBMS khác nhau có thể có các khả năng khác nhau). Việc di chuyển liên quan đến việc chuyển đổi cơ sở dữ liệu từ loại DBMS này sang loại khác. Việc chuyển đổi phải duy trì (nếu có thể) các ứng dụng liên quan đến cơ sở dữ liệu (nghĩa là tất cả các chương trình ứng dụng liên quan) còn nguyên vẹn. Do đó, các mức kiến trúc bên ngoài và khái niệm của cơ sở dữ liệu nên được duy trì trong quá trình chuyển đổi. Có thể mong muốn rằng một số khía cạnh của cấp độ kiến trúc được duy trì. Di chuyển cơ sở dữ liệu phức tạp hoặc lớn có thể là một dự án phức tạp và tốn kém (một lần), điều này cần được đưa vào quyết định di chuyển. Điều này mặc dù thực tế là các công cụ có thể tồn tại để giúp di chuyển giữa các DBMS cụ thể. Thông thường, nhà cung cấp DBMS cung cấp các công cụ để giúp nhập cơ sở dữ liệu từ các DBMS phổ biến khác.

Xây dựng, bảo trì và điều chỉnh

Sau khi thiết kế cơ sở dữ liệu cho một ứng dụng, giai đoạn tiếp theo là xây dựng cơ sở dữ liệu. Thông thường, một DBMS có mục đích chung thích hợp có thể được chọn để sử dụng cho mục đích này. DBMS cung cấp các giao diện người dùng cần thiết được sử dụng bởi các quản trị viên cơ sở dữ liệu để xác định cấu trúc dữ liệu của ứng dụng cần thiết trong mô hình dữ liệu tương ứng của DBMS. Các giao diện người dùng khác được sử dụng để chọn các tham số DBMS cần thiết (như liên quan đến bảo mật, tham số phân bổ lưu trữ, v.v.).
Khi cơ sở dữ liệu đã sẵn sàng (tất cả các cấu trúc dữ liệu và các thành phần cần thiết khác được xác định), nó thường được điền với dữ liệu của ứng dụng ban đầu (khởi tạo cơ sở dữ liệu, thường là một dự án riêng biệt; trong nhiều trường hợp sử dụng giao diện DBMS chuyên dụng hỗ trợ chèn hàng loạt) trước đó làm cho nó hoạt động. Trong một số trường hợp, cơ sở dữ liệu sẽ hoạt động trong khi trống dữ liệu ứng dụng và dữ liệu được tích lũy trong quá trình hoạt động.
Sau khi cơ sở dữ liệu được tạo, khởi tạo và điền vào nó cần được duy trì. Các tham số cơ sở dữ liệu khác nhau có thể cần thay đổi và cơ sở dữ liệu có thể cần được điều chỉnh (điều chỉnh) để có hiệu suất tốt hơn; cấu trúc dữ liệu của ứng dụng có thể được thay đổi hoặc thêm vào, các chương trình ứng dụng liên quan mới có thể được viết để thêm vào chức năng của ứng dụng, v.v.

Sao lưu và khôi phục

Đôi khi, mong muốn đưa cơ sở dữ liệu trở về trạng thái trước đó (vì nhiều lý do, ví dụ: các trường hợp khi phát hiện cơ sở dữ liệu bị lỗi do lỗi phần mềm hoặc nếu nó đã được cập nhật với dữ liệu bị lỗi). Để đạt được điều này, một hoạt động sao lưu được thực hiện đôi khi hoặc liên tục, trong đó mỗi trạng thái cơ sở dữ liệu mong muốn (nghĩa là các giá trị của dữ liệu và việc nhúng chúng vào cấu trúc dữ liệu của cơ sở dữ liệu) được giữ trong các tệp sao lưu chuyên dụng (có nhiều kỹ thuật để thực hiện điều này một cách hiệu quả). Khi trạng thái này là cần thiết, tức là khi người quản trị cơ sở dữ liệu quyết định đưa cơ sở dữ liệu trở lại trạng thái này (ví dụ: bằng cách chỉ định trạng thái này theo thời điểm mong muốn khi cơ sở dữ liệu ở trạng thái này), các tệp này được sử dụng để khôi phục trạng thái đó.

Phân tích tĩnh

Các kỹ thuật phân tích tĩnh để xác minh phần mềm cũng có thể được áp dụng trong kịch bản của các ngôn ngữ truy vấn. Cụ thể, khung giải thích * Tóm tắt đã được mở rộng sang lĩnh vực ngôn ngữ truy vấn cho cơ sở dữ liệu quan hệ như một cách để hỗ trợ các kỹ thuật gần đúng âm thanh. Ngữ nghĩa của các ngôn ngữ truy vấn có thể được điều chỉnh theo sự trừu tượng phù hợp của miền dữ liệu cụ thể. Sự trừu tượng của hệ thống cơ sở dữ liệu quan hệ có nhiều ứng dụng thú vị, đặc biệt, cho mục đích bảo mật, chẳng hạn như kiểm soát truy cập chi tiết, hình mờ, v.v.

Thiết kế và mô hình

Nhiệm vụ đầu tiên của một nhà thiết kế cơ sở dữ liệu là tạo ra một mô hình dữ liệu khái niệm phản ánh cấu trúc của thông tin sẽ được lưu giữ trong cơ sở dữ liệu. Một cách tiếp cận phổ biến cho việc này là phát triển một mô hình quan hệ thực thể, thường với sự trợ giúp của các công cụ vẽ. Một cách tiếp cận phổ biến khác là Ngôn ngữ mô hình thống nhất. Một mô hình dữ liệu thành công sẽ phản ánh chính xác trạng thái có thể có của thế giới bên ngoài đang được mô hình hóa: ví dụ: nếu mọi người có thể có nhiều hơn một số điện thoại, nó sẽ cho phép nắm bắt thông tin này. Thiết kế một mô hình dữ liệu khái niệm tốt đòi hỏi sự hiểu biết tốt về miền ứng dụng; nó thường liên quan đến việc đặt câu hỏi sâu sắc về những điều mà một tổ chức quan tâm, như "khách hàng cũng có thể là nhà cung cấp không?" hoặc "nếu một sản phẩm được bán với hai hình thức đóng gói khác nhau, đó là cùng một sản phẩm hay sản phẩm khác nhau? "hoặc" nếu một chiếc máy bay bay từ New York đến Dubai qua Frankfurt, đó có phải là một hoặc hai chuyến bay (hoặc thậm chí là ba) không? ". Các câu trả lời cho những câu hỏi này thiết lập các định nghĩa về thuật ngữ được sử dụng cho các thực thể (khách hàng, sản phẩm, chuyến bay, phân khúc chuyến bay) và các mối quan hệ và thuộc tính của chúng.
Sản xuất mô hình dữ liệu khái niệm đôi khi liên quan đến đầu vào từ các quy trình kinh doanh hoặc phân tích quy trình công việc trong tổ chức. Điều này có thể giúp thiết lập những thông tin cần thiết trong cơ sở dữ liệu và những gì có thể bị bỏ lại. Ví dụ, nó có thể giúp khi quyết định liệu cơ sở dữ liệu có cần giữ dữ liệu lịch sử cũng như dữ liệu hiện tại hay không.
Đã tạo ra một mô hình dữ liệu khái niệm mà người dùng hài lòng, giai đoạn tiếp theo là dịch nó thành một lược đồ thực hiện các cấu trúc dữ liệu có liên quan trong cơ sở dữ liệu. Quá trình này thường được gọi là thiết kế cơ sở dữ liệu logic và đầu ra là một mô hình dữ liệu lôgic được thể hiện dưới dạng lược đồ. Trong khi mô hình dữ liệu khái niệm (về lý thuyết ít nhất) không phụ thuộc vào sự lựa chọn công nghệ cơ sở dữ liệu, mô hình dữ liệu lôgic sẽ được biểu thị theo mô hình cơ sở dữ liệu cụ thể được DBMS chọn. (Mô hình dữ liệu thuật ngữ và mô hình cơ sở dữ liệu thường được sử dụng thay thế cho nhau, nhưng trong bài viết này, chúng tôi sử dụng mô hình dữ liệu để thiết kế cơ sở dữ liệu cụ thể và mô hình cơ sở dữ liệu cho ký hiệu mô hình được sử dụng để thể hiện thiết kế đó.)
Mô hình cơ sở dữ liệu phổ biến nhất cho cơ sở dữ liệu đa năng là mô hình quan hệ, hay chính xác hơn là mô hình quan hệ được biểu thị bằng ngôn ngữ SQL. Quá trình tạo ra một thiết kế cơ sở dữ liệu logic bằng mô hình này sử dụng một phương pháp có phương pháp được gọi là chuẩn hóa. Mục tiêu của chuẩn hóa là đảm bảo rằng mỗi "thực tế" cơ bản chỉ được ghi lại ở một nơi, để các phần chèn, cập nhật và xóa tự động duy trì tính nhất quán.
Giai đoạn cuối cùng của thiết kế cơ sở dữ liệu là đưa ra các quyết định ảnh hưởng đến hiệu suất, khả năng mở rộng, phục hồi, bảo mật và tương tự, phụ thuộc vào DBMS cụ thể. Điều này thường được gọi là thiết kế cơ sở dữ liệu vật lý và đầu ra là mô hình dữ liệu vật lý. Mục tiêu chính trong giai đoạn này là tính độc lập dữ liệu, nghĩa là các quyết định được đưa ra cho mục đích tối ưu hóa hiệu suất sẽ vô hình đối với người dùng cuối và ứng dụng. Có hai loại độc lập dữ liệu: độc lập dữ liệu vật lý và độc lập dữ liệu logic. Thiết kế vật lý được điều khiển chủ yếu bởi các yêu cầu về hiệu suất và đòi hỏi kiến thức tốt về khối lượng công việc và các mẫu truy cập dự kiến và hiểu biết sâu sắc về các tính năng được cung cấp bởi DBMS đã chọn.
Một khía cạnh khác của thiết kế cơ sở dữ liệu vật lý là bảo mật. Nó bao gồm cả việc xác định kiểm soát truy cập cho các đối tượng cơ sở dữ liệu cũng như xác định các mức và phương thức bảo mật cho chính dữ liệu.

Nghiên cứu

Công nghệ cơ sở dữ liệu là một chủ đề nghiên cứu tích cực từ những năm 1960, cả trong các học viện và trong các nhóm nghiên cứu và phát triển của các công ty (ví dụ như Nghiên cứu của IBM). Hoạt động nghiên cứu bao gồm lý thuyết và phát triển các nguyên mẫu. Các chủ đề nghiên cứu đáng chú ý đã bao gồm các mô hình, khái niệm giao dịch nguyên tử và các kỹ thuật kiểm soát đồng thời có liên quan, ngôn ngữ truy vấn và phương pháp tối ưu hóa truy vấn, RAID,v.v....
Khu vực nghiên cứu cơ sở dữ liệu có một số tạp chí học thuật chuyên dụng (ví dụ: ACM Transactions on Database Systems -TODS, Data & Knowledge Engineering -DKE) và các hội nghị hàng năm (ví dụ: ACM SIGMOD, ACM PODS, VLDB, IEEE ICDE).