RSS DEV 커뮤니티

Supabase 데이터베이스 함수 가이드 — RPC 및 PL/pgSQL을 이용한 서버리스 로직

Follow
Supabase 데이터베이스 함수는 복잡한 비즈니스 로직을 PostgreSQL 내에서 직접 통합하여 Flutter 애플리케이션이 Edge Function 배포 없이 `rpc()`를 통해 호출할 수 있도록 합니다. 이 접근 방식은 다음과 같은 여러 가지 장점을 제공합니다: - 원자성 보장: 여러 테이블 업데이트에 대한 원자성을 보장합니다. - 성능 향상: 네트워크 왕복 횟수를 줄여 성능을 향상시킵니다. - 보안 강화: 로직을 캡슐화하면서 행 수준 보안(RLS)을 존중하여 보안을 강화합니다. - 개발 단순화: Deno 배포를 제거하여 개발을 단순화합니다. 함수는 다양한 작업을 수행하도록 생성될 수 있습니다. 예를 들어, 사용자의 연속 기록을 계산하는 함수는 일지 항목을 반복하여 연속적인 활동 일수를 결정합니다. 또한, 사용자 점수를 쿼리하고 순위를 매기는 리더보드 함수와 같이 테이블을 반환할 수도 있습니다. 더 나아가, 작업 완료와 같은 다중 테이블 트랜잭션 함수는 여러 테이블에서 원자적 업데이트를 허용하여 데이터 일관성을 보장하고 구조화된 JSON 응답을 반환합니다. `SECURITY DEFINER` 절은 함수가 소유자의 권한으로 실행됨을 의미하며, RLS를 우회할 수 있으므로 신중하게 사용해야 합니다. 반대로, `SECURITY INVOKER`는 호출자의 권한으로 함수를 실행하므로 RLS가 여전히 적용되어 더 안전한 기본값입니다. 실제 애플리케이션은 상당한 성능 향상을 보여줍니다. 한 사용자는 Edge Function 콜드 스타트 및 Deno 오버헤드를 제거하여 대시보드 집계에 대한 지연 시간을 40% 줄였다고 보고했습니다. 프로덕션 사용 사례에는 실시간 연속 기록 계산, 대시보드 요약 가져오기, 업적을 멱등적으로 수여하는 것이 포함됩니다. 데이터베이스 함수와 Edge Function 간의 결정은 종종 특정 성능, 보안 및 배포 요구 사항에 따라 달라집니다.
favicon
dev.to
Supabase Database Functions Guide — Serverless Logic with RPC and PL/pgSQL