CodeGym /Các khóa học /SQL SELF /Các loại hệ quản trị cơ sở dữ liệu: quan hệ và NoSQL

Các loại hệ quản trị cơ sở dữ liệu: quan hệ và NoSQL

SQL SELF
Mức độ , Bài học
Có sẵn

Có hai loại hệ quản trị cơ sở dữ liệu (Database Management System) chính: quan hệ và NoSQL. Loại đầu làm việc với bảng, mọi thứ rõ ràng từng cột — như Excel ấy. Loại thứ hai thì tự do hơn, không cần cấu trúc cứng nhắc. Rất tiện khi bạn không có schema dữ liệu rõ ràng hoặc nó thay đổi liên tục.

Mà này, NoSQL không có nghĩa là "không SQL" đâu nhé. Đúng hơn là "không chỉ SQL" (Not Only SQL). Nhiều hệ NoSQL vẫn hiểu truy vấn SQL, chỉ là cách hoạt động hơi khác chút thôi.

Ví dụ các hệ quản trị cơ sở dữ liệu phổ biến:

  • Quan hệ: PostgreSQL, MySQL, Microsoft SQL Server.
  • NoSQL: MongoDB, Cassandra, Redis.

Hệ quản trị cơ sở dữ liệu quan hệ

Cơ sở dữ liệu quan hệ (RDB) tổ chức dữ liệu dưới dạng bảng, mỗi dòng là một bản ghi riêng (hoặc một object), mỗi cột là một trường (attribute). Các bảng liên kết với nhau qua các khóa: khóa chính (để định danh bản ghi) và khóa ngoại (để liên kết bảng).

Đây là ví dụ bảng "Sinh viên" kinh điển trong hệ quản trị cơ sở dữ liệu quan hệ:

id name age group
1 Anna 21 KA-01
2 Eve 20 KA-02
3 Max 22 KA-01

Đặc điểm chính của hệ quản trị cơ sở dữ liệu quan hệ:

  • Dữ liệu được cấu trúc rất chặt chẽ.
  • Các mối liên kết giữa bảng được xác định bằng khóa.
  • SQL (Structured Query Language) được dùng để thao tác dữ liệu.

Ưu điểm

  1. Cấu trúc dữ liệu chặt chẽ: bảng đảm bảo mỗi object có bộ trường cố định. Quản lý dữ liệu dễ hơn nhiều.
  2. Tính toàn vẹn dữ liệu: nhờ khóa chính và khóa ngoại, database quan hệ tránh được dữ liệu không đồng nhất.
  3. Hỗ trợ chuẩn ACID: hệ quản trị cơ sở dữ liệu quan hệ đảm bảo giao dịch tin cậy, tuân thủ nguyên tắc atomicity, consistency, isolation, durability.
  4. Hỗ trợ truy vấn phức tạp: SQL cho phép thực hiện các thao tác select, sort, aggregate cực mạnh.

Hệ quản trị cơ sở dữ liệu quan hệ cực hợp khi dữ liệu có cấu trúc rõ ràng và cần mọi thứ khớp từng con số. Ví dụ, hệ thống ngân hàng không thể để mất gì cả — từng giao dịch phải được kiểm soát. Hoặc các hệ thống kế toán: hóa đơn, khách hàng, kho thường có cấu trúc cố định, lưu dưới dạng bảng rất tiện. Và tất nhiên, nhiều web app cũng vậy: danh sách user, sản phẩm, đơn hàng — tất cả đều hợp với bảng và liên kết chặt chẽ.

NoSQL Database

NoSQL (Not Only SQL) — là các hệ quản trị cơ sở dữ liệu không dùng mô hình quan hệ. Dữ liệu có thể lưu dưới dạng document, key-value, graph hoặc column. Ý tưởng là linh hoạt: bạn lưu dữ liệu kiểu gì cũng được, miễn là phù hợp với bài toán, không cần quy tắc cứng nhắc. Và tất nhiên, phải trả giá cho sự tự do đó.

Ví dụ lưu dữ liệu trong NoSQL (cho MongoDB):

{
  "id": 1,
  "name": "Alex",
  "age": 21,
  "group": "KA-01"
}

NoSQL Database rất đa dạng — tùy vào cách lưu dữ liệu. Ví dụ, document database như MongoDB làm việc với cấu trúc linh hoạt, dữ liệu lưu dưới dạng document, thường là JSON. Rất tiện nếu cấu trúc dữ liệu thay đổi từng bản ghi.

