이 문서는 그래프 탐색의 대표적인 방법인 DFS와 BFS를 단순히 어떻게 사용하는지가 아니라, 왜 이런 방식으로 동작하는지를 이해하는 데 초점을 맞춰요.또한 문제를 마주했을 때 어떤 기준으로 탐색 방법을 선택해야 하는지까지 함께 정리해 보려고 해요. 이 문서를 읽고 나면 아래 질문에 스스로 답할 수 있게 될 거예요.이 문제는 모든 경우를 끝까지 탐색해야 할까요?최단 거리나 이동 횟수가 중요한 문제일까요?이런 조건에서 DFS와 BFS 중 어떤 탐색을 선택하는 게 맞을까요? 왜 그래프 탐색이 중요한가요?그래프 탐색은 알고리즘 문제에서 반복해서 등장하는 핵심 개념이에요.문제의 형태는 달라 보여도, 내부를 들여다보면 정점과 간선을 따라 이동하며 답을 찾는 구조인 경우가 많아요. 그래프 탐색은 아래와 같은 상황에..
개발을 하다 보면 가장 많이 다루게 되는 데이터는 역시 문자열 데이터입니다.백엔드 개발자로서 저는 평소 "문자열 데이터를 어떻게 하면 효율적으로 저장하고 불러올 수 있을까?"라는 고민을 가장 많이 하는 것 같습니다.특히 데이터 저장을 위해서는 반드시 테이블이 필요한데요. 문자열 데이터를 저장하기 위한 테이블을 설계하다 보면 자연스럽게 한 가지 고민에 부딪히게 됩니다.바로, 문자열 데이터를 저장할 때 어떤 컬럼 타입을 선택해야 할지에 대한 고민이죠. (CHAR와 VARCHAR, 과연 무엇을 선택해야 할까요?) CHAR VS VARCHAR CHAR 타입과 VARCHAR 타입은 모두 문자열을 저장하기 위해 고안된 컬럼 타입이에요.두 타입 모두 다양한 문자 인코딩 방식(ASCII, UTF-8 등)을 지원하며, ..
트랜잭션(Transaction)은 데이터베이스의 무결성과 안정성을 지키기 위해 꼭 이해해야 하는 핵심 개념입니다.오늘은 다음 내용을 단계별로 살펴봅니다트랜잭션의 기본 개념ACID 속성이 중요한 이유MySQL에서 트랜잭션이 어떻게 동작하는지스토리지 엔진(MyISAM vs InnoDB)에 따른 동작 차이트랜잭션 격리 수준 4단계와 관련 문제(Dirty Read, Phantom Read 등)Spring에서 @Transactional로 격리 수준을 설정하는 방법이 글을 읽고 나면, DB 트랜잭션을 안정적으로 설계하고 활용하기 위한 실무 기준을 자연스럽게 이해할 수 있을거에요! 트랜잭션이란 무엇인가트랜잭션(Transaction)은 데이터베이스에서 실행되는 하나의 논리적 작업 단위(Logical Unit of Wo..
현대의 데이터 환경에서는 서비스 운영, 분석, 인공지능 등 다양한 목적에 따라 여러 형태의 데이터 저장소를 사용합니다. 대표적인 예로 데이터베이스(Database), 데이터 웨어하우스(Data Warehouse), 데이터 레이크(Data Lake)가 있으며, 각각의 역할과 설계 철학은 크게 다릅니다. 이 글은 세 저장소의 차이와 장단점, 그리고 상황에 따른 기술 선택 기준을 비교 중심으로 쉽게 이해할 수 있도록 정리했습니다. 요약아래는 데이터베이스(DB), 데이터 웨어하우스(DWH), 데이터 레이크(DL)를 한눈에 비교한 핵심 요약입니다. 각 저장소가 어떤 목적에 쓰이고, 어떤 데이터 형태를 다루며, 어떤 방식으로 스키마를 적용하는지 빠르게 파악할 수 있습니다. 구분데이터베이스 (DB)데이터 웨어하우스 ..
일급 컬렉션(First-Class Collection)은 단순한 데이터 컬렉션을 하나의 객체로 묶어,해당 컬렉션과 관련된 모든 로직·검증·행위를 한 클래스에서 관리하도록 돕는 설계 방식입니다. 이 글을 통해 여러분들은 다음 내용을 명확하게 이해할 수 있을거에요일급 컬렉션의 개념일급 컬렉션을 사용하는 이유적용하기 좋은 상황실제 코드 구현 방법오버엔지니어링을 피하기 위한 기준 일급 컬렉션(first-class-collection)이란? 일급 컬렉션(First-Class Collection)은 마틴 파울러(Martin Fowler)가 발매한 책 소트웍스 앤솔러지(SortWorks Anthology)에서 소개한 규칙 중 하나입니다. 규칙8: 일급 콜렉션 사용이 규칙의 적용은 간단하다. 콜렉션을 포함한 클래스는..
오늘은 Docker 환경에서 PostgreSQL 물리적 복제(Physical Replication)를 구성하는 방법을 단계별로 작성해볼게요.이 글을 보고 레플리케이션을 적용하면 다음과 같은 효과를 기대할 수 있어요.Master 장애 발생 시 서비스 중단 위험 감소Read/Write 분리를 통한 데이터베이스 부하 분산PostgreSQL 물리적 복제 방식에 대한 이해 향상본 가이드는 Docker + PostgreSQL 16을 기준으로 작성되었습니다.AWS RDS 기반 복제 구성은 별도 문서에서 다룰 예정이니, 기대해주세요! 준비 사항환경Docker Desktop 또는 Docker CLI 사용 가능 환경5432 포트를 바인딩하여 실행 중인 PostgreSQL Master 컨테이너PostgreSQL 16 버전 ..