1) Problem Clarification / Làm rõ bài toán
EN
System architects must choose between SQL (relational) and NoSQL (non-relational) depending on:
- consistency needs
- scale
- data model
- workload patterns
VI
Kiến trúc sư phải chọn giữa SQL (quan hệ) và NoSQL (phi quan hệ) dựa trên:
- độ nhất quán
- scale
- kiểu dữ liệu
- pattern workload
2) SQL Model Overview / Tổng quan SQL
EN
SQL databases (PostgreSQL, MySQL) provide:
✔ ACID transactions
✔ Joins
✔ strong consistency
✔ complex relational constraints
Best for:
- finance
- booking systems
- user identity / auth
- inventory ledger
VI
SQL cung cấp:
✔ transaction ACID
✔ join
✔ strong consistency
✔ constraint
Phù hợp cho:
- tài chính
- hệ thống booking
- identity/auth
- tồn kho
3) NoSQL Model Overview / Tổng quan NoSQL
EN
NoSQL databases like Cassandra, DynamoDB, Mongo:
✔ horizontal scale
✔ schema-flexible
✔ optimized for specific access patterns
✔ eventual consistency available
Good for:
- analytics
- logs
- social feeds
- user-generated content
- IoT telemetry
VI
NoSQL như Cassandra/Mongo/Dynamo:
✔ scale ngang
✔ schema linh hoạt
✔ tối ưu theo pattern
✔ eventual consistency
Phù hợp cho:
- analytics
- logs
- social feed
- nội dung user
- IoT
4) CAP Theorem Perspective / Góc nhìn CAP
EN
| SQL | CP (Consistency + Partition Tolerance) |
|---|---|
| NoSQL | AP/CP depending on engine |
Choosing consistency model is fundamental.
VI
| SQL | CP (Consistency + Partition tolerance) |
|---|---|
| NoSQL | AP hoặc CP tuỳ DB |
Chọn consistency model là cốt lõi.
5) Scalability Trade-offs / Thương lượng về scale
EN
SQL struggles with:
- horizontal scale
- partitioning
- distributed write load
NoSQL built for:
- massive writes
- sharding
- geo distribution
VI
SQL khó:
- scale ngang
- partition
- load ghi phân tán
NoSQL sinh ra để:
- chịu viết nhiều
- sharding
- multi region
6) Data Modeling Trade-off / Mô hình dữ liệu
EN
SQL:
✔ normalized
✔ join-heavy
✔ integrity constraints
NoSQL:
✔ denormalized
✔ duplication for fast reads
✔ no foreign keys
✔ query-driven schema
VI
SQL:
✔ normalized
✔ join nhiều
✔ constraint
NoSQL:
✔ denormalized
✔ duplication để đọc nhanh
✔ không FK
✔ schema theo query
7) When to pick SQL? / Khi nào chọn SQL?
EN
Pick SQL when:
- monetary transactions
- inventory where oversell unacceptable
- reporting variance risk
- relational integrity required
Examples: banking, accounting, booking.
VI
SQL phù hợp:
- giao dịch tài chính
- tồn kho / booking
- rủi ro báo cáo
- integrity cao
Ví dụ: bank, accounting, booking.
8) When to pick NoSQL? / Khi nào chọn NoSQL?
EN
Pick NoSQL when:
- huge writes or reads
- schema flexible
- media-heavy content
- events, IoT, logs
Examples: news feed, analytics, session store.
VI
NoSQL phù hợp:
- đọc/ghi khủng
- schema linh hoạt
- media
- event, IoT
Ví dụ: feed, analytics, session.
9) Polyglot Persistence / Kết hợp đa DB
EN
Best architectures use both:
✔ SQL for strong data
✔ NoSQL for high-throughput / read-heavy data
Example: Uber → MySQL for trips, Cassandra for events
VI
Hệ thống tốt nhất kết hợp cả hai:
✔ SQL cho dữ liệu cần đảm bảo
✔ NoSQL cho high-throughput
Ví dụ: Uber dùng MySQL + Cassandra
10) Sharding SQL / Sharding SQL
EN
When SQL grows:
- application-level sharding
- id hashing
- lookup routing service
Require sophisticated replication & schema migration.
VI
Khi SQL lớn:
- sharding theo app
- hash id
- service routing lookup
Cần migration & replication tốt.
11) NoSQL Trade-offs / Mặt trái của NoSQL
EN
- eventual consistency
- complex failure handling
- no joins → duplication
- awkward schema evolution
VI
Nhược điểm:
- eventual consistency
- xử lý lỗi phức tạp
- duplication vì không join
- schema evolution không dễ
12) Example Scenario / Ví dụ dùng thực tế
EN
Design a feed system:
- SQL stores user/profile
- NoSQL stores feed items & engagement log
Design an ecommerce checkout:
- SQL for order + payment
- NoSQL for clickstream analytics
VI
Feed:
- SQL cho user/profile
- NoSQL cho feed & interaction
E-commerce:
- SQL cho order/payment
- NoSQL cho clickstream
13) Future Trends / Xu hướng tương lai
EN
- NewSQL (CockroachDB, Spanner) bridges gap
- auto-sharding SQL
- multi-model DBs emerging
VI
Xu hướng:
- NewSQL (Spanner/Cockroach) hợp nhất
- SQL auto shard
- DB multi-model
[…] SQL vs NoSQL Scalability Trade-offs in System Design […]