MongoDB

1. MongoDB OpLogOpLog 를 통해 현재 실행중인 쿼리의 클라이언트 정보, 락의 유형 등을 확인할 수 있다. 2. MongoDB 테스트 버전유형버전구성mongosh2.2.10 mongodb7.0.12Config : 1개, 포트 20000Route : 1개, 포트 20001Shard1 : 1개, 포트 30001Shard2 : 1개, 포트 40001  3. OpLog 확인3-1. Session 1 에서 인덱스 생성[direct: mongos] indexDB> db.uniqueIndex.createIndex( { dummy : 1 } )dummy_1 3-2. Session 2 에서 OpLog 조회위의 인덱스가 수행되는 동안 OpLog 를 조회하면 아래와 같은 정보가 출력된다.[direct: mon..
1. MongoDB Yield 잠금MongoDB 는 쿼리를 실행하는 도중 잠깐 쉬었다 실행을 재개한다.이 때 잠금과 스냅샷을 모두 해제하고 지정된 시간동안 쉬다 다시 잠금을 획득 후 다음 실행을 이어가게 된다.이는 트랜잭션의 동시성 처리를 우수하게 만들기 위함이다. 2. MongoDB 테스트 버전유형버전구성mongosh2.2.10 mongodb7.0.12Config : 1개, 포트 20000Route : 1개, 포트 20001Shard1 : 1개, 포트 30001Shard2 : 1개, 포트 40001  3. Yield 와 관련된 설정 값Yield 에서 특정 건수를 읽으면 특정 시간을 쉬는데internalQueryExecYieldPeriodMS 와 internalQueryExecYieldIterations..
1. MongoDB 잠금MongoDB 서버에서는 멀티 쓰레드의 동시 처리 중에 발생할 수 있는 쓰레드 간의 충돌 문제를 방지하기 위해 잠금을 사용한다. 1-1. MongoDB 잠금유형유형설명묵시적 잠금쿼리가 실행될 때 자동으로 획득했다 해제되는 잠금명시적 잠금사용자가 명령어로 잠금을 획득  2. MongoDB 테스트 버전유형버전구성mongosh2.2.10 mongodb7.0.12Config : 1개, 포트 20000Route : 1개, 포트 20001Shard1 : 1개, 포트 30001Shard2 : 1개, 포트 40001  3. 글로벌 잠금 획득 해제3-1. fsyncLock 로 획득fsyncLock 은 글로벌 잠금을 획득하는 함수이다.MongoDB 서버 인스턴스에 단 하나만 있는 잠금으로, 이를 인..
1. MongoDB TTL 인덱스TTL 인덱스는 특정 시간이 지나면 도큐먼트를 자동으로 삭제하는 기능을 제공한다.TTL 인덱스는 주로 로그 데이터나 세션 정보 등과 같이 일정 기간 후 자동으로 삭제해야 하는 데이터를 관리할 때 유용하다.다만 TTL 인덱스 필드값에 시계열 데이터가 적재되지 않으면 지워지지 않는다.1-1. MongoDB 인덱스 유형유형설명단일 필드 인덱스특정 필드에 대한 인덱스복합 인덱스여러 필드를 조합한 인덱스해시 인덱스해시된 값으로 인덱스텍스트 인덱스텍스트 검색을 위한 인덱스2dsphere 인덱스지리공간 데이터에 대한 인덱스유일 인덱스유일한 값만 허용- 로컬서버 기준에 한정, 샤드서버로 데이터가 분산되는 경우에는 어플리케이션에서 처리  2. MongoDB 테스트 버전유형버전구성mongo..
1. MongoDB Partial 인덱스쿼리를 효율적으로 사용하기 위해 MongoDB 는 인덱스를 제공한다.MongoDB 에서 인덱스 유형은 매우 다양하다.1-1. MongoDB 인덱스 유형유형설명단일 필드 인덱스특정 필드에 대한 인덱스복합 인덱스여러 필드를 조합한 인덱스해시 인덱스해시된 값으로 인덱스텍스트 인덱스텍스트 검색을 위한 인덱스2dsphere 인덱스지리공간 데이터에 대한 인덱스유일 인덱스유일한 값만 허용- 로컬서버 기준에 한정, 샤드서버로 데이터가 분산되는 경우에는 어플리케이션에서 처리 이러한 인덱스의 옵션에서 Partial 을 제공하는데 , 이 때는 이 필드에 포함된 값이 특정 값 이상일 때만 인덱스에 포함시킨다. 2. MongoDB 테스트 버전유형버전구성mongosh2.2.10 mongod..
1. MongoDB 유니크 인덱스쿼리를 효율적으로 사용하기 위해 MongoDB 는 인덱스를 제공한다.MongoDB 에서 인덱스 유형은 매우 다양하다.1-1. MongoDB 인덱스 유형유형설명단일 필드 인덱스특정 필드에 대한 인덱스복합 인덱스여러 필드를 조합한 인덱스해시 인덱스해시된 값으로 인덱스텍스트 인덱스텍스트 검색을 위한 인덱스2dsphere 인덱스지리공간 데이터에 대한 인덱스유일 인덱스유일한 값만 허용- 로컬서버 기준에 한정, 샤드서버로 데이터가 분산되는 경우에는 어플리케이션에서 처리  2. MongoDB 테스트 버전유형버전구성mongosh2.2.10 mongodb7.0.12Config : 1개, 포트 20000Route : 1개, 포트 20001Shard1 : 1개, 포트 30001Shard2 :..
1. MongoDB 전문검색 인덱스MongoDB 인덱스에서 전문검색 인덱스는 문자열을 빠르게 검색해 주는 방법이다.형태소 분석방식과 N-Gram 알고리즘 방식이 있다. 2. MongoDB 테스트 버전유형버전구성mongosh2.2.10 mongodb7.0.12Config : 1개, 포트 20000Route : 1개, 포트 20001Shard1 : 1개, 포트 30001Shard2 : 1개, 포트 40001  3. MongoDB 테스트 데이터 적재인덱스 생성 시 text 옵션을 주면 전문검색 인덱스로 생성된다.[direct: mongos] indexDB> db.wordCollection.insert( { contents : "Mozi Blog is one of Tech Blogs" } ){ acknowle..
1. MongoDB 실행계획쿼리가 효율적으로 실행되었는지 알기위해 MongoDB 는 explain 이라는 명령을 제공한다.실행계획을 분석하는 방법은 내용이 방대하여 여기에서는 다루지 않는다. 2. MongoDB 테스트 버전유형버전구성mongosh2.2.10 mongodb7.0.12Config : 1개, 포트 20000Route : 1개, 포트 20001Shard1 : 1개, 포트 30001Shard2 : 1개, 포트 40001  3. 실행계획 확인# 데이터베이스 이동[direct: mongos] test> use explainDBswitched to db explainDB# 데이터 적재[direct: mongos] explainDB> db.explainCollection.insert ( { identit..
샤딩 알고리즘청크각 컬렉션은 샤드 키를 기준으로 잘게 쪼개져 여러 샤드에 분산되어 관리된다.이렇게 쪼개진 컬렉션의 조각(파티션)들을 청크라고 한다. 청크는 샤드 키의 원본 값 또는 해시 값의 일정 범위를 가진다.샤드 키에서 가장 작은 값은 MinKey, 가장 큰 값은 MaxKey 로도큐먼트의 필드가 가질수 있는 최솟값과 최댓값을 지칭하는 가상의 값을 의미하는 예약어인데모든 청크는 MinKey 와 MaxKey 사이의 각 영역을 담당하게 된다. 청크는 어떠한 물리적인 의미를 가지지 않으며, 논리적으로만 존재하는 개념이다.즉 청크 단위로 데이터파일이 생성되거나 데이터가 모여있지 않다. 실제로 청크에 관계없이 하나의 컬렉션에 속한 데이터는 하나의 데이터 파일에 섞여서 존재한다.물론 컬렉션의 각 인덱스는 개별 파..
WiredTiger 엔진WiredTiger 스토리지 엔진은 트랜잭션을 지원하는 임베디드 데이터베이스 엔진으로 사용된다. WiredTiger 스토리지 엔진은 내장된 캐시를 가지고 있다.이 캐시는 디스크의 인덱스나 데이터 파일을 메모리에 캐시하여 빠르게 쿼리를 처리하고,데이터 변경을 모아 한번에 디스크로 기록하는 쓰기 배치 기능을 가지고 있다. 사용자가 쿼리를 실행하면 WiredTiger 스토리지 엔진은 블록매니저(Block Manager)를 통해서 필요한 데이터 블록을 디스크에서 읽어서 공유 캐시에 적재하여 쿼리를 수행한다.만약 사용자가 데이터를 변경하면 WiredTiger 스토리지 엔진은 트랜잭션을 시작하고 커서를 이용해 원하는 도큐먼트의 내용을 변경한다.도큐먼트의 변경 내용은 먼저 공유 캐시에 적용되는..
꽁담
'MongoDB' 태그의 글 목록