태그: 데이터베이스
14편
-
PostgreSQL 뜻과 특징: 포스트그레스큐엘은 어떤 데이터베이스인가
PostgreSQL 뜻과 발음, 포스트그레스라는 이름의 유래부터 MVCC·ACID·확장성 같은 핵심 특징, MySQL과의 차이, Docker로 설치해 첫 쿼리를 실행하는 방법까지 초보자 눈높이에서 오류 메시지와 함께 정리합니다.
-
MySQL 엔진 이해하기: InnoDB 페이지와 리두, MVCC, 옵티마이저, 복제와 백업
MySQL이 느릴 때 엔진보다 스키마·인덱스·락·복제 지연을 먼저 의심해야 하는 이유를 InnoDB 클러스터 인덱스와 버퍼 풀, MVCC와 REPEATABLE READ 갭 락, EXPLAIN과 통계, GTID 복제, 파티셔닝, ngram 전문 검색 예제로 설명합니다.
-
데이터베이스 내부 동작: ACID 구현, 격리 수준, 인덱스 구조와 쿼리 최적화
관계형 데이터베이스가 WAL, 버퍼 풀, 잠금으로 ACID를 구현하는 방식과 네 가지 격리 수준에서 생기는 이상 현상, MVCC 스냅샷을 설명합니다. B-tree와 해시 인덱스의 차이, 옵티마이저 통계와 실행 계획 읽기, 연결 풀과 복제 운영 패턴도 다룹니다.
-
데이터베이스 인덱싱 심화 | B-트리·클러스터드·스캔/시크·커버링·운영 패턴
인덱스를 추가했는데도 풀 스캔이 나오는 이유를 B+트리 구조, 클러스터드와 보조 인덱스의 차이, 스캔과 시크의 비용 차이로 설명합니다. InnoDB와 PostgreSQL에서 커버링 인덱스를 만드는 법, 부분 인덱스와 시계열 테이블 인덱싱 패턴도 다룹니다.
-
데이터베이스 트랜잭션 심화 — MVCC·2PL·데드락·WAL·실무 패턴
트랜잭션(transaction)은 여러 읽기·쓰기를 하나의 논리 단위로 묶어 원자성(atomicity), 일관성(consistency), 격리성(isolation), 지속성(durability)—즉 ACID.
-
PostgreSQL vs MySQL 차이와 선택 가이드 | 스키마·트랜잭션·운영
새 프로젝트에서 PostgreSQL과 MySQL 중 무엇을 고를지 스키마와 데이터 타입, MVCC와 격리 수준, DDL 트랜잭션, CTE·윈도 함수·풀텍스트 검색, 복제와 백업 운영 관점에서 비교합니다. Node.js 환경과 팀 상황별 선택 기준도 제시합니다.
-
SQL vs NoSQL: 데이터 모델·일관성·확장성 차이와 선택 기준
MySQL·PostgreSQL 같은 관계형 DB와 MongoDB·Redis 같은 NoSQL이 데이터 모델, 일관성, 수평 확장 방식에서 어떻게 다른지 비교합니다. 선택 플로우차트와 시나리오별 권장 조합, 둘을 함께 쓰는 하이브리드 구성까지 다룹니다.
-
Python 데이터베이스: SQLite, PostgreSQL 연결과 ORM
sqlite3로 테이블을 만들고 SQL을 실행하는 기본에서 출발해 SQLAlchemy ORM 모델 정의, CRUD, 일대다 relationship 설정, Flask와 SQLAlchemy를 묶은 API 예제까지 다룹니다. 트랜잭션과 연결 해제, N+1 쿼리 문제도 짚습니다.
-
C++로 작은 DB 엔진 만들기: Pager·B-Tree 저장 엔진, SQL 파서, 실행기, WAL 트랜잭션
페이지 기반 Pager, B-Tree 인덱스, SQL 토크나이저/파서, 실행기, WAL 트랜잭션까지 간단한 DB 엔진의 핵심 구성 요소를 C++로 구현합니다. 풀 스캔 병목, 부분 커밋, WAL fsync 누락 같은 실전 문제 시나리오를 함께 다룹니다.
-
직접 만든 쿼리 엔진 최적화: 인덱스 선택, 실행 계획, 통계 기반 비용 모델
API 응답이 수 초씩 걸리거나 인덱스가 있는데도 풀 스캔이 나는 문제를 인덱스 설계와 실행 계획 분석으로 풉니다. 복합 인덱스 컬럼 순서, 커버링·부분 인덱스, PostgreSQL·SQLite 실행 계획 읽기, 통계 갱신과 N+1 쿼리 개선을 다룹니다.
-
C++ 데이터베이스 엔진 구현: B-Tree 인덱스, WAL, MVCC, SQL 파서와 실행 계획
SQLite처럼 작은 DB 엔진을 만들며 페이지 기반 저장, B-Tree 인덱스 노드, WAL로 트랜잭션을 복구하는 원리, 간단한 SQL 파서와 실행 계획을 C++로 구현합니다. 잘못된 페이지 읽기, WAL 복구 후 데이터 손실 같은 에러와 그룹 커밋 등 성능 팁도 다룹니다.
-
C++에서 PostgreSQL 연동: libpq vs libpqxx, 트랜잭션, Prepared Statement, JSONB와 연결 풀
C++ PostgreSQL 연동 정리. C 기반 공식 라이브러리 libpq와 Modern C++ 래퍼 libpqxx 비교, ACID 트랜잭션, Prepared Statement로 SQL 인젝션 방지, 연결 풀, JSONB·Full-Text Search 활용을 다룹니다.
-
C++ 앱의 느린 DB 쿼리 잡기: libpqxx Prepared Statement, EXPLAIN ANALYZE, 인덱스, N+1
C++에서 PostgreSQL·SQLite 쿼리가 몇 초씩 걸릴 때의 최적화 방법. libpqxx Prepared Statement, 인덱스 전략, EXPLAIN ANALYZE 실행 계획, 연결 풀, 쿼리 캐싱, N+1 문제를 JOIN으로 푸는 법을 다룹니다.
-
C++에서 DB 연동하기: SQLite·PostgreSQL(libpq), 연결 풀, Prepared Statement, 트랜잭션
C++ 데이터베이스 연동 정리. SQLite와 PostgreSQL(libpq) 기본, DB 래퍼 구현, 연결 풀, Prepared Statement와 SQL 인젝션 방지, 트랜잭션 관리, 풀 사용 여부에 따른 성능 차이를 다룹니다.