postgres_changes를 사용했을 때 구현 방법, 발생하는 문제점

postgres_changes는 Supabase의 실시간 기능 중 하나로, PostgreSQL 데이터베이스의 변경사항을 실시간으로 구독할 수 있게 해줍니다. 이 기능을 사용하면 데이터베이스의 삽입(INSERT), 업데이트(UPDATE), 삭제(DELETE) 작업을 실시간으로 감지하고 클라이언트에 알릴 수 있습니다. 하지만 postgres_changes는 사용자들에게 변경 사항을 알리기 위해서 반드시 DB의 정보를 업데이트해야 합니다.

postgres_changes에 대한 설명

포스트그래스 이벤트 타입을 구독을 하면 db는 변경 발생 시 해당 내용을 구독 된 채널에 알리고 on() 메스드를 통해 이벤트 리스너를 생성할 수 있습니다. 해당 이벤트가 트리거 되면, 콜백함수가 실행되며 이때 payload가 인자로 전달됩니다. 이 payload에는 변경된 db 값에 대한 정보가 들어있습니다.

포스트 그래스 이벤트 사용시 장점

이 방식의 가장 큰 장점 중 하나는 처리가 매우 간단하다는 점입니다. 실시간 편집을 구현할 때, 개발자는

  1. 변경 사항을 데이터베이스에 반영하는 로직
  2. 이벤트 리스너를 통해 전달된 payload를 가공하는 로직만 작성하면 됩니다.

게다가, Supabase는 DB 변경 사항의 순서를 보장하며 이벤트 리스너를 트리거하기 때문에, 동시에 여러 사용자가 편집하더라도 충돌이나 병합에 대한 복잡한 처리를 고민할 필요가 없습니다. 가장 마지막에 들어온 요청이 자연스럽게 반영되므로, 흐름이 매우 직관적입니다.

위와 같은 이유로 포스트그래스를 사용하는건 정말 매력적으로 다가옵니다. 하지만 가장 큰 문제가 있습니다.