DP-900: Phần thứ hai về dữ liệu quan hệ trong Azure - game 789win

| Jan 19, 2025 min read

27 tháng 10 năm 2022 Công nghệ thông tin

Bài viết này được dịch và tổng hợp dựa trên tài liệu tham khảo của Azure tại cuối bài, nhằm mục đích học tập và tóm tắt kiến thức.

Dữ liệu quan hệ là cốt lõi của hầu hết các ứng dụng kinh doanh và cũng là nền tảng để xây dựng nhiều giải pháp dữ liệu doanh nghiệp. Azure cung cấp các dịch vụ quản lý cơ sở dữ liệu quan hệ giúp bạn có thể tạo ra các ứng dụng mới hoặc di chuyển các ứng dụng hiện có lên đám mây.

1 Các khái niệm cơ bản về dữ liệu quan hệ

Trong giai đoạn đầu của hệ thống tính toán, mỗi ứng dụng lưu trữ dữ liệu theo cấu trúc độc đáo riêng biệt. Khi các nhà phát triển muốn xây dựng ứng dụng sử dụng những dữ liệu này, họ phải hiểu rõ về cấu trúc dữ liệu cụ thể để tìm được những gì họ cần. Những cấu trúc dữ liệu này không hiệu quả, khó bảo trì và khó tối ưu hóa để đạt được hiệu suất tốt cho ứng dụng. Mô hình cơ sở dữ liệu quan hệ được thiết kế để giải quyết vấn đề của nhiều cấu trúc dữ liệu tùy chỉnh. Mô hình quan hệ cung cấp một phương pháp tiêu chuẩn để biểu diễn và truy vấn dữ liệu mà bất kỳ ứng dụng nào cũng có thể sử dụng. Một trong những lợi thế chính của mô hình cơ sở dữ liệu quan hệ là nó sử dụng bảng, đây là một cách trực quan, hiệu quả và linh hoạt để lưu trữ và truy cập thông tin có cấu trúc.

Các tổ chức thuộc mọi loại hình và quy mô đều sử dụng mô hình quan hệ đơn giản nhưng mạnh mẽ để đáp ứng nhiều nhu cầu quản lý thông tin khác nhau. Cơ sở dữ liệu quan hệ được sử dụng để theo dõi hàng tồn kho, xử lý giao dịch thương mại điện tử, quản lý khối lượng lớn thông tin khách hàng quan trọng… Cơ sở dữ liệu quan hệ có thể lưu trữ bất kỳ thông tin nào chứa các phần tử dữ liệu liên quan, những phần tử này phải được tổ chức theo cấu trúc nhất quán dựa trên quy tắc.

Trong phần này, bạn sẽ tìm hiểu về các đặc điểm chính của cơ sở dữ liệu quan hệ và khám phá cấu trúc dữ liệu quan hệ.

1.1 Hiểu về dữ liệu quan hệ

Trong cơ sở dữ liệu quan hệ, bạn mô hình hóa các tập hợp thực thể từ thế giới thực thành bảng. Thực thể có thể là bất kỳ điều gì mà bạn muốn ghi lại thông tin; thường là các đối tượng và sự kiện quan trọng. Ví dụ, trong ví dụ hệ thống bán lẻ, bạn có thể tạo bảng cho khách hàng, sản phẩm, đơn đặt hàng và mục hàng trong đơn đặt hàng. Một bảng chứa nhiều hàng, mỗi hàng đại diện cho một trường hợp cụ thể của thực thể.

![Mẫu bảng quan hệ]

Bảng quan hệ là định dạng dữ liệu có cấu trúc, trong đó mỗi hàng có cùng các cột; mặc dù trong một số trường hợp, không phải tất cả các cột đều cần có giá trị (như cột MiddleName trong hình trên).

Mỗi cột lưu trữ dữ liệu với kiểu dữ liệu cụ thể. Ví dụ, cột email trong bảng khách hàng có thể được định nghĩa để lưu trữ dữ liệu kiểu ký tự (có độ dài cố định hoặc thay đổi), cột giá trong bảng sản phẩm có thể được định nghĩa để lưu trữ số thập phân, cột Quantity trong bảng Order có thể bị hạn chế thành số nguyên, và cột OrderDate trong bảng Order dùng để lưu trữ giá trị ngày hoặc giờ. Kiểu dữ liệu được sử dụng khi định nghĩa bảng phụ thuộc vào hệ thống cơ sở dữ liệu mà bạn đang sử dụng, mặc dù hầu hết các hệ thống cơ sở dữ liệu đều hỗ trợ các kiểu dữ liệu chuẩn do ANSI (American National Standards Institute) định nghĩa.

1.2 Hiểu về chuẩn hóa

Chuẩn hóa là thuật ngữ mà các chuyên gia cơ sở dữ liệu sử dụng trong quá trình thiết kế lược đồ để giảm thiểu việc lặp lại dữ liệu và tăng cường tính toàn vẹn của dữ liệu.

Mặc dù có nhiều quy tắc phức tạp định nghĩa việc tái cấu trúc dữ liệu qua các mức độ chuẩn hóa khác nhau, nhưng định nghĩa đơn giản vì mục đích thực tế là:

  • Chia mỗi thực thể thành bảng riêng;
  • Chia từng thuộc tính riêng lẻ thành cột riêng;
  • Sử dụng khóa chính để duy nhất nhận diện mỗi trường hợp của thực thể (hàng);
  • Sử dụng cột khóa ngoại…