Key-value database như Redis thì giống như một kho khổng lồ các cặp "key:value". Rất hợp cho cache hoặc truy cập nhanh các setting đơn giản.

Nếu cần làm việc với các mối liên kết giữa object — ví dụ phân tích bạn bè trên mạng xã hội hoặc xây dựng route, — thì graph database như Neo4j là chân ái. Nó lưu thông tin dưới dạng mạng lưới node và edge, cực tiện cho kiểu dữ liệu này.

Còn column database như Apache Cassandra hoặc HBase thì lưu dữ liệu theo cột chứ không phải dòng. Cực kỳ hữu ích khi bạn xử lý lượng dữ liệu lớn và chỉ cần phân tích một số chỉ số nhất định — như trong analytics hoặc Big Data system.

Tại sao và khi nào nên chọn NoSQL

NoSQL database cực hợp ở những nơi mà hệ quản trị cơ sở dữ liệu quan hệ truyền thống bắt đầu "đuối". Có mấy điểm mạnh sau:

  1. Rất nhanh. NoSQL xử lý lượng dữ liệu khổng lồ cực tốt — truy vấn nhanh dù dữ liệu nhiều và không có cấu trúc như bảng Excel.
  2. Linh hoạt. Cấu trúc dữ liệu có thể thay đổi bất cứ lúc nào: hôm nay object có 3 trường, mai có 5 trường cũng không sao.
  3. Dễ mở rộng. Khi dữ liệu quá nhiều, chỉ cần chia ra nhiều server. Đó gọi là horizontal scaling, NoSQL cực thích kiểu này.
  4. Hợp với Big Data. Nếu bạn có luồng log, event, hành động user hoặc dữ liệu "thô" không có schema rõ ràng — NoSQL cân hết.

Những hệ quản trị cơ sở dữ liệu này đặc biệt hợp khi:

  • dữ liệu tăng nhanh và cấu trúc thay đổi (ví dụ phân tích log hoặc event),
  • cần tìm kiếm, tổng hợp thông tin nhanh (kiểu analytics),
  • dùng mạng lưới liên kết phức tạp như mạng xã hội (graph database là best choice).

Nói chung, nếu project của bạn giống một sinh vật sống hơn là bảng tính cứng nhắc, NoSQL có thể là thứ bạn cần.

So sánh hệ quản trị cơ sở dữ liệu quan hệ và NoSQL

Đặc điểm Hệ quản trị cơ sở dữ liệu quan hệ NoSQL Database
Lưu trữ dữ liệu Bảng, dòng, cột Document, graph, key-value, column
Ngôn ngữ truy vấn SQL Tùy hệ thống (ví dụ MongoDB Query)
Tính toàn vẹn dữ liệu Cao (khóa chính/khóa ngoại) Tùy hệ thống (không đảm bảo toàn vẹn)
Khả năng mở rộng Vertical scaling (nâng cấp server) Horizontal scaling (chia ra nhiều server)
Tính linh hoạt cấu trúc Cấu trúc cứng (bảng và trường cố định) Cấu trúc động (có thể thay đổi)
Hiệu năng Tối ưu cho dữ liệu có cấu trúc Cao khi dữ liệu lớn và ít cấu trúc
Ví dụ PostgreSQL, MySQL, Oracle Database MongoDB, Cassandra, Redis

Khi nào chọn hệ quản trị cơ sở dữ liệu quan hệ hoặc NoSQL?

Hệ quản trị cơ sở dữ liệu quan hệ:

  • Khi dữ liệu có cấu trúc chặt chẽ.
  • Khi cần hỗ trợ transaction.
  • Khi cần phân tích phức tạp bằng SQL.

NoSQL Database:

  • Khi cần linh hoạt về cấu trúc dữ liệu.
  • Khi mở rộng quan trọng hơn cấu trúc cứng nhắc.
  • Khi cần xử lý lượng dữ liệu lớn khó tổ chức thành bảng.

Có thể ví von thế này: hệ quản trị cơ sở dữ liệu quan hệ giống bảng Excel, mọi thứ chuẩn từng dòng cột. Còn NoSQL — như bảng ghi chú, muốn dán gì lên cũng được, từ note đến ảnh.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION