MƯỜI CHẶNG

Database — sổ điểm danh
khi có một triệu học sinh

Cô Hạnh chỉ có 200 học sinh trong sổ, vậy mà tìm một cuốn sách đã mất mười phút. Nếu là một thành phố cả triệu người, cuốn sổ đó phải trở thành thứ gì khác hẳn.

cô cú thủ thư của cả hệ thống
CHẶNG 1

Chuyện là thế này

Thư viện trường Ánh Dương vẫn dùng một cuốn sổ mượn sách viết tay, ghi tên học sinh, tên sách, ngày mượn, ngày trả.

Một hôm Minh chạy tới hỏi: "Cô ơi, cuốn Doraemon tập 5 ai đang giữ vậy cô?"

Cô Hạnh lật cuốn sổ dày cả trăm trang, dò từng dòng, từng dòng — mất gần 10 phút mới tìm ra đúng tên bạn đang mượn.

Minh đứng chờ... ~10 phút
Cô Hạnh dò từng dòng trong cuốn sổ dày cả trăm trang, trong khi Minh đứng chờ.
CHẶNG 2

Rắc rối xuất hiện

Trường Ánh Dương chỉ có 200 học sinh — mà đã mất 10 phút cho một câu hỏi.

Minh chợt nghĩ: nếu đây không phải một thư viện trường, mà là hệ thống quản lý của cả một thành phố, với cả triệu người — thì phải chờ bao lâu?

10 phút 200 học sinh ~35 NGÀY 1 triệu người
Nếu vẫn lật sổ tuần tự từng dòng, đông hơn 5.000 lần thì thời gian tìm cũng dài ra gần 5.000 lần.
CHẶNG 3

Tại sao lại vậy nhỉ?

Cuốn sổ tay ghi đủ mọi thông tin cần thiết, không thiếu chỗ nào cả — vậy sao tìm vẫn chậm đến thế?

✓ tên học sinh ✓ tên sách ✓ ngày mượn ✓ ngày trả đủ thông tin, không thiếu gì ? vậy sao vẫn chậm?
Sổ không thiếu thông tin gì — vậy điều gì khiến việc tìm vẫn chậm đến vậy?
CHẶNG 4

À!

Vấn đề không nằm ở việc thiếu thông tin.

Vấn đề nằm ở CÁCH LƯU TRỮ: một cuốn sổ giấy, phải lật tuần tự từng trang — cách này ổn với vài trăm dòng, nhưng không còn phù hợp khi số dòng dữ liệu tăng lên quá lớn. Cần một cách lưu và tìm khác hẳn, nhanh hơn nhiều so với lật từng trang.

giấy tờ xếp lộn xộn bảng có cấu trúc
Cùng một lượng thông tin — nhưng lưu lộn xộn hay lưu có cấu trúc quyết định tốc độ tìm.
CHẶNG 5

Gọi tên nó

Cái mà một hệ thống lớn cần, gọi là DATABASE (cơ sở dữ liệu).

Đó là một "sổ điện tử" được thiết kế đặc biệt để lưu số lượng dữ liệu rất lớn, và tìm/truy xuất cực nhanh — thay vì lật tuần tự như sổ giấy.

sổ giấy database — "sổ điện tử"
Cùng một việc lưu và tra thông tin — nhưng database được thiết kế riêng để làm việc đó cực nhanh.
CHẶNG 6

Bản chất thật sự

Database tổ chức dữ liệu thành các bảng có cấu trúc rõ ràng: mỗi dòng là một bản ghi, mỗi cột là một loại thông tin.

Nó còn dùng các kỹ thuật đánh chỉ mục (giống mục lục cuối sách, sẽ nói kỹ ở bài Tìm kiếm & Sắp xếp) để tìm đúng dòng cần trong một phần rất nhỏ của giây — kể cả khi có hàng triệu, hàng tỷ dòng.

Sổ giấy — lật từng dòng Minh — Doraemon 5 — 12/3 Lan — Toán vui — 14/3 Tùng — Sách khoa học — 15/3 ... còn 197 dòng nữa ... Database — có chỉ mục tên · sách · ngày (đã đánh chỉ mục) → tra "Doraemon 5" ra ngay dòng 1
Không phải máy tính "nhanh hơn cô Hạnh" — mà là cách tổ chức dữ liệu được thiết kế riêng cho việc tìm nhanh.
CHẶNG 7

Một ví dụ khác

Hệ thống tra điểm thi của Sở/Bộ Giáo dục lưu điểm của hàng triệu học sinh cả nước. Ngày công bố điểm, mỗi học sinh tra đúng điểm của mình gần như ngay lập tức — dù hệ thống đang phục vụ hàng triệu người tra cùng lúc.

HỆ THỐNG ĐIỂM THI 7.5 9.0 6.5 8.5 mỗi bạn nhận đúng điểm của mình, gần như ngay lập tức
Hàng triệu học sinh cùng tra cứu, mỗi người vẫn nhận đúng kết quả của riêng mình rất nhanh.
CHẶNG 8

Nếu không có nó thì sao

Nếu vẫn dùng "sổ giấy điện tử" kiểu lưu tuần tự không có cấu trúc, một hệ thống phục vụ hàng triệu người dùng (ngân hàng, mạng xã hội) sẽ chậm đến mức không thể dùng được — tra một thông tin có khi mất hàng giờ thay vì một giây.

HÀNG GIỜ CHỜ 😟 😕 😩 😟 😕 😩 ai cũng xếp hàng chờ — không hệ thống nào chịu nổi
Không có database, một hệ thống đông người dùng sẽ nghẽn cứng — mọi người cùng chờ, không chỉ một mình cô Hạnh.
CHẶNG 9

Em đã gặp nó ở đâu rồi

Tra cứu điểm thi trên website Sở/Bộ Giáo dục; tài khoản ngân hàng hiện đúng số dư ngay lập tức dù ngân hàng có hàng triệu khách; danh bạ liên hệ trong điện thoại.

🎓 tra điểm thi 🏦 ứng dụng ngân hàng 📱 danh bạ điện thoại
Ba chỗ rất quen thuộc — mỗi nơi đều có một database đứng phía sau.

Tự kiểm tra bản chất

Bấm vào ô em nghĩ là đúng.

1. Vì sao database tìm nhanh hơn hẳn một cuốn sổ giấy, dù cả hai đều lưu đủ thông tin?

2. Nếu một hệ thống chỉ có 20 học sinh, có bắt buộc phải dùng database phức tạp không?

3. Mỗi dòng trong một bảng dữ liệu thường ứng với gì?

Câu hỏi của em sẽ hiện ở đây, chỉ lưu trên máy của em thôi.

Cuộn nốt xuống dưới nhé — sắp xong trang này rồi!

CHẶNG 10

Kể lại cho bạn trong 30 giây

Database là cuốn sổ tay, chỉ khác là nó có thể lật đúng trang trong một phần triệu giây.
1 phần triệu giây
Vẫn là "cuốn sổ" — chỉ là lật trang nhanh hơn gấp hàng triệu lần.