Perbandingan Performa Firebase vs Supabase: Benchmark Query Speed Data Relasional Skala Besar
Depok, BisnisGo.id - Perdebatan antara Firebase (Google) dan Supabase (PostgreSQL) sering kali terjebak pada preferensi pribadi developer. Namun, ketika aplikasi kamu tumbuh menyentuh angka 1 juta baris data, preferensi tidak lagi relevan; yang bicara adalah "fisika" database.
Laporan riset terbaru membuktikan bahwa pada dataset relasional (saling terkait) berukuran besar, perbedaan arsitektur antara Document Store (Firestore) dan Relational Engine (PostgreSQL) menciptakan jurang performa yang masif. Berikut adalah bedah teknis mengapa Firebase sering kali "tercekik" pada kueri kompleks dan bagaimana Supabase menyelesaikannya dengan elegan. (Source: Tech Comparison Firebase vs Supabase Report).

Firestore adalah database NoSQL yang luar biasa untuk skalabilitas horizontal, tetapi ia "bodoh" dalam hal relasi data. Firestore tidak memiliki konsep Server-Side JOIN.
Bayangkan kamu memiliki tabel Orders (5 juta baris) dan Users (1 juta baris). Tugas bisnisnya sederhana: "Tampilkan 50 pesanan terbaru beserta nama user pemesannya."
Di Firestore, kamu tidak bisa meminta server menggabungkan data ini. Kamu harus melakukannya secara manual di aplikasi (Client-side Join). Ini memicu masalah N+1:
Ambil 50 Order (1 Request).
Dapatkan 50 User ID.
Lakukan 50 Request tambahan untuk mengambil data User satu per satu (atau dalam batch terbatas).
Kode Firestore (Inefisien & Lambat):
// Firestore: Client-side "Waterfalling"
// 1. Ambil data Orders
const ordersSnapshot = await db.collection('orders')
.orderBy('created_at', 'desc')
.limit(50)
.get();
const orders = ordersSnapshot.docs.map(doc => doc.data());
// 2. Loop manual untuk ambil user (N+1 Problem)
// Ini memboroskan bandwidth dan latensi jaringan!
const populatedOrders = await Promise.all(orders.map(async (order) => {
const userSnapshot = await db.collection('users').doc(order.user_id).get();
return {
...order,
user: userSnapshot.data() // Gabung manual di memori aplikasi
};
}));
Dampak: Latensi membengkak hingga 500ms+ karena bolak-balik jaringan, dan kamu dikenakan biaya read ganda (50 order + 50 user = 100 reads).
Supabase hanyalah "bungkus" modern untuk PostgreSQL. Mesin database ini memiliki Query Planner cerdas yang bisa menggabungkan (JOIN) data dari tabel berbeda langsung di memori server sebelum dikirim ke klien.
Pada benchmark 1 juta baris, Supabase menggunakan indeks B-Tree untuk melompat langsung ke data yang relevan tanpa memindai seluruh tabel.
Kode Supabase (Efisien & Cepat):
-- Supabase: Server-side Native Join
-- Hanya 1 Request ke server, data kembali sudah bersih.
SELECT
orders.id,
orders.total,
orders.created_at,
users.name, -- Data dari tabel User
users.email
FROM orders
JOIN users ON orders.user_id = users.id -- Magic terjadi di sini
ORDER BY orders.created_at DESC
LIMIT 50;
Dampak: Latensi stabil di kisaran 80-90ms. Hemat bandwidth, hemat CPU klien, dan jauh lebih mudah di-maintain.

Pernahkah kamu perlu menampilkan widget sederhana: "Total User Terdaftar: 1.050.200"?
Di Firebase (Lama): Kamu harus mengunduh 1 juta dokumen hanya untuk menghitungnya. Mahal dan lambat.
Di Firebase (Baru): Fitur count() agregasi memindai indeks. Lebih cepat, tapi berbayar. Rumusnya: 1 biaya baca per 1.000 entri indeks. Menghitung 1 juta user = Biaya 1.000 reads setiap kali refresh.
Di Supabase: Kamu bisa mendapatkan estimasi instan (O(1)) dari metadata statistik PostgreSQL dalam 0-1 milidetik, gratis.
Kode Estimasi Supabase (Instant Count):
-- Mengambil estimasi baris langsung dari metadata sistem
-- Hasil keluar dalam < 1ms, tidak peduli datanya 1 juta atau 1 miliar.
SELECT reltuples AS estimate
FROM pg_class
WHERE relname = 'users';
Hasil benchmark ini bukan berarti Firebase buruk. Firebase menang telak jika kamu membutuhkan konkurensi masif (jutaan user online bersamaan) atau fitur offline-first yang tangguh.
Namun, untuk aplikasi bisnis seperti SaaS, E-Commerce, atau ERP yang datanya sangat terstruktur dan saling terkait (relasional), Supabase (PostgreSQL) adalah pemenang mutlak. Jangan memaksakan struktur NoSQL untuk masalah relasional, atau kamu akan membayar mahal di biaya cloud dan performa aplikasi. (Source: Tech Comparison Firebase vs Supabase Report).