Nền Tảng Cơ Sở Dữ Liệu NoSQL Dành Cho Ứng Dụng Di Động
Cơ sở dữ liệu (Database) là kho lưu trữ và điều phối dữ liệu cốt lõi của một hệ thống số. Đối với lập trình viên React & React Native, mô hình NoSQL dạng tài liệu (Document-based) là bước chuẩn bị hoàn hảo nhất nhờ sự tương thích tự nhiên với cấu trúc dữ liệu JSON trong JavaScript.
1. Database
Hệ thống lưu trữ cấp cao nhất (Container) chứa toàn bộ các Collection con (ví dụ: studio, ThanhSonStudioDB).
2. Collection
Tập hợp các Document cùng miền nghiệp vụ, tương đương với Table trong SQL nhưng không ép buộc schema cứng nhắc.
3. Document
Bản ghi dữ liệu cụ thể dạng BSON/JSON, tương đương Row trong SQL. Luôn sở hữu một trường khóa chính độc nhất _id.
4. Field
Cặp thuộc tính Key - Value bên trong Document. Giá trị có thể là string, number, boolean, array hoặc object con lồng nhau.
Bảng Ánh Xạ Thuật Ngữ Giữa SQL Và NoSQL (MongoDB / Firestore)
| Đặc tính / Khái niệm | Cơ sở dữ liệu Quan Hệ (RDBMS / SQL) | Cơ sở dữ liệu Phi Quan Hệ (NoSQL / MongoDB) |
|---|---|---|
| Nơi chứa tổng | Database | Database |
| Cấu trúc nhóm | Table (Bảng với cột định sẵn) | Collection (Không ép cấu trúc cột) |
| Đơn vị bản ghi | Row / Record (Hàng) | Document (BSON / JSON Object) |
| Thuộc tính dữ liệu | Column (Cột cố định kiểu) | Field (Key-Value linh hoạt) |
| Khóa chính nhận dạng | PRIMARY KEY (id tự tăng hoặc UUID) | _id (ObjectId tự sinh trong MongoDB) |
Hệ Thống Thao Tác CRUD Trực Tiếp Trên MongoDB Shell (mongosh)
Trong MongoDB, mọi thao tác truy vấn đều tuân thủ cú pháp cốt lõi: db.<Tên_Collection>.<Hành_động>().
Các ví dụ thực hành được thầy Lê Thanh Sơn biên soạn trực tiếp theo bối cảnh quản lý Studio chụp ảnh cưới:
use("studio");
db.DichVu.insertOne({
maDichVu: "DV01",
tenDichVu: "Chụp ảnh cưới ngoại cảnh Tây Ninh",
giaTien: 5500000,
trangThai: true
});
db.DichVu.insertMany([
{ maDichVu: "DV02", tenDichVu: "Thuê váy cưới cao cấp", giaTien: 1200000 },
{ maDichVu: "DV03", tenDichVu: "Trang điểm cô dâu", giaTien: 800000, khuyenMai: "Tặng kèm hoa cài tóc" }
]);
// Lấy toàn bộ document
db.DichVu.find({});
// Lọc dịch vụ có giá tiền > 1.000.000 VNĐ
db.DichVu.find({ giaTien: { $gt: 1000000 } });
// Cập nhật: Tham số 1 (Bộ lọc), Tham số 2 ($set)
db.DichVu.updateOne(
{ maDichVu: "DV01" },
{ $set: { giaTien: 6000000 } }
);
// Xóa 1 document theo mã dịch vụ
db.DichVu.deleteOne({ maDichVu: "DV03" });