Để hiểu các nguyên tắc cốt lõi của chuẩn hóa, giả sử bảng dưới đây đại diện cho bảng tính mà công ty sử dụng để theo dõi doanh số bán hàng của mình. ![Dữ liệu chưa chuẩn hóa] Lưu ý rằng trong bảng trên, thông tin chi tiết về khách hàng và sản phẩm bị lặp lại cho mỗi món hàng đã bán; và tên khách hàng cùng địa chỉ bưu chính, cũng như tên sản phẩm và giá cả được kết hợp trong cùng một ô bảng tính.

Bây giờ hãy xem chuẩn hóa làm thế nào thay đổi cách lưu trữ dữ liệu. ![Dữ liệu đã chuẩn hóa] Mỗi thực thể được biểu thị trong dữ liệu (khách hàng, sản phẩm, đơn đặt hàng và mục hàng) đều được lưu trữ trong bảng riêng, và mỗi thuộc tính riêng lẻ của các thực thể này đều nằm trong cột riêng.

Việc ghi lại từng trường hợp của thực thể trong một hàng của bảng cụ thể có Sam86 Club Choi Game Bài thể loại bỏ việc lặp lại dữ liệu. Ví dụ, để thay đổi địa chỉ của khách hàng, bạn chỉ cần sửa đổi giá trị trong một hàng duy nhất.

Việc chia tách thuộc tính thành các cột riêng biệt đảm bảo rằng mỗi giá trị bị hạn chế bởi kiểu dữ liệu phù hợp. Ví dụ, giá sản phẩm phải là giá trị thập phân, và số lượng mục hàng phải là số nguyên. Ngoài ra, việc tạo ra các cột riêng lẻ cung cấp mức độ chi tiết hữu ích khi truy vấn dữ liệu. Ví dụ, bạn có thể dễ dàng lọc khách hàng sống ở thành phố cụ thể.

Mỗi trường hợp của thực thể được nhận diện duy nhất bằng một ID (hay còn gọi là khóa chính). Khi một thực thể tham chiếu đến một thực thể khác (ví dụ, đơn đặt hàng liên quan đến khách hàng), khóa chính của thực thể liên quan được lưu trữ dưới dạng khóa ngoại. Bạn có thể tìm thấy địa chỉ khách hàng tương ứng với mỗi bản ghi trong bảng Đơn đặt hàng bằng cách tham chiếu đến bản ghi thích hợp trong bảng Khách hàng (chỉ được lưu trữ một lần). Thông thường, hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) có thể thực thi tính toàn vẹn tham chiếu để đảm bảo rằng các giá trị nhập vào các trường khóa ngoại có tồn tại trong các bảng liên quan - ví dụ, ngăn chặn đơn đặt hàng từ khách hàng không tồn tại.

Trong một số trường hợp, có thể định nghĩa khóa (khóa chính hoặc khóa ngoại) dựa trên tổ hợp duy nhất của nhiều cột. Ví dụ, bảng LineItem trong ví dụ trên sử dụng tổ hợp duy nhất của OrderNo và ItemNo để nhận diện các mục hàng trong một đơn đặt hàng duy nhất.

1.3 Khám phá SQL

SQL đại diện cho Ngôn ngữ Truy vấn Cấu trúc (Structured Query Language), được sử dụng để giao tiếp với cơ sở dữ liệu quan hệ. Các câu lệnh SQL được sử dụng để thực hiện các tác vụ như cập nhật hoặc truy xuất dữ liệu. Một số hệ thống quản lý cơ sở dữ liệu quan hệ phổ biến sử dụng SQL bao gồm Microsoft SQL Server, MySQL, PostgreSQL, MariaDB và Oracle.

SQL ban đầu được chuẩn hóa bởi Hiệp hội Tiêu chuẩn Quốc gia Hoa Kỳ (ANSI) vào năm 1986 và sau đó được Tổ chức Tiêu chuẩn Hóa Quốc tế (ISO) chuẩn hóa vào năm 1987. Từ đó đến nay, tiêu chuẩn này đã được mở rộng nhiều lần khi các nhà cung cấp cơ sở dữ liệu quan hệ thêm các tính năng mới vào hệ thống của họ. Ngoài ra, hầu hết các nhà cung cấp cơ sở dữ liệu đều bao gồm các phần mở rộng độc quyền của riêng họ, không thuộc phần tiêu chuẩn, dẫn đến nhiều phương ngữ SQL khác nhau.

Bạn có thể sử dụng các câu lệnh SQL như SELECT, INSERT, UPDATE, DELETE, CREATE và DROP để hoàn thành hầu hết mọi thao tác cần thiết đối với cơ sở dữ liệu. Mặc dù các câu lệnh SQL này là một phần của tiêu chuẩn SQL, nhưng nhiều hệ thống quản lý cơ sở dữ liệu cũng có các phần mở rộng độc quyền bổ sung để xử lý các chi tiết của hệ thống quản lý cơ sở dữ liệu. Những phần mở rộng này cung cấp các chức năng không được bao gồm trong tiêu chuẩn SQL và bao gồm các lĩnh vực như quản lý an ninh và khả năng lập trình.

