DB 114

[7장] 몽고DB 고급 쿼리

집계 프레임워크 소개몽고DB의 집계 프레임워크는 정교한 데이터 변환과 분석을 수행할 수 있는 강력한 데이터 처리 도구집계 프레임워크의 핵심은 파이프라인 개념에 있음데이터는 파이프라인의 각 단계를 순차적으로 통과하며 변환되는데, 각 단계의 출력이 다음 단계의 입력으로 이어지는 연속적인 처리 과정을 거치게 됨이러한 설계는 복잡한 데이터 처리 작업을 논리적이고 단계적인 방식으로 구성할 수 있게 해 줌 집계 프레임워크의 유연하고 표현력 있는 문법은 다양한 수준의 데이터 처리를 가능하게 함간단한 필터링이나 그룹화부터 문서 전체의 구조를 재구성하는 복잡한 작업까지 수행할 수 있어, 다양한 비즈니스 요구사항에 대응할 수 있음 몽고DB의 집계가 제공하는 이점몽고DB의 집계 시스템은 데이터를 효과적으로 처리하고 분석할 ..

[6장] 스키마 설계와 데이터 모델링

서론현대 데이터베이스 관리에서 데이터 구조화 방식의 선택은 시스템의 성능과 확장성을 결정짓는 중추적인 요소몽고DB와 같은 현대적 데이터베이스의 도입으로, 데이터 관리 전략의 패러다임이 크게 변화하고 있고 특히 유연성과 확장성을 고려한 데이터 구조화의 중요성이 더욱 주목받고 있음 관계형 데이터베이스를 위한 스키마 설계관계형 데이터베이스의 핵심은 데이터의 신뢰성 보장과 시스템의 효율적 운영이며 이를 위한 두 가지 기본 원칙을 살펴보면 다음과 같음데이터 이상 현상 방지데이터 중복 감소 RDBMS에서 데이터 이상 현상은 데이터 수정 작업 과정에서 발생하는 정보의 불일치를 의미하며 이는 주로 데이터의 삽입, 삭제, 갱신과 같은 작업을 수행할 때 발생할 수 있음데이터 중복성은 동일한 정보가 데이터베이스의 여러 테이..

[5장] CRUD 작업과 기본 쿼리

몽고DB 기본 데이터 작업몽고DB 문서를 수정하기 위해서는 서버 연결, 관련 문서 조회, 지정된 속성 조정, 수정된 데이터의 데이터베이스 재전송 과정이 필요함각각의 CRUD 작업은 다음고 ㅏ같은 고유한 목적을 가짐생성 작업은 몽고DB 데이터베이스에 새로운 문서를 추가하는 데 사용읽기 작업은 데잉터베이스의 문서를 조회하는 데 사용수정 작업은 데이터베이스에 존재하는 문서를 수정하는 데 사용삭제 작업은 데이터베이스의 문서를 제거하는 데 사용 1. mongosh를 이용한 CRUD 작업 수행mongosh는 관계형 데이터베이스의 관리 콘솔과 같은 역할을 수행 위 예제를 통해 다음과 같은 주요 사항들을 확인 가능updateOne() 메서드에서 사용된 JSON 문서 { isbn: '101' }는 수정할 특정 문서를..

[4장] 몽고DB 연결

연결 방법몽고DB는 데이터베이스 연결을 위해 크게 두 가지 방식을 제공드라이버를 직접 사용하는 방식ODM 계층을 활용하는 방식 ODM은 모델 객체와 데이터베이스 문서 사이의 매핑을 효율적으로 처리하여 개발자의 작업을 편리하게 해 줌몽고DB는 다양한 프로그래밍 언어를 지원하지만 해당 장에서는 널리 사용되는 네 가지 언어인 PHP, 루비, Node.js, 파이썬에 초점을 맞춤 1. 루비를 이용한 몽고DB 연결루비는 몽고DB가 지원하는 주요 언어 중 하나로 안정적인 성능의 공식 드라이버를 제공함로컬 몽고DB 호스트에 연결하기 위한 기본 단계는 다음과 같음드라이버를 Gemfile에 추가하여 설치데이터베이스에 연결 (실제 환경에서는 복제본 세트에 연결)client_host 서버는 클라이언트 드라이버의 시드 서버 ..

[3장] 개발자 도구

서론몽고DB와 그 생태계의 잠재력을 충분히 활용하기 위해서는 몽고DB가 제공하는 다양한 개발자 도구에 관한 숙련도가 필수적몽고DB는 오랫동안 개발자들에게 최상의 도구를 제공하여 몽고DB 클러스터와 데이터를 효과적으로 다룰 수 있도록 지원해 옴2011년 몽고DB 1.0 버전 출시 이후 2년 만에 10gen은 몽고DB 관리 서비스를 출시했으며, 이는 후에 Ops 매니저로 발전했고 시스템 관리와 모니터링을 위한 핵심 포털 임무를 수행했음초기 릴리즈부터 몽고DB 생태계의 필수 요소였던 관리 도구는 몽고DB의 중요성을 잘 보여주며, DB 시스템 아키텍처의 발전과 함께 개발자 도구 제공이라는 두 가지 목표를 추구했음 개발 도구 소개몽고DB 도구들은 효율적인 데이터베이스 관리와 쿼리 최적화를 위해 설계되었으며, 생산..

