
SQLite là cơ sở dữ liệu nhúng phổ biến nhất thế giới, chạy trên hàng tỷ thiết bị từ điện thoại, trình duyệt, IoT đến ứng dụng desktop. Khác với MySQL hay PostgreSQL, SQLite không cần server riêng — toàn bộ database gói gọn trong một file duy nhất, zero-config, hỗ trợ ACID đầy đủ. Theo ước tính của SQLite Consortium, hơn 1+ tỷ database SQLite đang hoạt động tại bất kỳ thời điểm nào — con số vượt xa tổng số người dùng internet toàn cầu.
Tại sao SQLite khác biệt?
SQLite không cạnh tranh với client/server database. Nó cạnh tranh với fopen() — cách truyền thống lưu dữ liệu vào file. Ưu điểm cốt lõi:
- Zero-configuration: Không cài đặt, không daemon, không config file. Chỉ cần copy binary
sqlite3là chạy. - Single-file database: Schema, dữ liệu, index gói trong 1 file. Backup = copy file. Di chuyển giữa máy = copy file.
- Cross-platform stable format: File format big-endian/little-endian ổn định, không thay đổi qua các phiên bản. Oracle khuyên dùng làm Application File Format chuẩn.
- ACID transactions: Đảm bảo toàn vẹn dữ liệu ngay cả khi mất điện giữa chừng — WAL mode cho phép concurrent read khi write.
- Tiny footprint: Library ~600KB (tùy compile options). Nhanh hơn filesystem I/O trực tiếp trong nhiều trường hợp nhờ page cache và B-tree tối ưu.
- Public domain: Mã nguồn hoàn toàn miễn phí, không license hạn chế. SQLite Consortium duy trì long-term support.

Khi nào dùng SQLite?
Theo tài liệu chính thức, SQLite phù hợp cho:
| Use Case | Mô tả |
|---|---|
| Embedded devices & IoT | Điện thoại, smartwatch, xe hơi, drone, thiết bị y tế — chạy không cần admin |
| Application file format | Thay thế custom binary format bằng SQL có cấu trúc, dễ truy vấn, dễ mở rộng |
| Website traffic thấp/trung bình | ~200 SQL requests/page, SQLite xử lý hàng nghìn requests/giây trên hardware thường |
| Data transfer & cache | Gửi database qua email, dùng làm cache local cho app offline-first |
| Teaching SQL | Sinh viên tạo DB tùy ý, gửi file cho giảng viên chấm bài |
| Testing & CI/CD | Spin up database tức thì cho unit test, không cần Docker/MySQL container |
| Edge computing | Xử lý dữ liệu tại edge node, sync về central khi online |
| Desktop apps | VS Code, Firefox, Chrome, Adobe Lightroom dùng SQLite cho settings, history, cache |
| File formats | Adobe XD, Sketch, Figma cache files |
Khi nào KHÔNG dùng SQLite
- High concurrency writes: Nhiều process ghi đồng thời (SQLite lock toàn bộ file khi write, WAL giúp read không block write nhưng write vẫn serialize)
- Client/server architecture: Cần kết nối mạng từ nhiều máy khách — dùng PostgreSQL/MySQL
- Terabyte-scale data: Giới hạn 281 TB lý thuyết, nhưng thực tế hiệu năng giảm trước mốc này do B-tree depth
- Complex user management: Cần GRANT/REVOKE, row-level security, column encryption
- Distributed transactions: Cần 2-phase commit across multiple databases
- Geo-replication: Cần multi-master replication automatic

WAL Mode: Đột phá hiệu năng cho read-heavy workload
Write-Ahead Logging (WAL) mode thay đổi game cho SQLite concurrency. Thay vì rollback journal (ghi undo log), WAL ghi thay đổi vào file -wal riêng. Kết quả:
- Readers không bao giờ block writers, writers không block readers
- Checkpoint tự động gom
-walvào main DB file định kỳ - Hiệu năng read scale gần như linear với số reader process
- Bật bằng:
PRAGMA journal_mode=WAL;
Ví dụ thực tế: Tạo và sử dụng SQLite database
# Tạo database mới
sqlite3 app.db < schema.sql"
SQLite3 CLI cung cấp các lệnh tiện ích: .schema, .tables, .indices, .dump, .backup. Trong ứng dụng, dùng parameterized query để tránh SQL injection.
SQLite trong thực tế: Những con số gây ngạc nhiên
- 1+ tỷ databases hoạt động tại bất kỳ thời điểm nào (theo ước tính SQLite Consortium)
- Mọi iPhone, Android, Mac, Windows 10+, Chrome, Firefox, Safari đều nhúng SQLite
- Airbus A350, Tesla, spacecraft đều dùng SQLite cho avionics/logging
- Fossil SCM (DVCS của SQLite team) dùng SQLite làm backend thay vì Git object store
- Android contacts, SMS, call log = SQLite databases
- iOS Core Data default backing store = SQLite
- Chrome history, bookmarks, cookies = SQLite databases
Kết luận
SQLite không phải “database nhẹ cho project nhỏ”. Nó là cơ sở hạ tầng dữ liệu vô hình vận hành thế giới số hiện đại. Hiểu rõ thế mạnh/yếu điểm giúp bạn chọn đúng công cụ: dùng SQLite cho local-first, embedded, low-concurrency, edge computing; chuyển sang PostgreSQL khi cần scale write, multi-user, enterprise features, distributed transactions, geo-replication.
Các ORM và framework hỗ trợ SQLite
Hầu hết ngôn ngữ phổ biến đều có ORM hỗ trợ SQLite tốt:
- Python: SQLAlchemy, Django ORM, Peewee — django.db backend native SQLite
- JavaScript/TypeJS: Prisma, Drizzle, Kysely, better-sqlite3
- Go: GORM, sqlx — Go stdlib
database/sqlcó driver SQLite - Rust: rusqlite, SQLx, diesel
- Java/Kotlin: Room (Android), JOOQ, JDBC driver
Mọi framework đều xem SQLite như first-class citizen. Chọn ORM phù hợp stack, binding wrap sqlite3 C library tự động.
Nguồn: SQLite About | Appropriate Uses For SQLite | SQLite Faster Than Filesystem | Write-Ahead Logging | SQLite3 CLI
