
Supabase là gì? Backend-as-a-Service mã nguồn mở thay thế Firebase
Supabase là nền tảng Backend-as-a-Service (BaaS) mã nguồn mở, được xây dựng trên PostgreSQL — cơ sở dữ liệu quan hệ mạnh mẽ nhất thế giới. Được mệnh danh là “Firebase thay thế mở”, Supabase cung cấp database, authentication, realtime subscriptions, storage, edge functions và vector embeddings — tất cả trong một gói, tự host được, không bị giam vendor.

Khởi động năm 2020 bởi Paul Copplestone và Ant Wilson, Supabase đã vượt mốc 70k+ stars trên GitHub và được hàng nghìn công ty sử dụng (Vercel, Netlify, Railway, Fly.io…). Khác với Firebase (NoSQL, độc quyền Google), Supabase dùng PostgreSQL chuẩn SQL — bạn có toàn quyền truy vấn, index, constraint, stored procedure, materialized view như một DB bình thường.
Tại sao developer chọn Supabase thay vì Firebase?
- PostgreSQL gốc: Không abstraction leaky. Viết SQL thuần, dùng pgvector cho AI, PostGIS cho GIS, partitioned table cho big data.
- Mã nguồn mở (MIT): Self-host trên Docker, Kubernetes, Coolify, CapRover, Portainer — không phí vendor, không vendor lock-in.
- Realtime thực sự: PostgreSQL WAL (Write-Ahead Log) + publication/subscription → thay đổi DB push ngay tới client qua WebSocket.
- Auth hoàn chỉnh: Email/password, magic link, OAuth (GitHub, Google, Apple, Azure…), MFA, SSO SAML/OIDC, row-level security (RLS) tích hợp sâu.
- Edge Functions (Deno): Chạy code TypeScript tại edge (gần user), cold start < 1ms, import npm packages trực tiếp.
- Vector & AI ready: pgvector extension built-in, hybrid search (full-text + semantic), embedding functions.
- Storage S3-compatible: Upload/resume/cancel, signed URLs, transformation on-the-fly (resize, crop, format).
- Type-safe client: Supabase CLI generate types TypeScript từ schema DB — end-to-end type safety.
Kiến trúc cốt lõi
| Thành phần | Công nghệ | Vai trò |
|---|---|---|
| Database | PostgreSQL 16+ | Nền tảng — ACID, MVCC, extensions |
| Realtime | Elixir Phoenix PubSub | Push thay đổi DB tới client WebSocket |
| Auth | GoTrue (Go) | Identity, JWT, RLS policies |
| Storage | S3 API + PostgreSQL metadata | File objects, CDN, transformation |
| Edge Functions | Deno Deploy runtime | Serverless TypeScript at edge |
| API Gateway | PostgREST + Kong | RESTful API tự động từ schema DB |
| Vector | pgvector extension | Embedding storage, similarity search |