Ví dụ, Microsoft SQL Server và dịch vụ cơ sở dữ liệu Azure dựa trên bộ động cơ cơ sở dữ liệu SQL Server sử dụng Transact-SQL. Việc triển khai này bao gồm các phần mở rộng độc quyền để viết thủ tục lưu trữ, kích hoạt (có thể lưu trữ mã ứng dụng trong cơ sở dữ liệu) và quản lý tài khoản người dùng. PostgreSQL và MySQL cũng có phiên bản riêng của những đặc tính này.

Một số phương ngữ SQL phổ biến bao gồm:

  • Transact-SQL (T-SQL), phiên bản này của SQL được sử dụng bởi Microsoft SQL Server và dịch vụ cơ sở dữ liệu Azure SQL.
  • pgSQL, đây là phương ngữ SQL được triển khai trong PostgreSQL.
  • PL/SQL, đây là phương ngữ được Oracle sử dụng. PL/SQL đại diện cho Ngôn ngữ Quy trình/SQL.

Người dùng dự định sử dụng duy nhất một hệ thống cơ sở dữ liệu nên hiểu rõ phương ngữ SQL và độ phức tạp của nền tảng mà họ lựa chọn.

Trừ khi có thông báo khác, tất cả các ví dụ mã SQL trong mô đun này đều dựa trên phương ngữ Transact-SQL. Ngữ pháp của các phương ngữ khác nhìn chung tương tự, nhưng có thể khác biệt trong một số chi tiết.

Loại câu lệnh SQL

Câu lệnh SQL chủ yếu được chia thành ba loại:

  • Ngôn ngữ Định nghĩa Dữ liệu (Data Definition Language, DDL)
  • Ngôn ngữ Kiểm soát Dữ liệu (Data Control Language, DCL)
  • Ngôn ngữ Thao tác Dữ liệu (Data Manipulation Language, DML)

Câu lệnh DDL Bạn có thể sử dụng các câu lệnh DDL để tạo, sửa đổi và xóa các đối tượng trong cơ sở dữ liệu (bảng, thủ tục lưu trữ, view…). Những câu lệnh DDL phổ biến nhất là:

Câu lệnh Mô tả
CREATE Tạo một đối tượng mới trong cơ sở dữ liệu, chẳng hạn như bảng hoặc view.
ALTER Sửa đổi cấu trúc của đối tượng. Ví dụ, thay đổi bảng để thêm cột mới.
DROP Xóa một đối tượng khỏi cơ sở dữ liệu.
RENAME Đổi tên đối tượng hiện có.

Câu lệnh DROP rất mạnh mẽ. Khi xóa bảng, tất cả các hàng trong bảng đó sẽ mất. Nếu bạn không có bản sao lưu, bạn sẽ không thể khôi phục dữ liệu này.

Ví dụ sau đây tạo một bảng cơ sở dữ liệu mới. Giữa dấu ngoặc đơn được chỉ định chi tiết từng cột, bao gồm tên, kiểu dữ liệu, giá trị có bắt buộc phải không rỗng (NOT NULL) và liệu dữ liệu trong cột có được sử dụng để duy nhất (PRIMARY KEY) hay không. Mỗi bảng nên có một khóa chính, mặc dù SQL không ép buộc quy tắc này.

Các cột được đánh dấu là NOT NULL được gọi là cột bắt buộc. Nếu không có mệnh đề NOT NULL, bạn có thể tạo các hàng không tải game 789win có giá trị trong cột. Các cột rỗng trong hàng được gọi là nohu52 đăng nhập chứa giá trị NULL.

CREATE TABLE Product(ID INT PRIMARY KEY, Name VARCHAR(20) NOT NULL, Price DECIMAL NULL);

Kiểu dữ liệu có sẵn cho các cột trong bảng khác nhau giữa các hệ thống quản lý cơ sở dữ liệu. Tuy nhiên, hầu hết các hệ thống quản lý cơ sở dữ liệu đều hỗ trợ các kiểu dữ liệu như INT (số nguyên), DECIMAL (số thập phân) và chuỗi (như VARCHAR).

Câu lệnh DCL Quản trị viên cơ sở dữ liệu thường sử dụng các câu lệnh DCL để cấp, từ chối hoặc thu hồi quyền truy cập của người dùng hoặc nhóm cụ thể vào các đối tượng trong cơ sở dữ liệu.

Ba câu lệnh DCL chính là:

Câu lệnh Mô tả
GRANT Cấp quyền thực hiện thao tác cụ thể.
DENY Từ chối quyền thực hiện thao tác cụ thể.
REVOKE Xóa quyền đã được cấp trước đó.

Ví dụ, câu lệnh GRANT sau đây cho phép người dùng có tên user1 đọc, chèn và sửa đổi dữ liệu trong bảng Product.

GRANT SELECT, INSERT, UPDATE ON Product TO user1;

Câu lệnh DML Bạn sử dụng các câu lệnh DML để thao tác với các hàng trong bảng. Những câu lệnh này cho phép bạn truy xuất (truy vấn) dữ liệu, chèn hàng mới hoặc sửa đổi hàng hiện có. Nếu không cần thiết các hàng nhất định, bạn cũng có thể xóa chúng.

Bốn câu lệnh DML chính là:

