DataBase/PostgreSQL

When to use? postgreSQL 내에서 특정 row 가 변경되면 해당 이벤트를 특정 채널에 Notify 할 수 있는 기능. ex) Node.js 에서 PostgreSQL 에서 발생한 특정 이벤트 페이로드를 받아온다. Syntax pg_notify() is just a convenient wrapper function for the SQL NOTIFY command. pg_notify (channel-name, payload) Channel 알림 채널명, 채널명은 테이블명 그대로 따라가는 것이 관례다. Payload 8,000 바이트 이하의 문자열 데이터 💡 Notify in transaction NOTIFY behaves is executed in a transaction, the notify..
🎯 Goals 트랜잭션의 사용 방법을 알아본다. 트랜잭션이 동작 원리를 그림으로 정리한다. 동작원리 이해를 위해 WAL, CDC가 무엇인지 알아본다. 1. 트랜잭션 사용 방법 BEGIN 트랜잭션 블록 초기화 키워드로 모든 문장을 하나의 트랜잭션으로 묶는다. `COMMIT` `ROLLBACK` 연산을 만나기 전까지 Automacity 를 보장하는 대 신 CPU/Disk activity 가 있기 때문에 속도는 더 느리다. WITHOUT BEGIN 기본적으로 BEGIN 이 없으면 각각의 statement (쿼리문)이 독립된 트랜잭션이 된다. 속도는 더 빠르다. 📝 이럴 때 트랜잭션을 써라 All or Nothing 여러 쿼리가 하나의 작업 단위로 묶여야 할 때 다 실행되거나 다 안되거나 2. 트랜잭션의 동작 ..
nextval(regclass) 시퀀스의 다음 값을 리턴하는 함수로 thread-safe 하다. 👉🏻 여러 세션에서 이 함수를 동시에 실행하면 각각 다른 값을 갖게한다. 💡 nextval() 을 호출하면 가리키고 있던 시퀀스는 반환하고 곧바로 다음 시퀀스를 가리킨다. ex) nextval(table_name_pkpk:regclass) => 1000 // 리턴은 1000을 받아왔지만 이미 테이블은 다음 시퀀스로 '1001'을 가리키고 있다. 다른 세션에서 INSERT 쿼리 -> 1001 입력 regclass regclass? 시퀀스의 Object ID (OID) 를 의미. 이게 왜 필요할까? OID는 여러 시스템 테이블에 쓰이는 기본키다. OID 는 자체적인 동작이 없다. 그저 의미있는 이름을 시스템 오브..
🎯 요구사항 Fastify + Swagger (OPEN API 3.0.3) 를 쓴다면 JSON Schema 를 정의하는 일이 익숙할 것이다. 허나, 프로젝트 초반일수록 DB 스키마는 물론 API 가 변경되는 일이 잦아 JSON Schema 변경도 잦아진다. 개발과 문서화 모두를 맡은 개발자 입장에선 여간 귀찮은 일이 아닐 수 없다. ORM없이 DB 스키마를 변경할 때마다 연결된 DB로부터 자동으로 JSON Schema 를 받아올 순 없을까? 구원 투수 GitHub - SpringTree/pg-tables-to-jsonschema: A command-line utility and module to turn postgres tables into JSON Schemas A command-line utility..
M_Falcon
'DataBase/PostgreSQL' 카테고리의 글 목록 (2 Page)