Bài học hiện đang bằng tiếng Séc. Giao diện đã được dịch – nội dung bài học sẽ sớm có.

← Cấp 4 – Chuyên gia dữ liệu

Bài 1 / 6 ⏱ 20 phút Xem trước miễn phí

Tại sao dữ liệu biến mất khi khởi động lại

Tìm hiểu vì sao sổ lưu bút quên tin nhắn khi server dừng – và chúng ta sẽ làm gì về điều đó.

Chuyện gì đang xảy ra bên trong

Ở Cấp 3, chúng ta lưu tin nhắn trong một mảng trong bộ nhớ:

const vzkazy = [
  { jmeno: "Martin", text: "First message!" },
];

Cách này hoạt động tốt – miễn là server vẫn chạy. Nhưng khi bạn dừng server (Ctrl+C) rồi khởi động lại, mảng sẽ trống rỗng. Tin nhắn biến mất. Tại sao?

RAM (bộ nhớ của máy tính) giống như bảng trắng trong lớp học: khi bạn rời đi, ai đó sẽ lau sạch. Để lưu trữ lâu dài, bạn cần ổ đĩa – một tệp hoặc cơ sở dữ liệu.

💡

Ổ đĩa và bộ nhớ: tệp trên ổ đĩa vẫn còn sau khi khởi động lại. Mảng trong server.js thì không. Đó là lý do các website lớn dùng cơ sở dữ liệu – MySQL, PostgreSQL, SQLite. Chúng ta sẽ bắt đầu với SQLite: cơ sở dữ liệu trong một tệp duy nhất, không cần cài thêm server.

Xem thử: chuyện gì xảy ra sau khi khởi động lại

  1. Khởi động server từ bài sổ lưu bút (node server.js).
  2. Gửi tin nhắn mới qua React.
  3. Dừng server (Ctrl+C) rồi khởi động lại.
  4. Làm mới trang trong trình duyệt – tin nhắn đã biến mất.

Đây không phải lỗi trong code. Đó là đặc tính của bộ nhớ. Và giờ bạn đã hiểu vì sao cơ sở dữ liệu tồn tại.

Đến lượt bạn 💪

  1. Lặp lại thí nghiệm trên và ghi lại (có thể trong ghi chú của dự án) chính xác chuyện gì đã xảy ra.
  2. Mở server.js và tìm dòng có const vzkazy = [...]. Thêm comment: // CẢNH BÁO: dữ liệu này biến mất sau khi khởi động lại server!
  3. Nghĩ về dự án của bạn: điều gì không nên biến mất trên website trường/câu lạc bộ/nhật ký du lịch? (thời khóa biểu? ảnh? tin nhắn?) – liệt kê 2–3 thứ.

Kiểm tra: Bạn hiểu sự khác biệt giữa bộ nhớ (tạm thời) và ổ đĩa (lâu dài). Ở bài tiếp theo bạn sẽ học Git – để sao lưu code trên ổ đĩa và trên mạng. Sau đó SQLite – để lưu tin nhắn mãi mãi.

Những điều cần nhớ