IT/몽고DB (15) 썸네일형 리스트형 몽고DB 노드별 구성요소 및 정의 Replica Set 노드 구성요소Replica Set은 MongoDB의 고가용성(High Availability)과 장애 복구(Failover)를 위한 구조입니다. 기본적으로 다음과 같은 노드로 구성됩니다.1. Primary Node (주 노드)클라이언트의 읽기/쓰기 요청을 처리하는 노드다른 Secondary 노드에게 데이터를 복제(replication)장애가 발생하면 Secondary 노드 중 하나가 자동으로 Primary로 승격(failover)2. Secondary Node (보조 노드)Primary 노드의 데이터를 비동기적으로 복제하는 노드기본적으로 읽기 요청을 처리하지 않지만, 읽기 전용(Read Preference: Secondary) 설정 시 일부 읽기 요청 가능Primary가 장애가 .. 몽고DB - Dirty Cache 문제 해결 MongoDB에서 Dirty Cache(더티 캐시) 문제는 일반적으로 데이터가 캐시에 남아 있는 동안 변경되었거나, 동기화되지 않아 최신 데이터를 반영하지 못하는 상황을 의미합니다. 이를 해결하기 위한 방법은 다음과 같습니다.1. Write Concern 설정 강화MongoDB는 기본적으로 비동기적인 쓰기를 지원하는데, 데이터 일관성을 높이기 위해 Write Concern을 강화하면 Dirty Cache 문제를 줄일 수 있습니다.db.collection.insertOne( { name: "John", age: 30 }, { writeConcern: { w: "majority", j: true } });• w: "majority": 다수의 노드에서 데이터가 반영될 때까지 대기• j: true: 디스크에.. 몽고DB와 오라클 활용 전략 MongoDB는 빠른 데이터 수집 및 저장에 강점 • MongoDB는 스키마리스(Schema-less) 구조이므로 다양한 형식의 데이터를 빠르게 저장할 수 있음 • 실시간으로 대량의 데이터를 수집하는 데 적합 (예: 로그 데이터, IoT 센서 데이터, 사용자 이벤트 로그)Oracle은 정제된 데이터를 안정적으로 관리하는 데 강점 • 데이터가 정형화된 후, 정제된 상태로 Oracle에 저장하면 SQL 기반으로 효율적인 조회와 분석이 가능 • 강력한 ACID 트랜잭션을 제공하므로, 데이터 무결성과 일관성이 중요한 시스템에서 활용 가능 MongoDB → Oracle로 데이터 이동하는 과정에서 데이터 정제 가능 • MongoDB에서 데이터를 빠르게 받아서 필요한 데이터만 선별, 변환 후 Oracle로 .. 몽고DB TTL 인덱스 정의 및 활용 전략 TTL 인덱스TTL(Time-To-Live) 인덱스는 MongoDB에서 특정 시간이 지나면 자동으로 문서를 삭제하는 기능입니다. 이를 통해 만료된 데이터를 정리하여 저장 공간을 효율적으로 사용하고, 성능을 최적화할 수 있습니다.TTL 인덱스 생성 방법TTL 인덱스를 사용하려면 컬렉션의 특정 날짜/시간 필드에 대해 expireAfterSeconds 옵션을 설정해야 합니다.db.logs.createIndex( { "createdAt": 1 }, { expireAfterSeconds: 3600 } // 1시간(3600초) 후 자동 삭제); 위 코드에서 createdAt 필드에 대해 TTL 인덱스를 생성하였으며, 데이터가 삽입된 후 1시간(3600초) 뒤에 해당 문서가 삭제됩니다.TTL 인덱스 활용 전략TT.. 몽고DB - Config 서버 MongoDB의 샤드 클러스터 구조에서 Config 서버는 클러스터의 메타데이터와 설정 정보를 관리하는 중요한 역할을 담당합니다.1. 샤딩 메타데이터 관리• 어떤 데이터가 어떤 샤드에 저장되어 있는지에 대한 매핑 정보를 저장합니다.• MongoDB는 데이터를 샤드 키를 기준으로 나누는데, 이 정보를 Config 서버가 관리합니다.2. 클러스터 구성 정보 유지• 클러스터에 속한 샤드, 라우터(mongos), 복제 세트 구성 등의 정보를 저장합니다.• 클러스터가 확장되거나 변경되면 Config 서버에 자동으로 업데이트됩니다.3. 트랜잭션 및 일관성 보장• Config 서버는 데이터를 원자적으로 업데이트하여 클러스터의 일관성을 보장합니다.• 클라이언트가 mongos를 통해 데이터에 접근할 때, 최신 메타데이터.. 몽고DB - mongos MongoDB에서 mongos는 주로 라우터(Router) 역할을 담당하지만, 이를 넘어서 몇 가지 중요한 기능을 수행합니다.1. 라우팅 기능 (Primary Role) • 클라이언트 애플리케이션으로부터의 요청을 적절한 샤드로 라우팅합니다. • 애플리케이션은 샤딩된 데이터베이스 구조를 신경 쓸 필요 없이 mongos에 연결하여 데이터에 접근할 수 있습니다. • mongos는 Config 서버로부터 메타데이터를 가져와 어떤 요청을 어떤 샤드에 전달할지 결정합니다.2. 부하 분산(Load Balancing) • 클러스터 전체에 걸쳐 데이터 읽기/쓰기 요청을 고르게 분산합니다. • 특정 샤드에 트래픽이 집중되지 않도록 요청을 분배하여 성능을 최적화합니다. • 여러 mongos 인스턴스를 병렬로 배포.. 몽고DB expire after 동작 주기 MongoDB에서 expire after 동작은 TTL (Time-To-Live) 인덱스를 통해 구현됩니다.TTL 인덱스를 사용하면 일정 시간 이후에 문서가 자동으로 삭제되도록 설정할 수 있습니다.이 기능은 주로 로그, 세션 데이터, 임시 데이터를 자동으로 정리하는 데 유용합니다. TTL 인덱스의 동작 주기는 다음과 같은 절차에 따라 이루어집니다 TTL 인덱스 생성: TTL 인덱스는 특정 필드에 대해 설정되며, 해당 필드는 날짜 값을 가져야 합니다. 이 필드의 값은 문서가 언제 만료될지를 나타냅니다. 예를 들어, 다음과 같이 인덱스를 생성할 수 있습니다:db.collection.createIndex({ "expireAt": 1 }, { expireAfterSeconds: 0 })여기서 expireAt 필.. 몽고DB - Cache Dirty MongoDB의 성능 저하와 관련된 문제를 해결하려면 아래와 같은 주요 단계들을 점검하고 최적화 방안을 고려해야 합니다.cache dirty가 증가하고 있는 상황은 메모리 관리 및 데이터 처리와 밀접한 연관이 있으므로, 이를 포함한 종합적인 접근이 필요합니다.Cache Dirty 문제 분석MongoDB에서 cache dirty가 증가하는 주요 원인은 다음과 같습니다쓰기 작업의 과도한 증가: 데이터가 빠르게 쓰여지고 있지만, 디스크로의 flush 속도가 이를 따라가지 못할 때 발생합니다.메모리 부족: MongoDB가 데이터 캐싱에 필요한 메모리를 충분히 확보하지 못하는 경우.WiredTiger 캐시 부족: WiredTiger 엔진은 기본적으로 메모리의 50%를 사용하며, 이 캐시가 부족하면 문제가 발생할 .. 이전 1 2 다음