전체 글 1319

[PostgreSQL] 테이블 행 수 확인

개요2023.05.22-[MySQL] DB 내 모든 테이블 ROW 수 확인하기에서 MySQL에서 데이터베이스의 테이블 행 수를 확인하는 방법을 적었었다. 이번 글에서는 기록 목적으로 PostgreSQL에서 데이터베이스 테이블 행 수를 확인하는 방법을 적어둔다. pg_stat_all_tablesPostgreSQL은 서버 운영 상태에 대한 정보를 수집하거나 보고하기 위한 작업을 위한 통계 수집기(statistics collectors)가 동작한다. 수집기는 인덱스의 디스크 블록 단위, 개별 행 단위 접근 회수, 각 테이블에 저장되어 있는 총 행 수, 각 테이블에 대한 VACUUM 작업, ANALYZE 작업에 대한 정보 등을 수집한다. 수집된 통계 정보는 여러 뷰에서 확인할 수 있는데, 그 중 테이블 행 수..

Database 2025.09.17

[Airflow] Connection 테스트 활성화

개요보통 소프트웨어에서 다른 소프트웨어와 연동할 때, 대표적으로 데이터베이스와 연동하는 경우 접속 테스트 기능을 통해 테스트를 하곤 한다. 그런데 Airflow는 연결 테스트 기능은 제공하지만 기본적으로 비활성화 상태로 제공하는 것 같다.연결 테스트 기능을 활성화하는 방법을 적어둔다. TEST_CONNECTION공식 문서를 찾아보니 보안 상의 이유로 테스트 연결 기능은 비활성화한 상태로 제공된다고 한다. 연결 테스트 기능을 활성화하고 싶다면 airflow.cfg 파일을 수정하거나 환경 변수를 수정하는 방법이 있다. 제어하는 변수의 이름은 test_connection이며 아래의 값을 허용한다.- Disable : (기본값) 연결 테스트 기능을 비활성화하고 UI에서 연결 테스트 버튼을 비활성화한다. - E..

Apache Airflow 2025.09.16

[Docker Compose] 다른 compose 파일로 관리하는 컨테이너 간 통신

개요Docker Compose를 이용해 테스트 환경을 구성하고 있는데, 통신이 필요한 두 컨테이너 간에 연결이 정상적으로 이뤄지지 않는 것을 확인했다. 어떤 부분이 문제였는지 적어보고 해결해 보자. 원인Docker compose는 기본적으로 하나의 브리지 네트워크를 생성해 모든 서비스를 연결시킨다. 예로 들어, Docker Compose 파일이 아래와 같은 경우, app1 컨테이너는 http://app2:9000으로, app2 컨테이너는 http://app1:8000으로 서로 통신할 수 있다.services: app1: image: my-app1 ports: - "8000:8000" app2: image: my-app2 ports: - "9000:9000"..

Docker 2025.09.15

[Docker Compose] Compose 파일 기본 구조

개요2025.09.09-[Docker] Docker Compose 란에서 Docker Compose 사용 예시를 작성하면서 docker compose 파일도 간단하게 작성해 봤는데, 각 항목이 무엇인지에 대해서는 정리하지 않았다.이번 글에서는 docker compose 파일에 기본 구조를 정리해본다. versiondocker compose 파일 형식의 버전을 나타낸다. docker compose 버전마다 사용하는 YAML 버전이 달랐기 때문에 기재가 필요했는데, 최신 버전에서는 deprecated 되어 더 이상 사용하지 않는다.version: '3' name프로젝트의 이름이다. 생략할 수 있으며 생략하는 경우, 기본 규칙에 의해서 정의된다.name: myapp services서비스는 애플리케이션 컴..

Docker 2025.09.12

[Docker Compose] 동작 방식

개요2025.09.09-[Docker] Docker Compose 란에서 Docker Compose가 어떤 서비스인지 간단히 확인해 봤다. 이번 글에서는 Docker Compose가 어떻게 동작하는지 적어보려고 한다. 동작 방식Docker Compose는 Compose 파일이라고 하는 YAML 파일을 사용해 서비스를 구성한 다음, CLI를 사용해 서비스를 만들고 시작할 수 있다. Compose 파일은 사양에 맞게 작성해야 한다. 애플리케이션 모델- 서비스 : 애플리케이션의 컴퓨팅 구성 요소. 동일한 컨테이너와 구성을 한 번 이상 실행해 플랫폼에 구현되는 추상적 개념이다.- 네트워크 : 서비스 간 통신을 위해 컨테이너 간 IP 경로를 설정하는 플랫폼 기능 추상화이다.- 볼륨 : 유지할 필요가 있는 데이..

Docker 2025.09.11

[Docker] Docker Compose 란

