Database/DB (47) 썸네일형 리스트형 3. MySQL CDC 데이터를 Debezium을 통해 Pub/Sub으로 전송하기 서비스 운영 중에는 데이터베이스에 수많은 INSERT, UPDATE, DELETE가 발생한다.이 데이터를 다른 시스템에서 즉시 활용해야 할 때가 있다. 예를 들어:사용자 활동을 기반으로 한 실시간 추천재고 변경 알림주문 상태 업데이트실시간 데이터 파이프라인 구축전통적인 방식에서는 주기적으로 MySQL을 폴링(polling)하거나, 애플리케이션 코드에서 변경 이벤트를 직접 발행해야 한다. 하지만 이런 방식은 지연이 크고, DB와 애플리케이션 모두에 불필요한 부하를 준다. Debezium은 CDC(Change Data Capture) 도구로 MySQL의 binlog를 읽어 데이터 변경 이벤트를 추출하고, 이를 메시지 큐나 스트리밍 시스템으로 보낸다. MySQL → Debezium → Pub/Sub 구조는.. 2. mysql master - slave Replication MySQL Master-Slave Replication 구성 및 테스트이번 글에서는 Docker Compose를 이용해 MySQL Master-Slave 구조를 구성하고, 복제가 제대로 작동하는지 확인하는 방법을 소개한다.1. docker-compose.yml 구성version: '3.8'services: master: image: mysql:5.7 platform: linux/amd64 container_name: mysql-master restart: always environment: MYSQL_ROOT_PASSWORD: root volumes: - ./master/my.cnf:/etc/mysql/conf.d/my.cnf - ./ma.. 1. mysql binlog MySQL Binary Log(binlog) 설정 및 분석 실습MySQL에서 Binary Log(이하 binlog)는 데이터 변경 이력을 기록하는 중요한 기능이다. 주로 Replication, Point-in-Time Recovery, Change Data Capture 등에 활용된다. 이 글에서는 Docker 환경에서 binlog를 활성화하고, 데이터 변경 내용을 직접 로그로 확인하는 과정을 다룬다. 1. Docker로 binlog 활성화된 MySQL 구성먼저 Docker Compose로 binlog가 활성화된 MySQL을 실행합니다. 다음의 커맨드를 추가해야 binlog를 사용할수 있다. --log-bin=mysql-bin: binlog 활성화--binlog-format=ROW: row-level.. [논문] The Log-Structured Merge-Tree (LSM-Tree) https://www.cs.umb.edu/~poneil/lsmtree.pdf ABSTRACT논문이 발표된 당시에는 고성능 트랜잭션 시스템에서 activity flow를 추적하기 위한 히스토리 데이터의 저장과 시스템 복구를 위한 로그 레코드의 저장이 동시에 요구되고 있었습니다. 예를 들어 TPC-A 벤치마크와 같은 애플리케이션에서는 계정별 활동 이력을 효율적으로 조회하기 위해 계정 ID에 기반한 인덱스가 필요했습니다. 하지만 전통적인 디스크 기반 인덱스 구조인 B-tree는 insert 성능이 낮아, 인덱스를 유지하는 데 디스크 I/O 비용이 두 배 가까이 증가하여 전체 시스템 비용을 50%까지 상승시킬 수 있었습니다.이러한 문제를 해결하기 위해, 해당 논문은 Log-Structured Merge-Tree.. postgreSQL wal_level postgreSQL의 wal_level은 기본으로 replica로 설정되어 있지만, CDC를 활용하여 다른 데이베이스에 저장하려하면 postgreSQL의 wal_level을 logical로 바꿔야만 동작합니다.왜 그냥 하면 안되지? 하는 마음에 wal_level에 대해서 정리해보았습니다. 1. WAL (Write-Ahead Logging)과 wal_levelPostgreSQL의 WAL은 데이터베이스 변경 사항을 로그에 기록하여 데이터 복구와 복제를 지원합니다.wal_level은 WAL 데이터를 어떤 수준으로 기록할지를 제어하며, PostgreSQL은 다음 세 가지를 제공합니다.minimal: WAL 로그를 최소 수준으로 기록. 데이터 복구를 위한 최소한의 정보만 포함.replica: WAL 로그에 데이.. timesacle db + fastapi https://www.youtube.com/watch?v=Se5ipte9DMY&t=3s timesacleDBtimesacle DB 는 PostgreSQL 을 기반의 TimescaleDB는 오픈소스 기반의 시계열(time-series) 데이터베이스로 시계열 데이터를 효율적으로 저장, 관리, 분석할 수 있는 기능을 제공하며, PostgreSQL의 모든 기능을 그대로 사용할 수 있는 확장(extension) 형태로 동작한다. 주요 특징PostgreSQL의 확장이므로, PostgreSQL의 모든 기능과 호환 (SQL 쿼리, 트랜잭션, 인덱스, 사용자 정의 함수 등을 그대로 활용)시간 축을 기준으로 데이터를 효율적으로 분할 및 저장 (데이터의 쓰기/읽기 성능을 최적화하기 위해 자동 파티셔닝과 압축을 제공)Hyp.. 디비 개선 작업 + cluster 사건의 발단.DB CPU가 100%에서 내려오질 않는다. (심지어 락 걸린것도 아님)로그 테이블을 조회하는 쿼리였는데, 요 몇일 사용자가 늘어서 그런지 집계할때에 자원을 계속 소모해서 하루종일 알림이 울렸다.. 일단 쿼리 explain 실행 계획을 데이터를 살펴보았는데 특별히 나쁜 점은 없지만 인덱스를 잘못타고 있었고, 정렬이 필요한 쿼리에서 bitmap scan을 통해 읽은 다음 다시 재정렬하는 과정을 거치고 있었다.(메모리 낭비- work_mem를 잡아먹는 쿼리가 된다.) 일단 급한 CPU사용량은 쿼리 수정과 함께 인덱스를 추가해서 일단락되었지만, 앞으로도 데이터가 계속 쌓이는 로그 테이블이여서 bitmap csan을 seq scan으로 바꾸고 싶었다. -> Nested Loop (cost=22.. postgresql 한글 order by의 기준 select * from store order by store_nm; sql로 분명히 한글 정렬했는데, 이상하게 정렬이 되어버렸다. 보는 바와 같이 위쪽은 가나다순으로 잘 나오다가 자릿수가 더 많은 stirng에서 다시 내림차순으로 정렬이 되고 있었다. postgre에서는 정렬이 어떤 기준으로 되는걸까? PostgreSQL 시스템 카탈로그는 PostgreSQL의 관리 시스템이 사용하는 테이블에서 데이터베이스 및 테이블 등의 정보를 다음의 칼럼으로 관리한다. 위의 칼럼중 우리가 볼 칼럼은 datcollate이다. 다음의 쿼리를 실행하면 데이터베이스 마다 설정된 값을 볼수 있다. select datname, datdba, encoding, datcollate, datctype from pg_database;.. 이전 1 2 3 4 ··· 6 다음