Realtime: Cơ chế hoạt động
Supabase Realtime dùng PostgreSQL Logical Replication. Khi bạn bật Realtime cho table, Supabase tạo PUBLICATION trên DB. Mọi INSERT/UPDATE/DELETE được ghi vào WAL → replication slot → Elixir Phoenix PubSub → broadcast qua WebSocket tới client subscribe. Độ trễ trung bình < 50ms. Client JS: supabase.channel('rooms').on('postgres_changes', {event: '*', schema: 'public', table: 'messages'}, callback).subscribe().
Row Level Security (RLS) — Bảo mật cấp hàng
RLS là “killer feature” của PostgreSQL mà Supabase tận dụng tối đa. Policy được viết bằng SQL, gắn trực tiếp vào table:
-- Chỉ chủ sở hữu mới đọc/sửa bài viết của mình
CREATE POLICY "owner_access" ON posts
FOR ALL USING (auth.uid() = user_id);
Kết hợp với JWT từ Supabase Auth, RLS enforce tự động ở cấp database — không thể bypass từ client hay API. Đây là bảo mật mặc định (secure by default) so với Firebase rules phải viết riêng.
Edge Functions: Serverless tại edge
Khác với AWS Lambda (cold start cao, VPC cold), Supabase Edge Functions chạy trên Deno Deploy — isolate-based, cold start ~0ms, deploy trong giây. Import npm packages: import { createClient } from 'npm:@supabase/supabase-js@2'. Dùng cho: webhook handler, AI inference (OpenAI, Anthropic), image processing, third-party API proxy, scheduled jobs (cron).
Vector & AI: pgvector tích hợp sẵn
Supabase bật sẵn extension vector (pgvector). Tạo bảng embedding:
CREATE TABLE documents (
id BIGSERIAL PRIMARY KEY,
content TEXT,
embedding VECTOR(1536) -- OpenAI ada-002 dimension
);
CREATE INDEX ON documents USING hnsw (embedding vector_cosine_ops);
Truy vấn similarity: SELECT * FROM documents ORDER BY embedding '[0.1, ...]' LIMIT 5;. Kết hợp full-text search (tsvector) cho hybrid search chính xác.
Self-host: Tự do hoàn toàn
Supabase cung cấp Docker Compose stack cho self-host: PostgreSQL, Kong, GoTrue, Realtime, Storage, Edge Functions, Meta, Studio (dashboard). Chạy được trên: VPS ($5-10/tháng), Kubernetes (Helm chart), Coolify (1-click), Railway, Render, Fly.io. Dữ liệu 100% của bạn, backup/restore tự do, upgrade khi muốn.
So sánh nhanh: Supabase vs Firebase vs Appwrite vs PocketBase
| Tiêu chí | Supabase | Firebase | Appwrite | PocketBase |
|---|---|---|---|---|
| Database | PostgreSQL | Firestore (NoSQL) | MariaDB | SQLite |
| Mã nguồn mở | ✅ MIT | ❌ Proprietary | ✅ BSD-3 | ✅ MIT |
| Self-host | ✅ Docker/K8s | ❌ | ✅ Docker | ✅ Binary đơn |
| Realtime | ✅ PG WAL | ✅ Native | ✅ WebSocket | ✅ Realtime |
| Auth | ✅ GoTrue + RLS | ✅ Firebase Auth | ✅ Built-in | ✅ Built-in |
| Edge Functions | ✅ Deno | ✅ Cloud Functions | ⚠️ Chưa có | ❌ |
| Vector/AI | ✅ pgvector | ⚠️ Vertex AI | ❌ | ❌ |
| Type safety | ✅ CLI gen types | ⚠️ Manual | ✅ SDK types | ✅ SDK types |
Khi nào NÊN dùng Supabase?
- Cần SQL quan hệ, transaction ACID, complex query, reporting.
- Muốn tự host để tuân thủ dữ liệu (GDPR, HIPAA, data residency).
- Xây dựng ứng dụng AI/RAG cần vector search tích hợp.
- Team TypeScript muốn end-to-end type safety từ DB đến client.
- Cần edge functions hiệu năng cao, cold start gần 0.
Khi nào KHÔNG nên dùng Supabase?
- Ứng dụng cực đơn giản, chỉ cần key-value — PocketBase hoặc SQLite nhẹ hơn.
- Đã invest deep vào Firebase ecosystem, migration cost cao.
- Cần managed service zero-ops tuyệt đối và sẵn sàng trả giá Firebase Blaze plan.
- Workload write-heavy cực lớn (millions writes/sec) — cần sharding thủ công, Supabase chưa managed sharding.
Kết luận
Supabase mang lại sức mạnh PostgreSQL toàn diện cho developer frontend/mobile — không cần quản trị DB, viết backend boilerplate, hay lo vendor lock-in. Với realtime, auth, storage, edge functions, vector search tích hợp sẵn, nó là BaaS hoàn chỉnh nhất hiện nay cho stack hiện đại. Thử ngay tại supabase.com (free tier 500MB DB, 1GB storage, 2M requests/tháng) hoặc self-host trên VPS $5 để trải nghiệm toàn quyền.