Câu lệnh Mô tả
SELECT Đọc các hàng từ bảng.
INSERT Chèn các hàng mới vào bảng.
UPDATE Sửa đổi dữ liệu trong các hàng hiện có.
DELETE Xóa các hàng hiện có.

Hình thức cơ bản của câu lệnh INSERT là chèn một hàng tại một thời điểm. Mặc định, các câu lệnh SELECT, UPDATE và DELETE áp dụng cho mọi hàng trong bảng. Thông thường, mệnh đề WHERE được áp dụng trong các câu lệnh này để chỉ định điều kiện, chỉ những hàng phù hợp với điều kiện đó mới được chọn, cập nhật hoặc xóa.

SQL không có lời nhắc xác nhận thứ hai. Do đó, hãy cẩn thận khi sử dụng DELETE hoặc UPDATE mà không có mệnh đề WHERE, vì bạn có thể mất hoặc sửa đổi một lượng lớn dữ liệu.

Mã sau đây là một ví dụ về câu lệnh SQL, truy vấn tất cả các cột (được biểu thị bằng *) từ bảng Customer nơi cột City có giá trị “Seattle”:

SELECT * FROM Customer WHERE City = 'Seattle';

Để chỉ truy xuất các cột cụ thể từ bảng, liệt kê chúng trong mệnh đề SELECT, như sau:

SELECT FirstName, LastName, Address, City FROM Customer WHERE City = 'Seattle';

Nếu truy vấn trả về nhiều hàng, chúng không chắc chắn xuất hiện theo bất kỳ thứ tự cụ thể nào. Nếu bạn muốn sắp xếp dữ liệu, bạn có thể thêm mệnh đề ORDER BY. Dữ liệu sẽ được sắp xếp theo cột được chỉ định:

SELECT FirstName, LastName, Address, City FROM Customer WHERE City = 'Seattle' ORDER BY LastName;

Bạn cũng có thể sử dụng mệnh đề JOIN trong câu lệnh SELECT để truy xuất dữ liệu từ nhiều bảng. JOIN chỉ định cách hàng trong một bảng được kết nối với hàng trong bảng khác để xác định dữ liệu cần trả về. Điều kiện kết nối điển hình khớp khóa ngoại trong một bảng với khóa chính tương ứng trong bảng khác.

Ví dụ truy vấn sau đây hiển thị cách kết nối bảng Customer và Order. Khi chỉ định các cột cần truy xuất trong mệnh đề SELECT và các cột cần khớp trong mệnh đề JOIN, truy vấn sử dụng tên rút gọn bảng để viết tắt tên bảng.

SELECT o.OrderNo, o.OrderDate, c.Address, c.City FROM Order AS o JOIN Customer AS c ON o.Customer = c.ID;

Ví dụ tiếp theo hiển thị cách sử dụng SQL để sửa đổi hàng hiện có. Nó thay đổi giá trị cột Address trong bảng Customer cho hàng có giá trị 1 trong cột ID. Tất cả các hàng khác vẫn giữ nguyên:

UPDATE Customer SET Address = '123 High St.' WHERE ID = 1;

Nếu bỏ qua mệnh đề WHERE, câu lệnh UPDATE sẽ sửa đổi tất cả các hàng trong bảng.

Sử dụng câu lệnh DELETE để xóa hàng. Chỉ định tên bảng và mệnh đề WHERE để xác định các hàng cần xóa:

DELETE FROM Product WHERE ID = 162;

Nếu bỏ qua mệnh đề WHERE, câu lệnh DELETE sẽ xóa tất cả các hàng trong bảng.

Câu lệnh INSERT có dạng hơi khác. Trong mệnh đề INTO, chỉ định bảng và các cột, cũng như danh sách giá trị cần lưu trữ trong các cột đó. Tiêu chuẩn SQL chỉ hỗ trợ chèn một hàng tại một thời điểm, như ví dụ sau đây. Một số phương ngữ cho phép bạn chỉ định nhiều mệnh đề VALUES để thêm nhiều hàng cùng lúc:

INSERT INTO Product (ID, Name, Price) VALUES (99, 'Drill', 4.99);

1.4 Mô tả các đối tượng cơ sở dữ liệu

Ngoài bảng, cơ sở dữ liệu quan hệ còn có thể chứa các cấu trúc khác giúp tối ưu hóa việc tổ chức dữ liệu, đóng gói các hoạt động lập trình và cải thiện tốc độ truy cập. Trong đơn vị này, bạn sẽ tìm hiểu chi tiết hơn về ba cấu trúc này: view, thủ tục lưu trữ và chỉ mục.

View là gì?

View là bảng ảo dựa trên kết quả của truy vấn SELECT. Bạn có thể coi view như một cửa sổ hiển thị các hàng cụ thể từ một hoặc nhiều bảng gốc. Ví dụ, bạn có thể tạo view trên bảng Order và Customer để truy xuất dữ liệu đơn đặt hàng và khách hàng nhằm cung cấp một đối tượng đơn lẻ, giúp dễ dàng xác định địa chỉ giao hàng của đơn đặt hàng:

CREATE VIEW Deliveries AS SELECT o.OrderNo, o.OrderDate, c.FirstName, c.LastName, c.Address, c.City FROM Order AS o JOIN Customer AS c ON o.Customer = c.ID;

