본문 바로가기

MongoDB14

[MongoDB] Ch14 - 샤딩 소개 Ch14 샤딩 소개 샤딩과 클러스터 구성 요소 소개 샤딩 구성 방법 샤딩과 애플리케이션의 상호작용 기본 14.1 샤딩이란 샤딩은 여러 장비에 걸쳐 데이터를 분할하는 과정이다 (파티셔닝이라고도 불린다) 각 장비에 데이터 서브셋을 넣음으로써, 더 많은 수의 덜 강력한 장비로 더 많은 데이터를 저장하고 더 많은 부하를 처리할 수 있다 또한, 더 자주 접근하는 데이터를 성능이 좋은 서버에 배치할 수 있다 몽고DB는 애플리케이션에서 구조를 추상화하고 시스템 관리를 간단하게 하는 자동 샤딩을 지원한다 운영 측면에서 몽고DB가 샤드에 걸쳐 데이터 분산을 자동화하므로 용량을 추가하고 제거하기가 쉽다 샤딩은 몽고DB를 구성하는 가장 어렵고 복잡한 방법이다 모니터링할 구성 요소가 많고, 클러스터에서 데이터가 자동으로 옮겨.. 2022. 2. 21.
[MongoDB] Ch13 - 관리 복제 셋 관리를 살펴보자 개별 멤버에 유지 보수 수행하기 다양한 환경에서 복제 셋 구성하기 사용자 oplog 정보를 얻고 크기 조정하기 좀 더 색다른 복제 셋 구성하기 마스터/슬레이브 구조에서 복제 셋으로 전환하기 13.1 독립 실행형 모드에서 멤버 시작 쓰기와 관련된 많은 유지보수 작업은 세컨더리에서 수행할 수 없고 애플리케이션 성능에 영향을 미치므로 프라이머리에서 수행도 어렵다 독립 실행형 모드에서 멤버를 시작하려면 먼저 명령행 인수를 확인해야 한다 replSet 옵션 없이 서버를 재시작한다 다른 멤버들이 서버를 발견하지 못하도록 서버가 다른 포트로 수신하게 된다 dbpath는 그대로 유지한다 유지 보수 수행을 마치면, 서버를 종료하고 원래 옵션으로 재시작한다 13.2 복제 셋 구성 복제 셋 구성은 .. 2022. 1. 28.
[MongoDB] Ch12 - 애플리케이션에서 복제 셋 연결 애플리케이션이 복제 셋과 어떻게 상호작용하는지 살펴보자 연결 및 장애 조치를 수행하는 방법 쓰기 시 복제 대기하는 방법 올바른 멤버에 읽기 요청을 라우팅하는 방법 12.1 클라이언트-복제 셋 연결동작 복제 셋이면 기본적으로 몽고DB 클라이언트는 프라이머리에 연결되고, 모든 트래픽을 프라이머리에 라우팅한다 복제 셋에 대한 연결은 단일 서버에 대한 연결과 비슷하다 드라이버에서 MongoClient를 사용하고, 연결할 드라이버를 위한 시드 목록을 제공하자 시드 목록은 단순히 서버 주소 목록이다 시드(Seed)는 애플리케이션이 데이터를 읽고 쓸 복제 셋의 멤버다 모든 멤버를 나열할 필요는 없다 (드라이버는 시드에 연결되면 다른 멤버들을 발견한다) 모든 몽고DB 드라이버는 서버 검색 및 모니터링 사양을 준수한다 .. 2022. 1. 24.
[MongoDB] Ch11 - 복제 셋 구성 요소 복제 셋 조각들이 어떻게 조합되는지 살펴보자 복제 셋 멤버가 새로운 데이터를 복제하는 방법 새로운 멤버를 영입하는 방법 선출이 작동하는 방법 발생할 수 있는 서버 및 네트워크 오류 시나리오 11.1 동기화 복제는 여러 서버에 걸쳐 복사본을 보관하는 데 관련 있다 몽고DB는 프라이머리가 수행한 쓰기를 모두 포함하는 로그, 즉 oplog를 보관함으로써 복제를 수행한다 oplog : 프라이머리의 로컬 데이터베이스에 있는 제한 컬렉션 각 세컨더리는 프라이머리로부터 복제한 작업을 각각 기록하는 oplog를 보관한다 동기화 소스로 사용되도록 한다 세컨더리 서버가 종료되었다 다시 시작되면 oplog에 있는 마지막 연산과 동기화한다 일반적으로 oplog는 기본 크기면 충분하다 oplog를 만들기 전에 oplogSize.. 2022. 1. 21.
[MongoDB] Ch10 - 복제 몽고DB의 고가용성 시스템인 복제 셋을 소개하며 아래와 같은 내용을 다뤄보자 복제 셋의 정의 복제 셋을 설정하는 방법 복제 셋 멤버 구성 옵션 10.1 복제 소개 서버를 단일로 사용하면 매우 위험하다 복제는 데이터의 동일한 복사본을 여러 서버상에서 보관하는 방법이며 실제 서비스를 배포할 때 권장된다 한 대 또는 그 이상의 서버에 이상이 발생하더라도, 복제는 애플리케이션이 정상적으로 동작하게 하고 데이터를 안전하게 보존한다 몽고DB를 사용하면 복제 셋을 생성함으로써 복제를 설정할 수 있다 복제 셋은 클라이언트 요청을 처리하는 프라이머리 서버 한 대와, 프라이머리 데이터의 복사본을 갖는 세컨더리 서버 여러 대로 이루어진다 프라이머리 서버에 장애가 발생하면 세컨더리 서버는 자신들 중에서 새로운 프라이머리 서버.. 2022. 1. 18.
[MongoDB] Ch9 - 애플리케이션 설계 애플리케이션을 몽고DB와 효율적으로 작동하도록 설계하는 방법을 다뤄보자 스키마 설계 고려 사항 데이터 내장 방식과 참조 방식 중 결정하기 최적화를 위한 팁 일관성 고려 사항 스키마 마이그레이션 방법 스키마 관리 방법 몽고DB가 데이터 스토리지로 적합하지 않은 경우 9.1 스키마 설계 고려 사항 데이터 표현의 핵심 요소는 데이터가 도큐먼트에서 표현되는 방식인 스키마 설계다 가장 좋은 설계 접근 방식은 애플리케이션에서 원하는 방식으로 데이터를 표현하는 방법이다 스키마 모델링 전, 먼저 쿼리 및 데이터 접근 패턴을 이해해야 한다 스키마 설계할 때 고려할 주요 요소 제약 사항 데이터베이스와 하드웨어 제약 사항을 이해해야 한다 도큐먼트의 최대 크기는 16MB이며, 디스크에서 전체 도큐먼트를 읽고 쓴다 갱신은 전체.. 2022. 1. 11.
[MongoDB] Ch8 - 트랜잭션 몽고DB는 여러 작업, 컬렉션, DB, 도큐먼트 및 샤드에서 ACID 호환 트랜잭션을 지원한다 8.1 트랜잭션 소개 트랜잭션은 읽기나 쓰기 작업이 가능한 데이터베이스 작업을 하나 이상 포함하는 데이터베이스의 논리적 처리 단위다 트랜잭션의 중요한 특징은 작업이 성공하든 실패하든 부분적으로는 완료되지 않는다는 점이다 트랜잭션을 사용하려면 몽고DB 버전 4.2 이상이어야 한다 1. ACID의 정의 ‘진정한’ 트랜잭션이 되려면 ACID라는 속성을 충족해야 한다 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 영속성(Durablity)의 약어다 ACID 트랜잭션은 정전 등 오류가 발생할 때도 데이터와 데이터베이스 상태의 유효성을 보장한다 원자성(Atomicity) 트랜잭션.. 2022. 1. 4.