Supabase vs Firebase: Mengapa Saya Memilih PostgreSQL
Pertarungan antara Firebase dan Supabase adalah perdebatan hangat di kalangan developer. Keduanya menawarkan solusi backend-as-a-service, tetapi dengan filosofi yang sangat berbeda.
Perbandingan Cepat
+----------------------------+----------------------------+
| Firebase | Supabase |
| (Google, NoSQL) | (Open Source, SQL) |
+----------------------------+----------------------------+
| Database: Firestore (NoSQL)| Database: PostgreSQL (SQL) |
| Real-time: Native | Real-time: via Realtime |
| Auth: Built-in, lengkap | Auth: Built-in + NextAuth |
| Storage: Google Cloud | Storage: S3-compatible |
| Harga: Pay-as-you-grow | Harga: Fixed tier |
| Self-hosted: Tidak | Self-hosted: Ya |
| Vendor lock-in: Tinggi | Vendor lock-in: Rendah |
+----------------------------+----------------------------+
1. Database: NoSQL vs SQL
Firebase (NoSQL)
Firestore adalah database dokumen. Data disimpan dalam koleksi dan dokumen. Cocok untuk:
- Aplikasi real-time seperti chat
- Data yang tidak memiliki relasi kompleks
- Prototype cepat
Kelemahan utamanya: tidak ada JOIN. Jika Anda ingin menampilkan daftar posting blog dengan nama penulisnya, Anda harus:
- Query semua posting
- Untuk setiap posting, query data penulis (N+1 problem)
- Atau denormalisasi (duplikasi data penulis di setiap posting)
Supabase (PostgreSQL)
PostgreSQL adalah database relasional yang sudah matang selama 30+ tahun. Dengan SQL:
-- Query dengan JOIN — sederhana dan efisien
SELECT p.title, p.created_at, u.name as author
FROM "BlogPost" p
JOIN "User" u ON p."authorId" = u.id
WHERE p.published = true
ORDER BY p.created_at DESC;
2. Row Level Security (RLS)
Salah satu fitur terkuat Supabase adalah RLS. Anda bisa mengatur kebijakan akses langsung di level database:
-- Hanya penulis yang bisa mengedit postingnya sendiri
CREATE POLICY "Users can update own posts"
ON "BlogPost"
FOR UPDATE
USING (auth.uid() = "authorId");
3. Biaya Jangka Panjang
| Skala Proyek | Firebase/bln | Supabase/bln |
|---|---|---|
| Kecil (demo) | Gratis | Gratis |
| Sedang | $25-100 | $25 |
| Besar | $100-500+ | $75-200 |
| Enterprise | Negosiasi | $600+ |
Kesimpulan
Pilihan saya jatuh pada Supabase karena:
- SQL memberikan fleksibilitas penuh atas data
- Open source — tidak ada vendor lock-in
- Harga transparan — tidak ada tagihan mengejutkan
- Portfolio value — menunjukkan pemahaman database relasional
Bagi developer yang serius, belajar SQL adalah investasi yang tidak pernah sia-sia.