Bạn có thể truy vấn view và lọc dữ liệu giống như truy vấn bảng. Ví dụ sau đây tìm kiếm thông tin chi tiết đơn đặt hàng của khách hàng sống ở Seattle:

SELECT OrderNo, OrderDate, LastName, Address FROM Deliveries WHERE City = 'Seattle';

Thủ tục lưu trữ là gì?

Thủ tục lưu trữ định nghĩa các câu lệnh SQL có thể chạy trên lệnh. Thủ tục lưu trữ được sử dụng để đóng gói logic chương trình trong cơ sở dữ liệu để thực hiện các hoạt động cần thiết khi ứng dụng xử lý dữ liệu.

Bạn có thể sử dụng tham số để định nghĩa thủ tục lưu trữ, tạo ra các giải pháp linh hoạt cho các hoạt động phổ biến có thể cần áp dụng cho dữ liệu dựa trên khóa hoặc điều kiện cụ thể. Ví dụ, bạn có thể định nghĩa thủ tục lưu trữ sau đây để thay đổi tên sản phẩm dựa trên ID sản phẩm được chỉ định.

CREATE PROCEDURE RenameProduct @ProductID INT, @NewName VARCHAR(20) AS UPDATE Product SET Name = @NewName WHERE ID = @ProductID;

Khi cần đổi tên sản phẩm, bạn có thể truyền ID sản phẩm và tên mới cần gán để thực thi thủ tục lưu trữ sau đây:

EXEC RenameProduct 201, 'Spanner';

Chỉ mục là gì?

Chỉ mục giúp bạn tìm kiếm dữ liệu trong bảng. Hãy tưởng tượng chỉ mục trên bảng như chỉ mục phía sau cuốn sách. Chỉ mục sách chứa một loạt các tài liệu được sắp xếp, cùng với các trang mà mỗi tài liệu xuất hiện. Khi bạn muốn tìm tài liệu cụ thể trong cuốn sách, bạn có thể tra cứu trong chỉ mục. Bạn có thể sử dụng số trang trong chỉ mục để chuyển trực tiếp đến trang đúng trong cuốn sách. Nếu không có chỉ mục, bạn có thể phải đọc toàn bộ cuốn sách để tìm cái bạn đang tìm kiếm.

Khi tạo chỉ mục trong cơ sở dữ liệu, bạn chỉ định một cột từ bảng, và chỉ mục chứa bản sao dữ liệu được sắp xếp, kèm theo các con trỏ đến các hàng tương ứng trong bảng. Khi người dùng chạy truy vấn chỉ định cột này trong mệnh đề WHERE, hệ thống quản lý cơ sở dữ liệu có thể sử dụng chỉ mục để lấy dữ liệu nhanh hơn, thay vì phải quét toàn bộ bảng hàng dòng.

Ví dụ, bạn có thể sử dụng mã sau đây để tạo chỉ mục trên cột Name của bảng Product:

CREATE INDEX idx_ProductName ON Product(Name);

Chỉ mục này tạo ra một cấu trúc dựa trên cây, hệ thống tối ưu hóa truy vấn của cơ sở dữ liệu có thể sử dụng cấu trúc này để tìm hàng nhanh chóng trong bảng Product dựa trên tên được chỉ định.

![Chỉ mục]

Đối với bảng chứa ít hàng, việc sử dụng chỉ mục có thể không hiệu quả hơn so với chỉ đọc toàn bộ bảng và tìm hàng yêu cầu (trong trường hợp này, bộ tối ưu hóa truy vấn sẽ bỏ qua chỉ mục). Tuy nhiên, khi một bảng có nhiều hàng, chỉ mục có thể đáng kể cải thiện hiệu suất truy vấn.

Bạn có thể tạo nhiều chỉ mục trên một bảng. Vì vậy, nếu bạn cũng muốn tìm kiếm sản phẩm dựa trên giá, việc tạo thêm chỉ mục trên cột Price của bảng Product có thể hữu ích. Tuy nhiên, chỉ mục không miễn phí. Chỉ mục tiêu thụ không gian lưu trữ, và mỗi khi chèn, cập nhật hoặc xóa dữ liệu trong bảng, chỉ mục của bảng đó phải được duy trì. Công việc bổ sung này có thể làm chậm các hoạt động chèn, cập nhật và xóa. Bạn phải cân bằng giữa việc có chỉ mục để tăng tốc độ truy vấn và chi phí thực hiện các hoạt động khác.

2 Dịch vụ cơ sở dữ liệu quan hệ trong Azure

Azure hỗ trợ nhiều dịch vụ cơ sở dữ liệu, cho phép bạn chạy các hệ thống quản lý cơ sở dữ liệu quan hệ phổ biến trên đám mây, chẳng hạn như SQL Server, PostgreSQL và MySQL.

Hầu hết các dịch vụ cơ sở dữ liệu Azure đều được quản lý hoàn toàn, tiết kiệm thời gian quý báu mà bạn vốn dành để quản lý cơ sở dữ liệu. Hiệu suất cấp doanh nghiệp với khả năng sẵn có cao có nghĩa là bạn có thể mở rộng nhanh chóng và đạt được phân phối toàn cầu mà không lo ngại về thời gian ngừng hoạt động đắt đỏ. Các nhà phát triển có thể tận dụng các sáng kiến tiên phong trong ngành, chẳng hạn như tính bảo mật tích hợp với giám sát tự động và phát hiện mối đe dọa, điều chỉnh tự động để cải thiện hiệu suất. Ngoài tất cả các tính năng này, bạn còn được đảm bảo về tính sẵn có.

Trong mô đun này, bạn sẽ khám phá các tùy chọn sẵn có của dịch vụ cơ sở dữ liệu quan hệ trong Azure.

2.1 Dịch vụ và tính năng Azure SQL

Azure SQL là thuật ngữ chung cho một loạt các dịch vụ cơ sở dữ liệu dựa trên Microsoft SQL Server trong Azure. Các dịch vụ Azure SQL cụ thể bao gồm:

  • SQL Server trên máy ảo Azure - SQL Server chạy trên máy ảo Azure. Sử dụng VM làm cho tùy chọn này trở thành giải pháp IaaS (Infrastructure as a Service), ảo hóa hạ tầng phần cứng được sử dụng cho tính toán, lưu trữ và mạng trong Azure; làm cho nó trở thành lựa chọn tuyệt vời để “di chuyển trực tiếp” các cài đặt SQL Server On-Premise hiện có lên đám mây.
  • Azure SQL Managed Instance - Một tùy chọn PaaS (Platform as a Service) cung cấp độ tương thích gần 100% với các phiên bản SQL Server On-Premise, đồng thời trừu tượng hóa phần cứng và hệ điều hành bên dưới. Dịch vụ này bao gồm quản lý tự động cập nhật phần mềm, sao lưu và các nhiệm vụ bảo trì khác, giảm bớt gánh nặng quản lý hỗ trợ các phiên bản máy chủ cơ sở dữ liệu.
  • Azure SQL Database - Một dịch vụ cơ sở dữ liệu PaaS được quản lý hoàn toàn, có khả năng mở rộng cao, được thiết kế riêng cho đám mây. Dịch vụ này bao gồm các tính năng cấp cơ sở dữ liệu cốt lõi của SQL Server On-Premise, là một lựa chọn tốt khi bạn cần tạo các ứng dụng mới trên đám mây.
  • Azure SQL Edge - Bộ động cơ SQL được tối ưu hóa cho các kịch bản IoT (Internet of Things) cần xử lý dữ liệu thời gian thực.

So sánh các dịch vụ Azure SQL

SQL Server trên máy ảo Azure Azure SQL Managed Instance Azure SQL Database
Kiểu dịch vụ đám mây IaaS PaaS
Độ tương thích SQL Server Hoàn toàn tương thích với cài đặt vật lý và ảo hóa On-Premise. Ứng dụng và cơ sở dữ liệu có thể “di chuyển trực tiếp” mà không cần thay đổi. Gần 100% tương thích với SQL Server. Hầu hết các cơ sở dữ liệu On-Premise có thể được di chuyển sử dụng Dịch vụ Di chuyển Cơ sở Dữ liệu Azure với ít thay đổi mã nguồn nhất.
Kiến trúc Thực lệ SQL Server được cài đặt trong máy ảo. Mỗi thực lệ có thể hỗ trợ nhiều cơ sở dữ liệu. Mỗi thực lệ được quản lý có thể hỗ trợ nhiều cơ sở dữ liệu. Ngoài ra, nhóm thực lệ có thể được sử dụng để chia sẻ tài nguyên hiệu quả giữa các thực lệ nhỏ hơn.
Độ sẵn có 99.99% 99.99%
Quản lý Bạn phải quản lý tất cả các khía cạnh của máy chủ, bao gồm cập nhật hệ điều hành và SQL Server, cấu hình, sao lưu và các nhiệm vụ bảo trì khác. Cập nhật, sao lưu và khôi phục tự động.
Trường hợp sử dụng Sử dụng tùy chọn này khi bạn cần di chuyển hoặc mở rộng giải pháp SQL Server On-Premise và giữ quyền kiểm soát hoàn toàn đối với cấu hình máy chủ và cơ sở dữ liệu. Tùy chọn này phù hợp với hầu hết các kịch bản di chuyển lên đám mây, đặc biệt khi bạn cần thay đổi ít nhất có thể cho ứng dụng hiện có.

SQL Server trên máy ảo Azure

SQL Server trên máy ảo cho phép bạn sử dụng phiên bản đầy đủ của SQL Server trên đám mây mà không cần quản lý bất kỳ phần cứng tại chỗ nào. Đây là một ví dụ về phương pháp IaaS.

SQL Server chạy trên máy ảo Azure hiệu quả tái tạo cơ sở dữ liệu đang chạy trên phần cứng thực tế On-Premise. Việc di chuyển hệ thống đang chạy On-Premise sang máy ảo Azure không khác gì việc di chuyển cơ sở dữ liệu từ một máy chủ On-Premise sang máy chủ khác.

Phương pháp này phù hợp với việc di chuyển và ứng dụng cần truy cập vào các chức năng hệ điều hành mà cấp độ PaaS có thể không hỗ trợ. SQL Server trên máy ảo đã sẵn sàng cho việc di chuyển trực tiếp với ít thay đổi nhất cho các ứng dụng hiện có. Bạn cũng có thể sử dụng SQL Server trên máy ảo Azure để mở rộng ứng dụng On-Premise hiện có sang môi trường triển khai lai.

