Tech & Tools

Supabase là gì? Database, Auth và Storage miễn phí cho dự án

Supabase là nền tảng backend open-source thay thế Firebase, dùng PostgreSQL thật sự. Tìm hiểu cách hoạt động, giới hạn gói free và khi nào nên dùng.

🇬🇧 English

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')

Supabase Schema Visualizer - hiển thị các bảng và quan hệ trong database 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ầnGiới hạn
Số project active2 projects
Database storage500 MB
Bandwidth5 GB/tháng
Monthly Active Users (Auth)50,000 users
File storage1 GB
Edge Functions500,000 lần gọi/tháng
RAM500 MB (shared CPU)
SupportCommunity only

Supabase free tier dashboard - thông báo project bị tạm dừng do không hoạt động 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.

Supabase AI SQL Editor - viết SQL bằng prompt ngôn ngữ tự nhiê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íSupabaseFirebase
DatabasePostgreSQL (SQL)Firestore (NoSQL)
Mã nguồn mởKhông
Tự hostĐượcKhông
Query phức tạpSQL - rất mạnhLimited
Real-timeCó (mạnh hơn)
AuthĐầy đủĐầy đủ
Vendor lock-inThấpCao (Google)
Free tierĐủ dùng, tạm dừng sau 1 tuầnHà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.

Liên kết

✦ Miễn phí

Muốn nhận thêm kiến thức như thế này?

Mình tổng hợp AI, marketing và tech insights mỗi tuần - gọn, có gu.

Không spam. Unsubscribe bất cứ lúc nào.