TECH NOTES
기술노트
현장에서 검증된 개발 지식을 기록합니다.
14131211109876543
Backend
SQL 인젝션, 아직도 1위 취약점 — 원리와 막는 법
문자열로 쿼리를 조립하면 입력값이 SQL 문법으로 해석돼 뚫린다. 파라미터 바인딩(prepared statement) 하나면 대부분 막힌다. 원리와 실전 방어.
Database
소프트 삭제 vs 하드 삭제, 무엇을 선택할까
deleted_at 컬럼으로 숨기는 소프트 삭제는 복구·감사에 좋지만 쿼리·유니크 제약·용량 부담이 따른다. 기준 정리.
Database
EXPLAIN ANALYZE 읽는 법 — 느린 쿼리 진단
Seq Scan·Nested Loop·actual time·rows 추정 오차. EXPLAIN ANALYZE에서 진짜 병목을 찾는 읽기 순서.
Database
복합 인덱스 컬럼 순서, 왜 중요한가
복합 인덱스 (a,b)는 a로 시작하는 조건엔 쓰이지만 b만으론 못 탄다. 등호·범위·정렬을 고려한 순서 설계.
Database
N+1 쿼리 문제, 발견과 해결
목록 1번 + 각 항목마다 1번씩 쿼리가 나가는 N+1은 성능 킬러다. eager loading·조인·in 절·DataLoader로 한 방에 줄인다.
Database
PostgreSQL 인덱스를 만들었는데 안 타는 이유
인덱스가 있어도 Seq Scan을 하는 건 이유가 있다. 함수 가공·형변환·낮은 선택도·통계 부재 등 원인을 EXPLAIN으로 짚는다.
Database
Materialize 1.0 — 스트리밍 SQL 프로덕션 도입 가이드
Materialize 1.0 실측. Postgres CDC + Kafka 조인 p99 230ms, 월 $1,800. Flink 대비 운영 부담과 한계 정리.
Database
PostgreSQL 파티셔닝 실전 — 10억 행 테이블을 10배 빠르게 만드는 전략
PostgreSQL 선언적 파티셔닝으로 10억 행 테이블 쿼리를 10배 빠르게 만드는 실전 전략. RANGE·LIST·HASH 선택, 파티션 프루닝, 유지보수 자동화까지.
Database
PostgreSQL 17 새 기능 — JSON_TABLE, MERGE 강화
PostgreSQL 17의 주요 신기능 — JSON_TABLE, MERGE 개선, 성능 향상 사항.
Database
DuckDB — 분석 쿼리를 위한 임베디드 데이터베이스
DuckDB의 특징과 Pandas 대비 장점, 로컬 분석 워크플로에서의 활용법.
Database
SQL 윈도우 함수 마스터 — ROW_NUMBER RANK LAG LEAD
SQL 윈도우 함수의 핵심인 ROW_NUMBER, RANK, DENSE_RANK, LAG, LEAD, SUM OVER 등을 실전 쿼리 예제와 함께 체계적으로 정리합니다.
Database
SQL 쿼리 최적화 10가지 실전 팁
느린 SQL 쿼리를 빠르게 만드는 10가지 실전 최적화 기법.