[2장] 몽고DB 아키텍처

서론복제 기술은 몽고DB의 분산 아키텍처를 구성하는 근간이 되는 요소이며 동일한 데이터를 여러 서버에 분산하여 저장함으로써 시스템의 접근성을 크게 향상함예기치 않은 장애 상황에서도 중단 없는 안정적인 서비스를 제공할 수 있게 하여, 시스템의 신뢰성과 가용성을 보장 샤딩은 데이터를 여러 서버에 효율적으로 분산하는 수평적 확장 전략서비스의 규모가 확대되고 처리해야 할 데이터의 양이 급증하는 상황에서, 샤딩 기술은 다수의 서버를 활용하여 읽기와 쓰기 작업을 원활하게 처리할 수 있게 함시스템의 처리 능력을 효과적으로 확장하고 대규모 데이터 환경에서도 최적의 성능을 유지할 수 있는 비결 복제와 샤딩복제는 데이터를 여러 위치에 중복으로 저장하여 시스템의 안정성과 데이터 접근성을 높이는 기술샤딩은 대규모 데이터베이스..

[Hibernate/JPA] 캐싱

1. 데이터베이스 캐싱 1.1 캐싱의 계층 구조캐싱은 데이터베이스 성능 최적화의 핵심DB → OS → 애플리케이션 → (ORM) → 2차 캐시 → 1차 캐시 등 여러 계층에 걸쳐 존재디스크 접근을 최소화하고, DB/OS/애플리케이션 메모리에서 최대한 데이터를 제공하는 것이 핵심 1.2 캐시 동기화 전략 가. Cache-aside애플리케이션이 캐시에서 먼저 데이터를 찾고, 없으면 DB에서 조회 후 캐시에 넣음쓰기는 데이터베이스와 캐시를 모두 갱신해야 함 (동기화 주의 필요) 나. Read-through캐시에 데이터가 없을 때, 캐시 시스템이 DB에서 자동으로 데이터 조회 및 캐시 삽입애플리케이션에서는 항상 캐시만 조회 다. Write-through쓰기 작업이 캐시와 DB에 동시에 적용됨캐시 일관성 유..

DB/JPA 2025.06.11

[Hibernate/JPA] 트랜잭션과 동시성 제어 패턴

서론 실제 금융/암호화폐/전자지갑 서비스에서 동시성 결함이나 트랜잭션 제어 미비로 인해 막대한 금액의 해킹 피해가 발생할 수 있으므로 보안과 데이터 무결성은 중요한 개념i.g. FlexCoin, Poloniex 해킹 사례여러 건의 출금을 거의 동시에 요청 → 음수 잔고 허용, 데이터베이스에 잘못된 레코드가 삽입되었고 이로 인해 시스템 무결성이 깨지고 공격자는 훨씬 더 많은 금액을 탈취함 트랜잭션 보장은 매우 중요한 개념구글 Spanner 등 신세대 DBMS조차 "트랜잭션을 포기하는 것보다, 필요할 때 성능 병목을 해결하는 것이 현명하다"라고 명시MongoDB 등도 결국 ACID 보장 기능을 추가 (4.0+ 버전부터 적용) 1. ACID와 트랜잭션 동시성 제어모든 DB 작업은 트랜잭션 내에서 진행됨Auto..

DB/JPA 2025.06.09

[Hibernate/JPA] Fetching

1. JDBC Statement Fetch Size 1.1 Statement Fetch Size란?JDBC Statement의 ResultSet은 DB 커서로, 한 번에 "몇 개의 행(row)"을 클라이언트로 가져올지 결정하는 값이 fetch sizestatement.setFetchSize(n)와 같이 설정하면n 개씩 데이터 fetch 하고네트워크 round-trip 횟수와 메모리 사용량에 직접적 영향을 끼침 1.2 DBMS별 기본 fetch size와 특징 가. Oracledefault fetch size: 1010g, 11g 드라이버는 최대 사이즈로 버퍼 미리 할당 (VARCHAR2(4000) 컬럼은 4000바이트)12c부터는 실제 데이터 크기만큼만 할당 (메모리 효율 ↑)Statement 캐싱 사용..

DB/JPA 2025.06.09

[Hibernate/JPA] Batching

1. JDBC 배치 업데이트와 Hibernate 배치 1.1 JDBC 배치 업데이트(Batch Update) 기본 개념JDBC 2.0부터 여러 개의 INSERT, UPDATE, DELETE statement를 하나의 DB 요청으로 묶어 실행 가능addBatch()로 여러 statement를 쌓고executeBatch()로 한 번에 실행 JDBC 배치 업데이트를 실행함으로써 얻을 수 있는 이점은 다음과 같음데이터베이스 왕복 (Round Trip) 횟수 감소트랜잭션 응답 시간 대폭 단축대량 처리 (수천~수만 건)에서 필수적 성능 최적화 1.2 Statement vs PreparedStatement 배치Statement 배치는 각 SQL이 완전히 다른 정적 SQL일 때 실행드라이버/DB마다 지원 및 동작 방식..

DB/JPA 2025.06.04