2025/04 53

[몽고DB 완벽 가이드] 8. 트랜잭션

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. 1. 트랜잭션 소개데이터베이스의 논리적 처리 단위MongoDB는 복제 셋 및 샤드 클러스터 환경에서도 트랜잭션을 지원함 2. 트랜잭션 사용법세션 기반 구조MongoDB는 클라이언트-서버 간의 세션 관리를 기반으로 트랜잭션을 구현함분산 환경에서 클라이언트의 연속적인 작업을 추적하도록 하기 위함구분논리 세션 (Logical Session)서버 세션 (Server Session)정의클라이언트의 트랜잭션 흐름 추적 객체실제 트랜잭션 실행 담당역할트랜잭션 시퀀스, 시간, 인과관계 추적요청 추적 및 세션 상태 관리위치클라이언트 애플리케이션 내부MongoDB 서버 내부관계서버 세션과 연결되어 동작논리 세션이..

Database/MongoDB 2025.04.30

[몽고DB 완벽 가이드] 7. 집계 프레임워크

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다.1. 파이프라인, 단계 및 조정 가능 항목집계 프레임워크항목설명정의파이프라인 기반 데이터 분석·가공 도구 모음입력하나의 컬렉션출력가공된 도큐먼트 스트림단계(Stage)파이프라인의 구성 단위- 각 단계는 도큐먼트 스트림을 입력으로 받고, 가공된 도큐먼트 스트림을 출력함옵션(knobs / tunables) 각 단계는 파라미터 설정 가능 (원하는 방식으로 데이터 처리 가능) 2. 단계 시작하기: 익숙한 작업들aggregate()연산자기능$match조건 필터링$skip, $limit페이징$project필드 선택 및 재구성$sort정렬 예제더보기db.movies.aggregate( {$match: {..

Database/MongoDB 2025.04.30

[몽고DB 완벽 가이드] 6. 특수 인덱스와 컬렉션 유형

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. 1. 전문 검색을 위한 인덱스검색 관련 키워드 (일치, 정규 표현식 등) 은 한계가 존재함쿼리 속도가 느리며, 문법과 같은 언어 특성을 반영하기도 쉽지 않음 텍스트 인덱스문자열 기반의 데이터를 빠르게 검색할 수 있도록 도와주는 인덱스역색인 구조로 저장됨 (단어 -> 문서 목록)항목장점한계비용/성능 문제검색 성능빠른 텍스트 검색복잡한 조건 검색에는 제한 있음 - 정규식복잡한 쿼리는 성능 저하 발생텍스트 처리전처리 지원1. 토큰화2. 소문자화3. 정지어 제거 (a, the, is 등)4. 형태소 분석5. 중복 제거문법적 의미나 자연어 이해는 어려움비용 발생- 형태소 분석 - 인덱스 갱신인덱스 구조/..

Database/MongoDB 2025.04.30

[몽고DB 완벽 가이드] 5. 인덱싱

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. 1. 인덱싱 소개컬렉션 스캔인덱스를 사용하지 않는 쿼리컬렉션 풀스캔이 일어남 기본 인덱스자주 사용되는 쿼리와 빨리 수행되어야 하는 쿼리의 공통적인 키 셋에 적용 예제) 기본 인덱스 생성더보기db.users.createIndex({"name": 1}) # name 필드에 대해 인덱스 생성 (1: 오름차순, -1: 내림차순) 복합 인덱스복수개의 키로 구성된 인덱스모든 값을 정렬된 순서로 보관 (정렬 쿼리 성능 향상)항목설명비고 / 핵심 포인트선택성 (Selectivity)인덱스가 얼마나 좁은 범위를 스캔하는지선택성이 높을수록 좋음 (레코드 수 적을수록)컬럼 구성 우선순위인덱스 필드의 구성 순서 전략..

Database/MongoDB 2025.04.29

[몽고DB 완벽 가이드] 4. 쿼리

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. 1. find()항목인자설명필터첫 번째 매개변수조건 명시 ({}: 전체 조회)프로젝션두 번째 매개변수 필드 지정 (1: 포함, 0: 제외) 예제) 필터더보기db.pageviews.find({})db.pageviews.find({pageviews: 1})db.pageviews.find({pageviews: 1, url: "www.example.org"}) 예제) 프로젝션더보기db.pageviews.find({url: "www.example.com"}, {_id: 1}) # _id 만 출력db.pageviews.find({url: "www.example.com"}, {_id: 0}) # _id 만 ..

Database/MongoDB 2025.04.28

