postgres_changes
는 Supabase의 실시간 기능 중 하나로, PostgreSQL 데이터베이스의 변경사항을 실시간으로 구독할 수 있게 해줍니다. 이 기능을 사용하면 데이터베이스의 삽입(INSERT), 업데이트(UPDATE), 삭제(DELETE) 작업을 실시간으로 감지하고 클라이언트에 알릴 수 있습니다. 하지만 postgres_changes는 사용자들에게 변경 사항을 알리기 위해서 반드시 DB의 정보를 업데이트해야 합니다.
간단한 과정 도식화
코드설명, 페이로드에 넘어오는 값
포스트그래스 이벤트 타입을 구독을 하면 db는 변경 발생 시 해당 내용을 구독 된 채널에 알리고 on()
메스드를 통해 이벤트 리스너를 생성할 수 있습니다.
해당 이벤트가 트리거 되면, 콜백함수가 실행되며 이때 payload가 인자로 전달됩니다.
이 payload에는 변경된 db 값에 대한 정보가 들어있습니다.
이 방식의 가장 큰 장점 중 하나는 처리가 매우 간단하다는 점입니다. 실시간 편집을 구현할 때, 개발자는
게다가, Supabase는 DB 변경 사항의 순서를 보장하며 이벤트 리스너를 트리거하기 때문에, 동시에 여러 사용자가 편집하더라도 충돌이나 병합에 대한 복잡한 처리를 고민할 필요가 없습니다. 가장 마지막에 들어온 요청이 자연스럽게 반영되므로, 흐름이 매우 직관적입니다.
위와 같은 이유로 포스트그래스를 사용하는건 정말 매력적으로 다가옵니다. 하지만 가장 큰 문제가 있습니다.