개요그간 업무하면서 컨테이너를 사용할 때 도커를 활용하기보다는 쿠버네티스 환경을 많이 활용해 와서, 도커를 잘 사용하는 방법에 대해서는 잘 알지 못했다. 그중 하나인 Docker Compose는 처음 도커를 배울 때 함께 배웠었지만, 다 잊은 지 오래이므로…… 다시 접한 김에 정리한다. Docker ComposeDocker Compose는 다중 컨테이너 애플리케이션을 정의하고 실행하는 도구로, 효율적이고 간소화된 개발과 배포 환경을 구축하는데 도움을 준다. 애플리케이션 스택 제어를 간소화하여 단일 YAML 파일로 서비스, 네트워크, 볼륨을 쉽게 관리할 수 있게 한다. 그리고 단일 명령으로 YAML 파일에 정의된 모든 서비스를 생성하고 시작할 수 있다.Docker Compose는 서비스 시작, 중지, 실..

Docker 2025.09.10

[Pandas] to_sql 함수로 UPSERT 수행하기

개요이전에 SQLAlchemy 사용법, 문법 등을 한창 정리했었는데, 사실 이는 Pandas DataFrame을 데이터베이스 테이블로 저장할 때 UPSERT를 수행하는 방법을 정리하기 위함이었다……!2025.07.10-[Python] SQLAlchemy - UPSERT 수행하기에서 SQLAlchemy로 MySQL에 UPSERT를 수행하는 방법은 정리해 두었다. 이번 글에서는 Pandas의 to_sql 함수로 수행하는 방법을 적어둔다. 작업할 데이터베이스는 기존과 동일하게 MySQL로 한다. pandas.DataFrame.to_sql아래는 to_sql 함수의 매개변수 정의이다.DataFrame.to_sql(name, con, *, schema=None, if_exists='fail', index=True..

[PostgreSQL] UPSERT 시 INSERT/UPDATE 행 수 확인하기

개요프로그래밍 방식으로 INSERT나 UPDATE를 사용하면 쿼리 작업으로 인해 얼마나 많은 레코드 영향을 받았는지 비교적 쉽게 확인할 수 있다. 하지만 조건에 따라 수행하는 작업이 달라지는 UPSERT의 경우에는 각 작업을 수행한 레코드 수를 확인하기가 여의치 않은데, 구글링을 해보니 적당한 방법이 있었다.정리해 둔다. XMAX의 용도2025.09.04-[PostgreSQL] MVCC - XMIN/XMAX에서 잠깐 다뤘던 XMAX는 크게 두 가지 용도로 사용된다.1. 데이터 행의 버전인 튜플을 삭제하거나 갱신한 트랜잭션의 ID를 기록한다.2. 행 lock을 저장하는 데 사용한다. PostgreSQL에서는 lock 테이블의 오버플로우를 피하기 위해 행 lock이 튜플에 저장된다. 하나의 트랜잭션만 행에..

Database 2025.09.08

[PostgreSQL] MVCC - XMIN/XMAX

개요MVCC는 예전에 회사에서 데이터베이스 관련 교육을 할 때 접했던 개념이었는데, 최근 PostgreSQL 쿼리에서 관련 키워드를 보게 되어 다시 들쳐보게 되었다. PostgreSQL의 주요 동작 방식과 연관이 있으니 잘 정리해 보자. MVCCMVCC란 다중 버전 동시서 제어(Multi Version Concurrency Control)의 줄임말로, 과거부터 현재까지의 다양하 버전 데이터에 대한 관리와 제공이 가능하지를 나타내는 DBMS의 필수 기능 중 하나이다. 시시각각 변경되고 있는 데이터 중에서 사용자가 데이터를 조회한 시점의 데이터를 정확하게 제공하는지를 나타내는 것으로, DBMS 마다 다르게 구현하고 있다. PostgreSQL - MVCC 구현과 XMAX/XMINPostgreSQL은 아래와..

Database 2025.09.05

[Kafka] 설치 및 실행

개요2025.08.21-[Apache Kafka] 개념에서 아주 간단하게 kafka에 대해서 알아보았는데, 한 마디로 정리하면 이벤트 기반 아키텍처를 구성하기 위한 도구 중 하나라고 보인다. 저번 글에서는 개요 정도만 확인했으니 이번 글에서는 공식 페이지의 QuickStart 문서를 참고해서 간단하게 설치하고 사용해보자. 설치kafka는 여러 가지 설치 방법을 제공하고 있는데, 가장 기본적으로는 릴리즈 파일을 다운로드하는 방식이다. 하지만 자바를 설치하기가 번거롭고 테스트 환경이기 때문에 간단하게 도커로 진행하고자 한다. 참고로 실행 환경은 Killercoda Ubuntu 24.04이다. 도커를 활용하기 때문에 이미지를 pull 받는 것으로 설치는 완료되었다고 할 수 있다.docker pull apac..

기타 2025.09.04