Trang chủ
PHASE 3: ĐI SÂU VÀO HỆ THỐNG (DAY 51 - 75)/Ngày 68/100
DAY 68🇯🇵 NoSQL (MongoDB/Redis)
NoSQL & Distributed Data
68%
Quảng cáo • Advertisement
📢 Sponsor Ad
Google AdSense
lesson.content.title
lesson.content.subtitle
🎯 Mục tiêu bài học
Hiểu sự khác biệt tư duy giữa SQL (Quan hệ) và NoSQL (Phi quan hệ).
1. MongoDB Internals (Document Store)
Dữ liệu lưu dạng BSON (Binary JSON).
- Schema-less: Không cần định nghĩa cột trước. Dòng này có 3 cột, dòng kia có 5 cột cũng được. -> Linh động cho Startup.
- Embedding vs Referencing:
- SQL: Luôn Referencing (JOIN).
- Mongo: Ưu tiên Embedding (Nhúng comment vào bài Post luôn). Đọc 1 phát ra hết (Nhanh). Nhược điểm: Document bị to quá giới hạn 16MB.
2. Sharding (Phân mảnh dữ liệu)
Khi bảng có 1 tỷ dòng, 1 server chứa không nổi. Phải chia ra 10 server (Shards).
| Chiến thuật | Cách làm | Ưu/Nhược |
|---|---|---|
| Range Sharding | Chia theo ID: 1-1M (S1), 1M-2M (S2)... | Ưu: Query theo dải tốt. Nhược: Hotspot (Nếu User mới đều nằm ở S10 -> S10 chết). |
| Hashed Sharding | Băm ID: Hash(ID)%10. | Ưu: Dữ liệu dàn đều tuyệt đối. Nhược: Không Query theo dải được. |
3. Redis (Key-Value Cache)
Dữ liệu nằm trên RAM. Siêu nhanh (<1ms). Nhưng mất điện là mất hết.
Persistence (Lưu đĩa):
- RDB (Snapshot): 5 phút chụp ảnh RAM 1 lần lưu ra đĩa. (Nhanh, nhưng nếu sập thì mất 5 phút dữ liệu cuối).
- AOF (Append Only File): Ghi log từng lệnh (SET a 1). (An toàn, nhưng file Log rất to, khởi động lại lâu).
🔥 Interview Q&A
Q: Khi nào nên dùng MongoDB thay vì MySQL?
A: 1. Khi dữ liệu không có cấu trúc cố định (Log, Sensor Data). 2. Khi cần Write Throughput cực cao (Mongo ghi nhanh hơn do không tốn công check Constraint/Transaction phức tạp như SQL - dù bản mới đã có Transaction). 3. Khi cần Scale ngang dễ dàng (Sharding tích hợp sẵn).
Quảng cáo • Advertisement
📢 Ad Space
Google AdSense