Triển khai lai là một hệ thống, trong đó một số hoạt động chạy tại chỗ và một số chạy trên đám mây. Mặc dù các phần tử cơ sở dữ liệu có thể được lưu trữ trên đám mây, nhưng cơ sở dữ liệu của bạn có thể là một phần của hệ thống lớn hơn đang chạy tại chỗ.

Bạn có thể sử dụng SQL Server trong máy ảo để phát triển và thử nghiệm các ứng dụng SQL Server truyền thống. Sử dụng máy ảo, bạn có quyền quản lý hoàn toàn đối với DBMS và hệ điều hành. Đây là một lựa chọn tuyệt vời khi tổ chức của bạn đã có các nguồn lực IT có thể duy trì máy ảo.

Những tính năng này cho phép bạn:

  • Tạo các kịch bản phát triển và thử nghiệm nhanh chóng khi bạn không muốn mua phần cứng SQL Server phi sản xuất tại chỗ.
  • Chuẩn bị sẵn sàng cho việc di chuyển trực tiếp cho các ứng dụng hiện có cần di chuyển nhanh chóng lên đám mây với ít hoặc không thay đổi.
  • Mở rộng nền tảng đang chạy SQL Server bằng cách phân bổ thêm bộ nhớ, sức mạnh CPU và không gian đĩa cho máy ảo. Bạn có thể điều chỉnh nhanh các thông số kỹ thuật của máy ảo Azure mà không cần cài đặt lại phần mềm đang chạy trên đó.

Lợi ích thương mại Chạy SQL Server trên máy ảo cho phép bạn đáp ứng các nhu cầu kinh doanh độc đáo và đa dạng bằng cách kết hợp triển khai On-Premise và triển khai được lưu trữ trên đám mây, đồng thời sử dụng cùng sản phẩm máy chủ, công cụ phát triển và tập hợp kiến thức trong các môi trường này.

Không phải lúc nào cũng dễ dàng chuyển đổi DBMS của doanh nghiệp thành dịch vụ được quản lý hoàn toàn. Để di chuyển lên dịch vụ được quản lý, có thể cần phải đáp ứng các yêu cầu cụ thể đối với cơ sở dữ liệu và ứng dụng sử dụng nó. Vì lý do này, việc sử dụng máy ảo có thể cung cấp giải pháp, nhưng việc sử dụng chúng không loại bỏ nhu cầu quản lý cẩn thận DBMS như khi ở On-Premise.

Azure SQL Database Managed Instance

Azure SQL Managed Instance hiệu quả chạy một phiên bản SQL Server hoàn toàn có thể kiểm soát trong đám mây. Bạn có thể cài đặt nhiều cơ sở dữ liệu trên cùng một phiên bản. Bạn có quyền kiểm soát hoàn toàn phiên bản này, giống như kiểm soát máy chủ On-Premise. SQL Managed Instance tự động thực hiện sao lưu, vá phần mềm, giám sát cơ sở dữ liệu và các nhiệm vụ thông thường khác, nhưng bạn có quyền kiểm soát hoàn toàn về an ninh cơ sở dữ liệu và phân bổ tài nguyên.

Managed Instance dựa vào các dịch vụ Azure khác, chẳng hạn như Azure Storage cho sao lưu, Azure Event Hub cho đo lường từ xa, Azure Active Directory cho xác thực, Azure Key Vault cho mã hóa dữ liệu minh bạch (TDE) và một số dịch vụ nền tảng Azure cung cấp các tính năng bảo mật và hỗ trợ. Managed Instance thiết lập kết nối với các dịch vụ này.

Tất cả các giao tiếp đều được mã hóa và ký bằng chứng chỉ. Để kiểm tra độ tin cậy của bên giao tiếp, Managed Instance liên tục xác thực các chứng chỉ này qua danh sách thu hồi chứng chỉ. Nếu chứng chỉ bị thu hồi, Managed Instance sẽ đóng kết nối để bảo vệ dữ liệu.

Trường hợp sử dụng Nếu bạn muốn di chuyển trực tiếp phiên bản SQL Server On-Premise và tất cả các cơ sở dữ liệu của nó lên đám mây mà không tạo ra gánh nặng quản lý khi chạy SQL Server trên máy ảo, hãy xem xét sử dụng Azure SQL Managed Instance.

Azure SQL Managed Instance cung cấp các tính năng không có sẵn trong Azure SQL Database. Nếu hệ thống của bạn sử dụng các tính năng như máy chủ liên kết, Service Broker (hệ thống xử lý tin nhắn có thể phân phối công việc qua các máy chủ) hoặc thư tín cơ sở dữ liệu (cho phép cơ sở dữ liệu gửi email cho người dùng), thì bạn nên sử dụng Managed Instance. Để kiểm tra khả năng tương thích với hệ thống On-Premise hiện tại, bạn có thể cài đặt Data Migration Assistant (DMA). Công cụ này phân tích cơ sở dữ liệu trên SQL Server của bạn và báo cáo bất kỳ vấn đề nào có thể ngăn chặn việc di chuyển lên Managed Instance.

