+1

Database 101: Nhập môn Cơ sở dữ liệu cho anh em mới bắt đầu

Chào các bạn,

Ngày mới học code, mình thường lưu dữ liệu vào các biến hoặc ghi ra file .txt. Nghe thì có vẻ ổn cho đến khi dữ liệu lên tới hàng nghìn dòng, hoặc khi có hai người cùng sửa file một lúc. Đó chính là lúc mình nhận ra: Chúng ta cần một "kho chứa" thông minh hơn.

Hôm nay, hãy cùng mình giải ngố những khái niệm cơ bản nhất về Database nhé!

1. Database là gì? Nó có phải là Excel không?

Nói một cách đơn giản, Database là một tập hợp dữ liệu được tổ chức có cấu trúc, giúp chúng ta dễ dàng truy cập, quản lý và cập nhật.

Nhiều người hay nhầm lẫn Database với Excel. Thực tế, Excel là công cụ tính toán và trình bày dữ liệu cho một người dùng. Còn Database được thiết kế để lưu trữ khối lượng dữ liệu khổng lồ, hỗ trợ hàng nghìn người truy cập cùng lúc và đảm bảo tính an toàn cực cao.

2. DBMS - "Ông quản gia" của dữ liệu

Bạn không trực tiếp thò tay vào ổ đĩa để lấy dữ liệu. Bạn phải thông qua một phần mềm trung gian gọi là DBMS (Database Management System).

image.png

DBMS giống như một ông quản gia tận tụy: Bạn chỉ cần đưa yêu cầu (bằng ngôn ngữ Query), ông ấy sẽ đi tìm, lọc, sắp xếp và đưa lại kết quả cho bạn. Những cái tên đình đám như MySQL, PostgreSQL, MongoDB hay Oracle thực chất là các DBMS.

3. Hai "bang phái" lớn: SQL vs. NoSQL

Thế giới Database hiện nay chia làm hai trường phái chính, mỗi bên có một thế mạnh riêng:

  • Relational Database (SQL): Dữ liệu được lưu trong các bảng (Table) có hàng và cột rõ ràng, có mối quan hệ (Relation) chặt chẽ với nhau.
  • Đặc điểm: Rất kỷ luật, dữ liệu phải đúng kiểu, đúng cấu trúc.
  • Phù hợp: Các hệ thống cần sự chính xác tuyệt đối như Ngân hàng, Thương mại điện tử.
  • Non-relational Database (NoSQL): Dữ liệu được lưu trữ linh hoạt hơn dưới dạng Document (giống JSON), Key-Value, hoặc Graph.
  • Đặc điểm: Tự do, không cần khai báo schema cứng nhắc từ đầu, dễ dàng mở rộng (Scale).
  • Phù hợp: Các hệ thống Big Data, Mạng xã hội, hoặc các dự án cần phát triển nhanh (Agile).

4. Những thuật ngữ "nằm lòng"

Khi làm việc với Database (đặc biệt là SQL), bạn sẽ gặp các khái niệm này liên tục:

  • Table (Bảng): Nơi chứa dữ liệu về một đối tượng (ví dụ: bảng Users, bảng Orders).
  • Row/Record (Dòng): Một thực thể duy nhất trong bảng (ví dụ: thông tin của bạn Nguyễn Văn A).
  • Column/Field (Cột): Các thuộc tính của đối tượng (ví dụ: email, password, created_at).
  • Primary Key (Khóa chính): Một ID duy nhất để phân biệt dòng này với dòng khác (không được trùng nhau).
  • Foreign Key (Khóa ngoại): "Sợi dây" liên kết bảng này với bảng kia (ví dụ: cột user_id trong bảng Orders trỏ về bảng Users).

5. Chuẩn ACID - Lời thề của Database

Tại sao khi bạn chuyển tiền, tiền bên bạn trừ thì bên kia chắc chắn phải cộng (hoặc nếu lỗi thì cả hai đều không đổi)? Đó là nhờ tính chất ACID:

  1. Atomicity (Tính nguyên tử): Một giao dịch (Transaction) phải thành công hết hoặc thất bại hết, không có chuyện lửng lơ ở giữa.
  2. Consistency (Tính nhất quán): Dữ liệu phải luôn đúng sau mỗi thao tác.
  3. Isolation (Tính cô lập): Các giao dịch diễn ra đồng thời không được "đá" nhau.
  4. Durability (Tính bền vững): Một khi đã báo thành công, dữ liệu phải được lưu xuống đĩa cứng, kể cả khi mất điện ngay sau đó.

Lời kết

Database là một thế giới cực kỳ rộng lớn và thú vị. Việc chọn đúng loại Database và thiết kế cấu trúc tốt có thể quyết định sự thành bại của một hệ thống triệu người dùng.

Hy vọng bài viết này đã giúp các bạn có cái nhìn tổng quan nhất về "trái tim" của mọi ứng dụng. Ở các bài sau, mình sẽ đi sâu hơn vào cách tối ưu hóa Index và các câu query "thần thánh" nhé!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí