[PostgreSQL] Notify
·
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..
[PostgreSQL] Transaction 왜, 언제, 어떻게 동작하나?
·
DataBase/PostgreSQL
🎯 Goals 트랜잭션의 사용 방법을 알아본다. 트랜잭션이 동작 원리를 그림으로 정리한다. 동작원리 이해를 위해 WAL, CDC가 무엇인지 알아본다. 1. 트랜잭션 사용 방법 BEGIN 트랜잭션 블록 초기화 키워드로 모든 문장을 하나의 트랜잭션으로 묶는다. `COMMIT` `ROLLBACK` 연산을 만나기 전까지 Automacity 를 보장하는 대 신 CPU/Disk activity 가 있기 때문에 속도는 더 느리다. WITHOUT BEGIN 기본적으로 BEGIN 이 없으면 각각의 statement (쿼리문)이 독립된 트랜잭션이 된다. 속도는 더 빠르다. 📝 이럴 때 트랜잭션을 써라 All or Nothing 여러 쿼리가 하나의 작업 단위로 묶여야 할 때 다 실행되거나 다 안되거나 2. 트랜잭션의 동작 ..
[PostgreSQL] Sequence 함수 및 값 변경 (번역)
·
DataBase/PostgreSQL
nextval(regclass) 시퀀스의 다음 값을 리턴하는 함수로 thread-safe 하다. 👉🏻 여러 세션에서 이 함수를 동시에 실행하면 각각 다른 값을 갖게한다. 💡 nextval() 을 호출하면 가리키고 있던 시퀀스는 반환하고 곧바로 다음 시퀀스를 가리킨다. ex) nextval(table_name_pkpk:regclass) => 1000 // 리턴은 1000을 받아왔지만 이미 테이블은 다음 시퀀스로 '1001'을 가리키고 있다. 다른 세션에서 INSERT 쿼리 -> 1001 입력 regclass regclass? 시퀀스의 Object ID (OID) 를 의미. 이게 왜 필요할까? OID는 여러 시스템 테이블에 쓰이는 기본키다. OID 는 자체적인 동작이 없다. 그저 의미있는 이름을 시스템 오브..
Description on DB Column
·
DataBase/PostgreSQL
🎯 요구사항 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..
[Redis] redis.conf 권장설정
·
DataBase/Redis
redis.conf양이 겁나게 많은데, 주요 권장설정을 알아보고 알맹이만 쏙 빼먹자.1. Maxclient 값을 충분히 높여라최대로 접속 가능한 클라이언트 값으로 이 값 넘어서의 새로운 클라이언트 연결 시도는 모두 거부된다.클러스터가 사용될 경우, 이 값이 공유된다.실제 서비스에서 사용한다면, 이 값을 충분히 높여라 (5만 이상 권장, Default: 10,000)2. RDB/AOF 설정을 비활성화하라.AOF : Append Only File 의 약자로 Default 값이 'no' 이기 때문에 따로 건드리지 않아도된다.RDB: 메인 메모리의 모든 데이터를 디스크에 dumpb 한다. *.rdb 파일이 생성된다.3. 부하가 상당한 커맨드를 비활성화하라.ex) Keys Command 는 O(N) 이므로 Dis..
MySQL vs MariaDB
·
DataBase/MySQL
MySQL License(==Subscription) by Oracle 연간 Enterprise 이용료가 150만원이나 하는 MySQL.. Oracle에 묶인게 맘에 들지 않았던 MySQL 개발자들이 뛰쳐나와 개발한 것이 MariaDB이다. MySQL과 다르게 오픈소스로 Free Software (무료)다. 오늘은 같은듯 다른듯한 이 두 DB의 주요 차이점을 정리한다. MySQL MariaDB JSON type support not support but alias for JSON which is actually a LONGTEXT Default Authentication caching_sha2_password (using SHA-256) as default (after 8.0 version) only u..