D1
Nó là gì
Hãy hình dung một bảng tính với các hàng và cột gọn gàng, cho phép ứng dụng của bạn đặt những câu hỏi chính xác, kiểu như "hiển thị mọi đơn hàng đã thanh toán trong tháng Sáu." D1 là cơ sở dữ liệu (không máy chủ) của Cloudflare — kho bảng biểu có thể truy vấn, có tổ chức đó — được xây dựng trên nền SQLite. ("Serverless" nghĩa là bạn không cần thiết lập hay duy trì bất kỳ máy chủ nào — nhà cung cấp lo hết việc đó.) SQL (Structured Query Language — Ngôn ngữ Truy vấn Có cấu trúc) là ngôn ngữ chuẩn để đặt câu hỏi cho cơ sở dữ liệu. Bạn tạo một cơ sở dữ liệu, gắn (bind) nó vào một Worker hoặc dự án Pages, rồi truy vấn bằng SQL thuần qua một (Application Programming Interface — Giao diện Lập trình Ứng dụng, tức tập hợp các lệnh bạn gọi) JavaScript nhỏ gọn. Không có máy chủ nào cần định cỡ, không có connection pool (nhóm kết nối) nào cần quản lý — Cloudflare lo việc lưu trữ, sao chép và mở rộng quy mô, còn bạn chỉ trả tiền cho số hàng dữ liệu mình đọc và ghi.
Điểm mạnh
- SQL thực thụ (phương ngữ SQLite) — quen thuộc với
SELECT,JOIN, giao dịch (transaction), và chỉ mục (index). - Serverless: không cần cấp phát tài nguyên trước, không giới hạn số kết nối, có thể co về không khi không dùng đến.
- Tích hợp chặt chẽ với Workers và Pages chỉ qua một liên kết (binding) duy nhất.
- Read replication (sao chép chỉ đọc) đặt các bản sao gần người dùng để đọc dữ liệu với độ trễ thấp.
- Chi phí rẻ cho khối lượng công việc ứng dụng điển hình, có gói miễn phí dùng được.
Đánh đổi
- Ngữ nghĩa SQLite: tập dữ liệu khổng lồ và mức độ ghi đồng thời rất nặng không phải là thế mạnh của nó.
- Giới hạn kích thước theo từng cơ sở dữ liệu nghĩa là dữ liệu rất lớn có thể cần sharding (chia nhỏ ra nhiều cơ sở dữ liệu) hoặc dùng R2 (dịch vụ lưu trữ tệp của Cloudflare).
- Mới hơn Postgres/MySQL, nên công cụ hỗ trợ và hệ sinh thái vẫn đang hoàn thiện dần.
- Truy cập tốt nhất là từ (biên mạng); dùng từ bên ngoài Cloudflare kém tự nhiên hơn.
Khi nào nên dùng
Chọn D1 cho dữ liệu ứng dụng trong một dự án lưu trữ trên Cloudflare: hồ sơ người dùng, nội dung, cài đặt, siêu dữ liệu phiên ( metadata) — bất cứ thứ gì phù hợp với mô hình quan hệ và sống cùng ứng dụng Workers hoặc Pages của bạn.
Độ phù hợp với vibe coding
D1 là lựa chọn mặc định vững chắc khi một (tác nhân AI) đã xây dựng trên nền Workers, vì cơ sở dữ liệu, schema (lược đồ), và các câu truy vấn đều nằm trong cùng một dự án. Hãy yêu cầu agent giữ các migration (bản thiên di lược đồ) trong các tệp .sql có đánh phiên bản, và áp dụng chúng bằng Wrangler, để schema có thể tái tạo được. Việc gắn binding giúp truy vấn chỉ gọn trong một dòng lệnh bên trong handler.
# wrangler.toml
[[d1_databases]]
binding = "DB"
database_name = "app-db"
database_id = "your-d1-id"
# Create a DB and run a migration
npx wrangler d1 create app-db
npx wrangler d1 execute app-db --file=./schema.sql