Lợi ích thương mại Azure SQL Managed Instance cho phép quản trị hệ thống dành ít thời gian hơn cho các nhiệm vụ quản lý, vì dịch vụ này có thể thực hiện các nhiệm vụ này cho bạn hoặc làm cho chúng dễ dàng hơn rất nhiều. Các nhiệm vụ tự động bao gồm cài đặt và vá phần mềm hệ điều hành và hệ thống quản lý cơ sở dữ liệu, điều chỉnh động thông số phiên bản và cấu hình, sao lưu, sao chép cơ sở dữ liệu (bao gồm cả cơ sở dữ liệu hệ thống), cấu hình cao khả dụng và luồng dữ liệu giám sát trạng thái và hiệu suất.

Azure SQL Managed Instance gần như 100% tương thích với phiên bản Enterprise của SQL Server chạy tại chỗ.

Azure SQL Managed Instance hỗ trợ đăng nhập SQL Server Engine và đăng nhập tích hợp với Azure Active Directory (AD). Đăng nhập SQL Server Engine bao gồm tên người dùng và mật khẩu. Bạn phải nhập thông tin đăng nhập mỗi khi kết nối với máy chủ. Đăng nhập Azure AD sử dụng thông tin đăng nhập liên kết với đăng nhập máy tính hiện tại của bạn, vì vậy bạn không cần cung cấp thông tin này mỗi khi kết nối với máy chủ.

Azure SQL Database

Azure SQL Database là sản phẩm PaaS của Microsoft. Bạn tạo máy chủ cơ sở dữ liệu được quản lý trên đám mây, sau đó triển khai cơ sở dữ liệu của mình trên máy chủ đó.

Máy chủ cơ sở dữ liệu SQL là một cấu trúc logic, đóng vai trò là điểm quản lý trung tâm cho nhiều cơ sở dữ liệu đơn lẻ hoặc chia sẻ, đăng nhập, quy tắc tường lửa, quy tắc kiểm toán, chiến lược phát hiện mối đe dọa và nhóm failover.

Azure SQL Database có thể được sử dụng dưới dạng cơ sở dữ liệu đơn lẻ hoặc nhóm đàn hồi.

Cơ sở dữ liệu đơn lẻ Tùy chọn này cho phép bạn thiết lập và chạy nhanh một cơ sở dữ liệu SQL Server đơn lẻ. Bạn tạo và chạy máy chủ cơ sở dữ liệu trên đám mây và truy cập cơ sở dữ liệu thông qua máy chủ đó. Microsoft quản lý máy chủ, vì vậy tất cả những gì bạn cần làm là cấu hình cơ sở dữ liệu, tạo bảng và điền dữ liệu của bạn vào đó. Nếu bạn cần thêm dung lượng lưu trữ, bộ nhớ hoặc sức mạnh xử lý, bạn có thể mở rộng cơ sở dữ liệu. Theo mặc định, tài nguyên được phân bổ trước, và bạn thanh toán theo giờ cho các tài nguyên bạn yêu cầu. Bạn cũng có thể chỉ định cấu hình không có máy chủ. Trong cấu hình này, Microsoft tạo máy chủ riêng, có thể được chia sẻ bởi các cơ sở dữ liệu thuộc về các thuê bao Azure khác. Microsoft đảm bảo quyền riêng tư của cơ sở dữ liệu của bạn. Cơ sở dữ liệu của bạn sẽ tự động mở rộng và phân bổ hoặc hủy phân bổ tài nguyên theo nhu cầu.

Nhóm đàn hồi Tùy chọn này tương tự như Single Database, khác biệt ở chỗ theo mặc định, nhiều cơ sở dữ liệu có thể chia sẻ cùng một tài nguyên, chẳng hạn như bộ nhớ, không gian lưu trữ dữ liệu và sức mạnh xử lý. Những tài nguyên này được gọi là nhóm. Bạn tạo nhóm, và chỉ có cơ sở dữ liệu của bạn có thể sử dụng nhóm đó. Nếu nhu cầu tài nguyên của cơ sở dữ liệu của bạn thay đổi theo thời gian, mô hình này rất hữu ích và có thể giúp bạn giảm chi phí. Ví dụ, cơ sở dữ liệu bảng lương của bạn có thể cần nhiều sức mạnh CPU khi xử lý bảng lương vào cuối tháng, nhưng có thể ít hoạt động hơn vào các thời điểm khác. Bạn có thể có một cơ sở dữ liệu khác được sử dụng để chạy báo cáo. Khi các báo cáo được tạo, cơ sở dữ liệu này có thể hoạt động mạnh mẽ trong vài ngày giữa tháng, nhưng tải nhẹ hơn vào các thời điểm khác. Nhóm đàn hồi cho phép bạn sử dụng tài nguyên có sẵn trong nhóm, sau đó giải phóng tài nguyên khi xử lý hoàn tất.

Trường hợp sử dụng Azure SQL Database cung cấp cho bạn lựa chọn chi phí thấp nhất và ít quản lý nhất. Nó không hoàn toàn tương thích với cài đặt SQL Server On-Premise. Nó thường được sử dụng trong các dự án đám mây mới, trong đó thiết kế ứng dụng có thể thích nghi với bất kỳ thay đổi nào cần thiết cho ứng dụng.

Azure SQL Database thường được sử dụng cho:

  • Các ứng dụng đám m