Supabase là gì?
Supabase là nền tảng backend mã nguồn mở, cung cấp database PostgreSQL, xác thực người dùng, lưu trữ file và API tự động - tất cả trong một gói, không cần viết server. Gói miễn phí đủ dùng cho dự án cá nhân và prototype. Bài này giải thích cách nó hoạt động, giới hạn thực tế của free tier, và những trường hợp phù hợp để chọn Supabase.
Nếu bạn từng muốn có một cái database thật sự cho website hay app mà không phải tự dựng server, Supabase là một trong những lựa chọn thực tế nhất hiện nay. Không cần DevOps, không cần biết sâu về backend - bạn có thể tạo project, lấy API key và bắt đầu đọc/ghi dữ liệu trong vài phút. Quan trọng hơn: Supabase không phải một “hộp đen” - mọi thứ đều chạy trên PostgreSQL chuẩn, và bạn có thể tự host nếu muốn.
Supabase là gì?
Supabase là nền tảng Backend-as-a-Service (BaaS) mã nguồn mở, được ra mắt năm 2020 với mục tiêu là lựa chọn thay thế mã nguồn mở cho Firebase của Google. Điểm khác biệt lớn nhất: Supabase dùng PostgreSQL - một hệ quản trị cơ sở dữ liệu quan hệ (SQL) trưởng thành và cực kỳ mạnh - thay vì NoSQL như Firestore của Firebase.
Nền tảng này cung cấp toàn bộ những gì một ứng dụng web cần ở phía backend, gói lại trong một giao diện quản lý trực quan:
- Database: PostgreSQL với SQL Editor trực tiếp trên trình duyệt
- Authentication: Đăng nhập email/password, OAuth (Google, GitHub…), magic link
- Storage: Lưu trữ file (ảnh, video, tài liệu) với phân quyền linh hoạt
- Edge Functions: Chạy code server-side gần người dùng (Deno runtime)
- Realtime: Lắng nghe thay đổi database real-time qua WebSocket
- Vector / AI: Hỗ trợ pgvector cho ứng dụng AI và tìm kiếm ngữ nghĩa
Với developer, Supabase cung cấp auto-generated REST API và GraphQL API từ schema database - nghĩa là bạn tạo bảng dữ liệu, API tự động xuất hiện ngay, không cần viết endpoint thủ công.
Cách Supabase hoạt động
Khi bạn tạo một project trên Supabase, nền tảng này khởi tạo một PostgreSQL database riêng cho bạn, kèm theo toàn bộ layer middleware để expose database đó thành API:
Client (web/mobile app)
↓ HTTPS request
PostgREST API (auto-generated từ PostgreSQL schema)
↓
PostgreSQL Database
↑
Row Level Security (RLS) kiểm tra quyền
PostgREST là thành phần trung tâm - nó đọc schema PostgreSQL của bạn và tự động tạo REST API. Khi bạn thêm bảng products, API /products xuất hiện ngay lập tức. Khi bạn thêm cột price, API trả về price luôn.
Row Level Security (RLS) là cơ chế phân quyền ở tầng database. Thay vì viết logic “user chỉ được đọc data của mình” ở code ứng dụng, bạn viết policy trực tiếp vào PostgreSQL. Điều này khiến dữ liệu an toàn ngay cả khi client gọi API trực tiếp với anon key.
Ở phía client, bạn dùng Supabase JavaScript SDK (@supabase/supabase-js) hoặc SDK cho các ngôn ngữ khác (Python, Dart, Swift, Kotlin). Cú pháp đọc/ghi rất gọn:
const { data } = await supabase
.from('products')
.select('*')
.eq('category', 'tech')
Schema Visualizer trong Supabase Studio - xem toàn bộ cấu trúc database và quan hệ giữa các bảng trực quan.
Giới hạn gói Free - Chi tiết thực tế
Đây là phần quan trọng nhất nếu bạn đang cân nhắc dùng Supabase cho dự án cá nhân hay prototype.
Gói Free (miễn phí vĩnh viễn):
| Thành phần | Giới hạn |
|---|---|
| Số project active | 2 projects |
| Database storage | 500 MB |
| Bandwidth | 5 GB/tháng |
| Monthly Active Users (Auth) | 50,000 users |
| File storage | 1 GB |
| Edge Functions | 500,000 lần gọi/tháng |
| RAM | 500 MB (shared CPU) |
| Support | Community only |
Giao diện Supabase khi project free tier bị tạm dừng - resume chỉ cần 1 click.
Cảnh báo quan trọng nhất: Project trên free tier sẽ tự động bị tạm dừng (pause) sau 1 tuần không có hoạt động. Khi resume, database vẫn còn đó nhưng mất khoảng 1-2 giây khởi động lại. Điều này ổn cho project học tập nhưng không phù hợp cho production có người dùng thật.
Gói Pro ($25/tháng):
- 8 GB database, 250 GB bandwidth, 100 GB storage
- Không bị pause
- Daily backup tự động
- Dedicated support
Với hầu hết dự án cá nhân, side project, hoặc MVP: gói free đủ dùng. 500 MB PostgreSQL chứa được hàng triệu bản ghi thông thường. 50,000 MAU đủ cho một sản phẩm đang tăng trưởng trước khi cần nâng cấp.
Supabase phù hợp khi nào?
Nên dùng Supabase khi:
- Bạn cần database SQL thật sự: Nếu dữ liệu có quan hệ (user - order - product), PostgreSQL xử lý tốt hơn NoSQL nhiều. Viết JOIN query, trigger, function đều được.
- Cần Auth ngay không muốn tự build: Magic link, OAuth Google/GitHub, JWT - setup trong vài phút thay vì tự code từ đầu.
- Project solo hoặc nhóm nhỏ: Free tier 2 projects và 500 MB đủ cho phần lớn prototype và MVP.
- Muốn tự host sau này: Supabase là mã nguồn mở hoàn toàn. Bạn có thể deploy lên server riêng với Docker khi cần.
- Realtime features: Chat, notification, live dashboard - Supabase Realtime subscription dùng WebSocket, setup rất đơn giản.
- Kết hợp với AI/vector search: pgvector tích hợp sẵn, phù hợp để build ứng dụng AI với embedding search.
Không phải lựa chọn tốt nhất khi:
- Traffic cực cao: Shared infrastructure trên free/pro tier có giới hạn. Cần Enterprise hoặc tự host.
- Data phi cấu trúc phức tạp: Nếu toàn bộ data là JSON tự do không có schema cố định, Firebase/Firestore dễ hơn.
- Cần SLA nghiêm ngặt: Production với uptime cam kết cần ít nhất gói Pro, và đọc kỹ điều khoản.
SQL Editor với AI tích hợp - mô tả bằng lời, AI viết câu lệnh SQL và tạo bảng tự động.
Supabase vs Firebase - So sánh nhanh
| Tiêu chí | Supabase | Firebase |
|---|---|---|
| Database | PostgreSQL (SQL) | Firestore (NoSQL) |
| Mã nguồn mở | Có | Không |
| Tự host | Được | Không |
| Query phức tạp | SQL - rất mạnh | Limited |
| Real-time | Có | Có (mạnh hơn) |
| Auth | Đầy đủ | Đầy đủ |
| Vendor lock-in | Thấp | Cao (Google) |
| Free tier | Đủ dùng, tạm dừng sau 1 tuần | Hào phóng hơn |
Chọn Supabase nếu bạn ưu tiên SQL, open-source và muốn tránh lock-in vào hệ sinh thái Google. Chọn Firebase nếu bạn cần tích hợp sâu với Google Cloud hoặc đã quen NoSQL.
Câu hỏi thường gặp (FAQ)
Supabase free có bị hết hạn không?
Gói free không bị hết hạn theo thời gian. Tuy nhiên, project sẽ bị tạm dừng tự động nếu không có hoạt động trong 1 tuần liên tiếp. Khi resume, database vẫn còn nguyên vẹn. Nếu bạn truy cập project đều đặn (ít nhất 1 lần/tuần), project không bao giờ bị pause.
Supabase có thể dùng với Astro, Next.js, React không?
Được, Supabase có SDK chính thức cho JavaScript/TypeScript (@supabase/supabase-js) hoạt động tốt với mọi framework frontend: React, Next.js, Astro, Vue, SvelteKit. Ngoài ra còn có SDK cho Python, Dart (Flutter), Swift, Kotlin. Tích hợp rất đơn giản - chỉ cần Project URL và anon key.
Tôi không biết SQL, có dùng Supabase được không?
Được. Supabase có Table Editor - giao diện spreadsheet để tạo bảng và nhập dữ liệu mà không cần viết SQL. SDK JavaScript cũng có cú pháp chain đơn giản để query mà không cần biết SQL sâu. Tuy nhiên, để khai thác hết sức mạnh (JOIN, view, trigger), biết SQL cơ bản sẽ giúp rất nhiều.
Supabase có an toàn không khi dùng anon key trên frontend?
anon key được thiết kế để dùng trên client/frontend - nó không phải secret. Bảo mật thật sự nằm ở Row Level Security (RLS): bạn viết policy để kiểm soát user nào được đọc/ghi data gì. Nếu bật RLS đúng cách, ngay cả khi anon key bị lộ, dữ liệu vẫn được bảo vệ. service_role key mới là secret - chỉ dùng phía server, không bao giờ để trong frontend code.
Supabase Storage lưu được file gì? Giới hạn file size bao nhiêu?
Supabase Storage lưu được mọi loại file: ảnh, video, PDF, CSV, audio… Gói free có giới hạn 50 MB per file (upload đơn). Tổng storage là 1 GB. File được phục vụ qua CDN với URL công khai hoặc signed URL có thời hạn cho file private.
Tổng kết
Supabase là lựa chọn backend thực dụng cho developer muốn có đầy đủ database, auth, và storage mà không cần vận hành server. Gói free với 500 MB PostgreSQL, 50,000 MAU, và 5 GB bandwidth đủ cho đa số dự án cá nhân và giai đoạn MVP - chỉ cần lưu ý project tự pause sau 1 tuần không dùng. Nếu bạn đang build side project, prototype, hay muốn học backend thực tế, Supabase là điểm khởi đầu tốt nhất hiện nay.