[몽고DB 완벽 가이드] 3. 도큐먼트 생성, 갱신, 삭제

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다.1. 도큐먼트 삽입 insertOne()insertMany()기능단일 도큐먼트 삽입다수 도큐먼트 일괄 삽입특징insertedId 반환→ 성공 여부 및 생성된 _id 확인 가능크기 제한- 48MB (maxMessageSizeBytes)제한 크기 초과 시 자동 분할 삽입옵션- bypassDocumentValidation: 유효성 검사 비활성화- writeConcern: 쓰기 신뢰성- bypassDocumentValidation, writeConcern- ordered: 삽입 중 에러 시 중단 여부 예시) 옵션더보기더보기bypassDocumentValidation// age는 유효성 검사 설정이 된 필..

Database/MongoDB 2025.04.28

[몽고DB 완벽 가이드] 2. 몽고DB 기본

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. 1. 도큐먼트MongoDB 데이터의 기본 단위키-값 집합ex) JSON, 맵, 해시, 딕셔너리, 객체항목내용키문자열- 정렬된 상태로 저장됨- 대소문자 구분- 중복 불가- null 사용 불가- . (점)과 $는 예약어값다양한 데이터형 지원- 대소문자 구분 2. 컬렉션도큐먼트 모음보통 유사한 구조의 도큐먼트를 그룹화함쿼리 속도 향상효율적인 인덱싱데이터 지역성 향상 특징항목내용동적 스키마하나의 컬렉션 안에 서로 다른 구조의 도큐먼트 존재 가능네이밍 규칙- 빈 문자열 불가- null 문자 불가- 'system' 시작 불가- $ 사용 불가서브 컬렉션- 네임스페이스에 .(점)을 사용하여 서브컬렉션 생성 가..

Database/MongoDB 2025.04.27

[몽고DB 완벽 가이드] 1. 몽고DB 소개

크리스티나 초도로 , 섀넌 브래드쇼 , 오언 브라질 님의 "몽고DB 완벽 가이드" 책을 정리한 포스팅 입니다. MongoDB의 만들어진 배경과 지향점, 선택해야 하는 이유를 설명합니다. 1. 손쉬운 사용Document-Based Database항목설명예시 (MongoDB)분산 확장의 용이성분산 시스템에서 데이터를 쉽게 분산/관리할 수 있음샤딩 지원유연한 모델미리 정의된 스키마 없이 데이터 저장 ✅➡️ 빠른 개발 가능동적으로 도큐먼트 필드 추가/삭제 가능ex) JSON복잡한 계층 관계 표현내장 도큐먼트 및 배열을 하나의 레코드로 표현 ✅➡️ OOP 개발에 적합embedded documents, arrays 지원 2. 확장 가능한 설계설계 배경애플리케이션의 발전으로 다루는 데이터 규모가 커짐 (대용량 데이..

Database/MongoDB 2025.04.27

[자바 ORM 표준 JPA 프로그래밍] 16. 트랜잭션과 락, 2차 캐시

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다.1. 트랜잭션과 락NON-REPEATABLE READ사용자 A, B가 동시에 같은 데이터를 수정 → 나중에 저장한 B의 값만 반영되어 A의 수정사항이 유실됨.트랜잭션만으로는 해결 불가능 (트랜잭션 범위를 넘어선 문제)해결 방법설명구현 방식마지막 커밋만 인정마지막에 커밋한 트랜잭션의 값이 저장됨(이전 변경 내용이 덮어씌워짐)버전 관리 없이 단순히 UPDATE 수행최초 커밋만 인정먼저 커밋한 트랜잭션만 인정이후 커밋은 버전 불일치로 예외 발생JPA 낙관적 락 적용 (@Version)충돌 내용 병합동시에 수정된 데이터를 병합하여 둘 다 반영OptimisticLockException 발생 시 직접 예외 처리 낙관적 락과 비관적 락구분..

[자바 ORM 표준 JPA 프로그래밍] 15. 고급 주제와 성능 최적화

김영한 님의 "자바 ORM 표준 JPA 프로그래밍" 책을 정리한 포스팅 입니다.1. 예외 처리JPA 예외 변환서비스 계층이 JPA 구현 기술에 의존하지 않게 하기 위해 예외를 추상화항목설명기능 제공 클래스PersistenceExceptionTranslationPostProcessor적용 방식@Repository가 붙은 클래스를 대상으로 AOP 적용JPA 예외를 스프링 예외로 변환 (DataAccessException 등) JPA 표준 예외PersistenceException (RuntimeException 하위 클래스)구분설명롤백 필수(심각한 예외)예외 복구 시, 커밋 ❌- EntityExistsException: 엔티티 영속화 시도 중, 이미 같은 엔티티가 있음- EntityNotFoundExcepti..