728x90

분류 전체보기 142

PostgreSQL: DEFAULT PRIVILEGES

※ PostgreSQL: DEFAULT PRIVILEGES. 안녕하세요. 듀스트림입니다. PostgreSQL의 권한 설계는 다른 DBMS(MySQL/MariaDB 등)에 비해 상대적으로 복잡한 편입니다. (Oracle과는 비슷합니다.) 그 이유로는 먼저, PostgreSQL 철학에서 USER는 LOGIN 가능한 ROLE 일뿐입니다. 다음으로 권한 모델 구조를 보면, 다음과 같이 계층적 구조가 아닌 분리형 구조로 되어 있습니다.Database └─ Schema └─ Table / View / Sequence / Function / Type …→ 여기서 중요한 점은 상위 객체에 권한을 부여해도, 하위 객체 권한이 자동으로 따라오지 않는다는 점입니다. Database에 CONNECT 권한을 부여하고 해..

PostgreSQL 2025.12.31

PostgreSQL: pg_mooncake

※ PostgreSQL: pg_mooncake. 안녕하세요. 듀스트림입니다. 크리스마스 이브입니다. 미리 크리스마스🎄 오늘 포스팅에서는 최근 분석 엔진으로 주목받고 있는 DuckDB를 PostgreSQL 환경에서 네이티브하게 활용할 수 있도록 지원하는 Extension인 pg_mooncake에 대한 내용입니다.1. pg_mooncake ?pg_mooncake는 PostgreSQL 테이블을 Iceberg 기반 컬럼 지향 스토리지로 미러링하여, Sub-second 수준의 최신성(freshness)을 유지하면서 고속 분석 쿼리를 가능하게 하는PostgreSQL Extension입니다. pg_mooncake의 특징 컬럼스토어 미러링 구조 pg_mooncake는 PostgreSQL 테이블을 Ice..

PostgreSQL 2025.12.24

PostgreSQL: PgBouncer

※ PostgreSQL: PgBouncer. 안녕하세요. 듀스트림입니다. 오늘 포스팅은 PostgreSQL의 커넥션 풀러 중 하나인 PgBouncer의 개요부터 설치, 튜닝까지의 내용입니다. 커넥션 풀에 대한 개념 및 내용은 아래 포스팅을 참고 부탁드립니다. PostgreSQL: 커넥션 풀※ PostgreSQL: Connection Pool. 안녕하세요. 듀스트림입니다. 제가 운영 중인 OLTP 시스템은 초당 5,000건 이상의 트랜잭션을 처리하고 있습니다. 이런 환경에서 클라이언트가 매번 DBMS에 직접 연결을 맺dewstream.tistory.com1. PgBouncer ?PgBouncer는 PostgreSQL 전용의 초경량(Connection Pooler) 미들웨어로, 애플리케이션과 PostgreS..

PostgreSQL 2025.12.17

PostgreSQL: Patroni Cluster 사용 시 파라미터 변경 방법

※ PostgreSQL: Managing Parameter Changes in a Patroni Cluster. 안녕하세요. 듀스트림입니다. 요즘은 뭔가 테스트를 하고 싶어도 시간이 없어서 못하는 거 같아요. 7시반 출근 → 21시 퇴근 → 22시 반 집도착 → 씻고 자고 반복~ 오늘 주제는 Patroni Cluster 운영 시 꼭 알아야 되는 내용인 Patroni Cluster를 운영 시, DB 파라미터 변경 방법입니다. (Patroni 공식 문서)PostgreSQL 단독 인스턴스나 다른 HA 도구라면 postgresql.conf 수정 + Reload 또는 Restart로 파라미터를 적용하면 됩니다.하지만 Patroni로 HA Cluster를 운영 중이라면 이야기가 완전히 달라집니다. postgresq..

PostgreSQL 2025.12.12

RDBMS: FOREIGN KEY

