Phil Eaton
EDB Staff Engineer
Phil Eaton is a Staff Engineer at EDB; contributing to EDB's highly available Postgres offering, Postgres Distributed. In the past 10 years he's been a developer, a manager, and a cofounder at infrastructure companies. Outside of work he runs the NYC Systems talk series, the Software Internals Discord, the NYC Systems Coffee Club, the /r/databasedevelopment subreddit, and various technical book clubs.
Read Blogs
EDB Labs
필 이튼 10월 07, 2024 PostgreSQL Replication(복제): 확장성과 안정성을 위한 클러스터 설계 핵심 프로덕션급 PostgreSQL(Postgres) 환경에서는 데이터베이스의 고가용성과 확장성을 안정적으로 유지하는 것이 중요합니다. PostgreSQL Replication(복제)은 데이터베이스의 복사본을 여러 노드에 유지하고 데이터의 일관성을 확보하는 핵심 기술입니다. 실제 운영 환경에서는 고가용성을 위한 여러 데이터 복사본뿐 아니라 클러스터의 롤링 업그레이드, 유지보수를 위한 노드 제거, 노드 간 DDL 변경 처리 등이 필요할 수 있습니다. 또한 지연 시간이 짧은 읽기 복제본이 필요하거나 데이터 거버넌스 정책을 준수하면서 데이터를 지리적으로 분산해야 할 수도 있습니다. 사실 이러한...
EDB Labs
Phil Eaton 2024년 6월 17일 이 블로그는 Phil Eaton, Bilge Ince, Artjoms Iskovs가 공동으로 작성했습니다. 대규모 언어 모델(LLMs)은 강력한 성능을 자랑하지만, 만능은 아닙니다. ChatGPT나 다른 LLM을 사용해 보신 분이라면 이들이 독점 정보와 관련된 질문에 제대로 답하지 못한다는 점을 경험해 보셨을 겁니다. 더 큰 문제는, 이 모델들이 단순히 독점 정보를 모르는 것뿐만 아니라, 자신의 한계를 인식하지 못한다는 것입니다. 설령 한계를 인지한다고 해도, 독점 정보에 접근할 방법이 없습니다. 바로 여기서 RAG(Retrieval Augmented Generation)가 등장합니다. RAG란 LLM이 새로운 독점 정보를 활용해 보다 정확한 답변을 생성할 수...
Postgres Tutorials
필 이튼 2024년 3월 27일 지난주 동안 Postgres의 WAL Sender 프로세스에서 메모리 누수를 찾는 작업을 했습니다. Valgrind와 gcc/clang의 Sanitizer를 더 잘 이해하기 위해 며칠을 보냈지만, 결국 그들로부터는 유용한 결과를 얻지 못했습니다. 마침내 bcc 도구 모음에 포함된 memleak 프로그램을 발견했고, 이를 통해 문제의 원인을 바로 찾아낼 수 있었습니다. 처음 이 과정을 이해하는 데 약간 어려움이 있었기 때문에, 제가 거친 과정을 공유하고자 합니다. 이 글에서는 의도적으로 메모리 누수를 유발하는 코드를 사용해 실험합니다. 비록 Postgres에서 발생한 일이긴 하지만, 이 글에서 Postgres에 누수를 도입하여 조사를 시작한다는 점을 제외하면 이 기술들은 폭넓게...
EDB Labs
필 이튼 2025년 1월 17일 Postgres 논리적 복제는 데이터 변경 사항을 게시자에서 구독자로 전달하는 기능입니다. 이 가이드에서는 PostgreSQL 17 소스 코드를 빌드하고 두 개의 Postgres 데이터베이스 사이에 게시(publication)와 구독(subscription)을 구성하는 방법을 단계별로 살펴봅니다. 또한 walsender, apply worker, pgoutput이 논리적 변경 사항을 전송하고 적용하는 내부 과정도 소스 코드와 로그를 통해 확인합니다. Postgres 논리적 복제의 배경 Postgres는 처음에 물리적 복제를 구현했습니다. 물리적 복제는 데이터베이스 A에서 B로 디스크의 바이트 데이터를 전송하고, 데이터베이스 B가 이 바이트를 디스크에 그대로 기록하는 방식입니다...
Technical Blog
Phil Eaton 2025년 2월 28일 이 글에서는 커뮤니티 버전 Postgres 16을 실행하는 3노드 EDB Postgres Distributed(PGD) 클러스터를 설정한 후, Postgres 16에서 Postgres 17로 클러스터 전체를 인플레이스 업그레이드하는 방법을 설명합니다. 개별 노드를 메이저 버전 업그레이드를 위해 다운시키더라도 클러스터 전체는 계속해서 읽기 및 쓰기가 가능함을 시연할 것입니다. 각 환경마다 추가적인 확장, 권한 등의 차이점이 있을 수 있으나, 이 글에서는 단순하고 이상적인 경로에 초점을 맞추겠습니다. 이 실습은 새로운 Debian 12 시스템에서 진행됩니다. Postgres 16 설치하기 먼저, postgresql.org에서 제공하는 패키지 저장소 설정 지침을 따릅니다...
Technical Blog
글쓴이: Phil Eaton 작성일: 2025년 5월 22일 이번 글에서는 PostgreSQL에 인위적으로 두 가지 메모리 누수를 주입한 뒤, heaptrack을 사용해 이를 디버깅하는 과정을 소개합니다. 지난 글에서 다룬 memleak과 마찬가지로 heaptrack도 리눅스 환경이 필요하지만, Mac 사용자도 리눅스 가상 머신(VM)에서 실습할 수 있습니다. Postgres를 기반 코드로 사용하긴 하지만, 이 글에서 소개하는 기법은 C, C++, Rust 프로젝트 전반에 걸쳐 메모리 누수를 추적할 때 유용합니다. 포스트 리뷰를 도와준 동료 Jacob Champion에게 감사드립니다. Postgres 빌드 준비 먼저 Postgres 코드를 클론하고 디버깅 옵션을 활성화하여 빌드합니다: $ git clone...
Technical Blog
작성자: Phil Eaton 게시일: 2025년 6월 21일 지난 1년간 저는 Postgres의 메모리 누수를 디버깅하는 다양한 도구들에 대해 소개해왔습니다. Valgrind, AddressSanitizer, memleak, heaptrack 등을 다뤘지만, 아직 살펴볼 가치가 있는 도구가 몇 가지 남아 있습니다. 오늘은 Meta가 만든 대체 malloc 구현체인 jemalloc을 활용한 메모리 누수 탐지 방법을 살펴보겠습니다. jemalloc이란? Google의 tcmalloc, Microsoft의 mimalloc, Meta의 jemalloc처럼 많은 기업들은 표준 malloc 대신 성능이나 기능이 개선된 자체 구현체를 사용합니다. 이 중 jemalloc은 메모리 누수 탐지 기능이 특히 뛰어납니다. 이유는...
Postgres Tutorials
작성자: Phil Eaton 작성일: 2025년 7월 31일 PostgreSQL이 크래시하면 gdb를 사용해 스택 트레이스를 확인할 수 있습니다. 그렇다면 PostgreSQL이 크래시하지 않는 일반적인 오류는 어떻게 디버깅할 수 있을까요? 이 글에서는 PostgreSQL 17을 디버그 심볼과 함께 빌드한 뒤, psql의 VERBOSITY 옵션으로 오류 발생 위치를 확인하고 backtrace_functions GUC를 사용해 서버 로그에 스택 트레이스를 출력하는 과정을 단계별로 살펴봅니다. PostgreSQL 오류 디버깅 핵심 요약 VERBOSITY verbose로 오류가 발생한 함수와 소스 파일 위치를 확인합니다. 확인한 함수명을 backtrace_functions에 지정합니다. pg_reload_conf(...
Technical Blog
작성자: Phil Eaton 게시일: 2025년 8월 14일 최종 수정일: 2026년 8월 27일 이 가이드에서는 Ubuntu 환경에 EDB Postgres Distributed(PGD)와 EDB Postgres Extended를 설치하고, PGD CLI를 사용해 단일 노드 클러스터를 구성하는 방법을 단계별로 설명합니다. 마지막으로 SQL 쿼리를 실행해 PGD 노드가 정상적으로 활성화되었는지 확인합니다. 목차 EDB 구독 토큰 준비 PGD 및 EDB Postgres Extended 리포지토리 설정 PGD 패키지 설치 단일 노드 PGD 클러스터 구성 PGD 노드 상태 확인 자주 묻는 질문 1. EDB 구독 토큰 준비 EDB 계정에 로그인하거나 무료로 등록한 뒤 구독 토큰(subscription token)을...
EDB Labs
Phil Eaton 2025년 9월 4일 EDB Postgres Distributed와 PGAA 분석 엔진 소개 EDB Postgres Distributed(PGD)는 EDB Postgres AI 제품군에 속합니다. 이 글에서는 PGD 클러스터와 EDB Postgres Analytics Accelerator(PGAA)를 설정하고, 1억 건의 주문 데이터를 사용해 PostgreSQL 분석 쿼리 성능을 비교합니다. PGD는 다음을 지원합니다. 데이터를 분석용 포맷(Iceberg)으로 복제 EDB Postgres Analytics Accelerator(PGAA)를 사용해 Postgres 쿼리를 그대로 실행(PGAA는 내부적으로 Apache DataFusion 사용) PGD 클러스터를 구성한 뒤 고객 구매 데이터를...