Supabase là gì? Backend-as-a-Service mã nguồn mở thay thế Firebase

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.

Supabase Dashboard: Table Editor, SQL Editor, Auth users

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

Sơ đồ kiến trúc Supabase: PostgreSQL, Realtime, Auth, Storage, Edge Functions

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.

Tôi là một lập trình viên IOS. Code chính là IOS nhưng thỉnnh thoảng vẫn đá sang Android hoặc web. Mặc dù không quá thông thạo nhưng tôi sẽ chia sẻ những kiến thức mà mình đã tìm hiểu, áp dụng qua.

Bài viết liên quan

Wasm Component Model: Modular hóa WebAssembly cho mọi môi trường

Wasm Component Model logo hoặc sơ đồ kiến trúc module Wasm Component Model: Modular hóa WebAssembly cho mọi môi trường Wasm Component Model là chuẩn mới cho phép tách thành…

Xem thêm

Bevy Engine: Xây dựng game 2D/3D với Rust hiệu năng cao

Bevy là game engine mã nguồn mở được xây dựng bằng Rust, tập trung vào khả năng mở rộng (data-driven) và hiệu năng. Với kiến trúc ECS (Entity Component System)…

Xem thêm

SQLite FTS5 Full-Text Search: Tìm kiếm nội dung trong app không cần server

SQLite FTS5 (Full-Text Search version 5) là công cụ tìm kiếm toàn văn bản tích hợp sẵn trong SQLite, cho phép tìm kiếm nội dung văn bản nhanh chóng mà…

Xem thêm
0 0 đánh giá
Article Rating
Theo dõi
Thông báo của
guest
0 Comments
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất