Supabase는 오픈소스 기반의 Firebase 대체 서비스로, 빠르게 백엔드를 구축하고자 하는 개발자를 위한 **BaaS(Backend as a Service)**입니다. 주요 특징은 다음과 같습니다:
Realtime
기능으로 DB 변경을 클라이언트에 실시간 반영Firebase와 달리 SQL 기반이라는 점에서 기존 RDB 설계를 그대로 활용 가능하고, 복잡한 쿼리도 자유롭게 작성할 수 있음.
예시: users
테이블
create table users (
id uuid primary key default gen_random_uuid(),
email text unique not null,
username text,
created_at timestamp default now()
);
JavaScript 예시:
import { createClient } from '@supabase/supabase-js';
const supabaseUrl = 'https://xyzcompany.supabase.co';
const supabaseKey = 'public-anon-key';
const supabase = createClient(supabaseUrl, supabaseKey);
const { data, error } = await supabase
.from('users')
.insert([{ email: 'example@test.com', username: 'example' }]);
const { data, error } = await supabase
.from('users')
.select('*')
.eq('username', 'example');
const { data, error } = await supabase
.from('users')
.update({ username: 'newname' })
.eq('email', 'example@test.com');
const { data, error } = await supabase
.from('users')
.delete()
.eq('email', 'example@test.com');
supabase
.from('users')
.on('INSERT', payload => {
console.log('New user added!', payload);
})
.subscribe();
alter table users enable row level security;
create policy "user can view own data"
on users
for select
using (auth.uid() = id);
const { data, error } = await supabase.storage
.from('avatars')
.upload('public/avatar1.png', file);
// functions/sendWelcomeEmail/index.js
export async function handler(req, res) {
const { email } = await req.json();
// 이메일 전송 로직
res.status(200).json({ message: 'Email sent' });
}
SQL 쿼리 최적화
보안
실시간 기능
프로젝트 관리