개요 대용량 테이블을 더 작고 관리 가능한 단위로 분할하는 기법으로 쿼리 성능 향상과 데이터 관리 효율성을 제공함 중요 이 글은 단일 DB 인스턴스 내에서의 논리적 분할(파티셔닝)을 다루며 서버를 물리적으로 나누는 샤딩(Sharding)과는 구별됨 파티셔닝 하나의 DB 서버 내...
데이터베이스 스캔 방식
개요 데이터베이스에서 쿼리를 실행할 때 데이터를 읽는 다양한 방식을 이해하는 것이 성능 최적화에 중요함 쿼리 옵티마이저가 쿼리 조건과 인덱스 상태를 분석하여 최적의 스캔 방식을 선택함 참고 이 포스팅의 용어는 엔터프라이즈 DB(Oracle)에서 주로 사용되는 표준 용어를 기준으로 설명하지만 개념은 대부분의 RDBMS에...
데이터베이스 인덱스
개요 데이터베이스 인덱스는 테이블의 데이터 검색 속도를 향상시키기 위한 자료 구조임 책의 색인과 유사하게 특정 데이터를 빠르게 찾을 수 있도록 정렬된 구조를 제공함 인덱스는 읽기 성능을 향상시키지만 쓰기 성능에는 오버헤드를 발생시킴 인덱스의 기본 원리 인덱스가 필요한 이유 테이블 전체 스캔은 데이터가 많아질수록 비효율적임...
도메인 스토리텔링(DST)이란?
개요 이 포스팅은 DDD 시리즈의 첫 번째 글입니다. 도메인 스토리텔링(DST)이란? → 도메인 주도 설계(DDD)란? → DDD와 마이크로서비스 아키텍처 순서로 읽는 것을 권장합니다. 최근 팀이 더 나은 설계를 위해 도메인 주도 설계(DDD) 도입을 결정하고 R&D를 진행함 DDD 이론을 학습하면서 유비쿼터스 언어, 바운디...
데이터베이스 정규화
개요 데이터베이스 정규화는 데이터 중복을 최소화하고 무결성을 보장하기 위해 테이블을 체계적으로 구조화하는 과정임 정규화를 통해 데이터 이상 현상을 방지하고 데이터 일관성을 유지함 데이터 이상 현상 삽입 이상(Insertion Anomaly) 불필요한 데이터를 함께 삽입해야 하는 경우 ex) ...
데이터베이스 동시성 제어
개요 여러 트랜잭션이 동시에 데이터에 접근할 때 충돌을 방지하고 일관성을 보장하는 기법임 락 기반 동시성 제어 비관적 락(Pessimistic Locking) 충돌이 발생할 것으로 가정하고 데이터를 미리 잠금 트랜잭션이 데이터를 읽거나 수정하기 전에 락을 획득하여 다른 트랜잭션의 접근을 차단함 특징 데...
데이터베이스 트랜잭션과 ACID 속성
개요 트랜잭션은 데이터베이스에서 하나의 논리적 작업 단위로 실행되는 일련의 연산들임 원자성을 보장하여 전체가 성공하거나 전체가 실패함 여러 사용자가 동시에 데이터에 접근할 때 데이터 일관성을 보장하는 핵심 메커니즘임 트랜잭션의 생명 주기 트랜잭션은 시작부터 종료까지 여러 상태를 거침 아래 다이어그램은 논리적인 트랜잭션 ...
Cursor에서 MCP로 Jira/Confluence 연동하기
개요 Cursor IDE에서 MCP(Model Context Protocol) 서버를 통해 Jira와 Confluence를 직접 연동하는 방법을 소개함 Docker 기반 MCP 서버를 활용해 AI 어시스턴트가 Atlassian 도구에 접근할 수 있도록 설정함 프로젝트별 설정과 전역 설정 두 가지 방법을 모두 다룸 이 연동을 통해 Cu...
MCP(Model Context Protocol)란?
개요 MCP(Model Context Protocol)는 AI 모델이 다양한 데이터 소스나 도구, 외부 시스템과 실시간으로 연결되어 정보를 주고받을 수 있게 만드는 표준 연결 프로토콜임 AI가 단순히 답변만 하는 것이 아니라 실제 데이터베이스 접근, 문서 변경, 이메일 전송 등 실제 행동까지 할 수 있는 진정한 AI 에이전트로 발전할 수 있...
Google Colab 환경의 Matplotlib 한글 폰트 깨짐 현상
개요 Google Colab 환경에서 matplotlib 라이브러리 사용 시 한글 폰트가 네모(ㅁㅁㅁ) 형태로 깨지는 현상 해결 방법을 설명함 폰트 설치, matplotlib 폰트 캐시 갱신, 런타임 자동 재시작을 통해 문제를 해결함 문제 현상 matplotlib을 사용한 시각화 시 그래프의 제목, 축 라벨 등 한글 텍스트가 ...