※ RDBMS: FOREIGN KEY. 안녕하세요. 듀스트림입니다. 저는 이직하고 계속 야근과 주말 작업이 너무 많아서 지쳐가는 중입니다.. (조금 편한 자리로 갈 걸 그랬나 싶기도 해요..) 오늘 포스팅은 RDBMS를 사용한다면 꼭 알아야 하는 외래키(FOREIGN KEY)에 대한 내용입니다. 외래키는 그냥 FK 한 줄 추가하는 기능이 아니라,데이터 모델의 품질과 애플리케이션 안정성, 운영상의 성능과 락 구조까지 모두 연결되는 핵심 요소입니다. 1. RDBMS에서 왜 외래키가 중요할까요?관계형 DB에서 관계(relation)를 실제로 강제하는 장치가 외래키(FOREIGN KEY, FK) 입니다.부모(Parent) 테이블: 기준(참조 대상)이 되는 테이블 (보통 PK/UK를 가진 쪽)자식(Child) 테..

IT 여러가지 2025.11.28

SQL: 윈도우 함수 문법 구조

※ SQL: Window Function Syntax Structure. 안녕하세요. 듀스트림입니다. 또다시 월요일입니다. 오늘 포스팅은 SQL을 다룬다면, 필수적으로 이해하고 있어야 하는 윈도우 함수의 문법 구조에 대해 알아보겠습니다.1. 윈도우 함수의 기본 문법 구조Window-function ( [expression] ) OVER ( [PARTITION BY ...] [ORDER BY ...] [ROWS | RANGE ...]) 한 줄로 표현하면 아래와 같은 구조로 되어있습니다.윈도우 함수 = 함수 + OVER(윈도우 정의)윈도우 함수 자체: SUM(), AVG(), ROW_NUMBER(), LAG(), LEAD() 등OVER() 안의 윈도우 정의: 어떤 범위(window..

SQL 2025.11.24

PostgreSQL: SELECT 효율 분석

※ PostgreSQL: Analysis of SELECT Efficiency. 안녕하세요. 듀스트림입니다. 대부분의 서비스에서는 SELECT(Read) 비율이 압도적으로 많습니다. 그렇다면 여기서 의문이 생기겠죠.인덱스를 타긴 타는데, 정말 효율적으로 동작하고 있을까?어떤 테이블과 어떤 쿼리가 Heap 접근을 많이 유발 중일까?Visibility Map, Index-only Scan, 통계 뷰 지표들은 서로 어떻게 연결되는 거지? 오늘 포스팅에서는 로그와 모니터링에 의존하지 않고 시스템 뷰와 통계 지표만으로 SELECT 효율을 해석하는 방법을 알려드리겠습니다.1. SELECT 효율?서비스 쿼리는 기본적으로 응답 시간이 빨라야합니다. SELECT 효율 분석은 여기서 한 뎁스 더 들어가서 다음 내용을 정량..

PostgreSQL 2025.11.21

PostgreSQL: DISTINCT ON

※ PostgreSQL: DISTINCT ON. 안녕하세요. 듀스트림입니다. 오늘 포스팅은 PostgreSQL 고유 확장 기능인 DISTINCT ON에 대한 내용입니다. 알아두면 꽤 편합니다.DISTINCT ON은 표준 ANSI SQL에 속하지 않으며, PostgreSQL 고유 확장 기능입니다.표준 방식은 ROW_NUMBER()를 사용합니다.표준 방식SELECT user_id, event_time, statusFROM ( SELECT user_id, event_time, status, ROW_NUMBER() OVER (PARTITION BY user_id ORDER BY event_time DESC) AS rn FROM user_events) tWHERE rn = 1; DISTI..

PostgreSQL 2025.11.19

SQL: 행 스트림

※ SQL: Row Stream. 안녕하세요. 듀스트림입니다. 오늘은 SQL 엔진에서 하는 행 스트림 처리가 무엇인지에 대해 알아보겠습니다.카테고리를 DBMS에 넣을지 SQL에 넣을지 고민했지만, 그냥 SQL에 넣기로 했습니다.글을 작성하다 보면 내용보다는 의외로 이런 부분에서 로딩이 더 걸리는 것 같습니다. SQL 엔진에서 "행 스트림(row stream)" 이란 표현은 테이블의 모든 데이터를 한꺼번에 메모리에 올려놓지 않고, 한 행(row)씩(또는 일정한 묶음 단위로) 순차적으로 읽고 전달하는 처리 방식을 말합니다.즉, LATERAL이나 Nested Loop 같은 연산이 "행 스트림 기반(row stream based)"으로 동작한다는 건 아래처럼 이해하시면 됩니다.1. 행 스트림 처리?SQL의 실행..

SQL 2025.11.17
728x90