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 :..
인덱스 속성인덱스 필드가 NULL 이 아닌 경우나 지정된 조건을 만족하는 경우에만 인덱스에 추가할 수 있다.TTL 인덱스도 제공한다. 프라이머리 키와 세컨드리 인덱스MongoDB 프라이머리 키 필드는 사용자가 필드의 이름을 결정할 수 없다.프라이머리 키 필드는 무조건 _id 라는 이름으로 도큐먼트에 저장되어야 한다.그렇지 않으면 MongoDB 가 자동으로 _id 라는 이름의 필드를 생성해서 추가한다. 컬렉션마다 단 하나의 프라이머리 키만 가질 수 있고, 그 외의 인덱스는 모두 세컨드리 인덱스라고 한다.프라이머리 키는 반드시 유일한 값을 가져야 하므로 유니크 인덱스를 생성할 수 없는 해시 인덱스는 프라이머리 키로 사용할 수 없다.또한 하나의 샤드에서는 중복 값에 대한 체크를 MongoDB 가 해주지만, 샤..
잠금멀티 쓰레드의 동시 처리 중에 발생할 수 있는 쓰레드 간의 충돌 문제를 막기위해 데이터베이스와 컬렉션 그리고 도큐먼트들의 잠금을 사용한다.여러 계층의 데이터베이스 오브젝트들에 대한 동시 처리를 위해서 인텐션 락과 다중 레벨의 잠금을 활용한다.또한 MongoDB 잠금은 서버 차원에서 처리되는 잠금과 스토리지 엔진에서 처리되는 잠금으로 나누어 볼 수 있다. MongoDB 엔진의 잠금명시적 잠금과 묵시적 잠금으로 나눠볼 수 있는데, 명시적 잠금은 글로벌 잠금 뿐이며 나머지 모든 잠금은 묵시적 잠금이다.데이터베이스나 컬렉션에 대한 잠금은 모두 묵시적이며, 이는 쿼리가 실행될 때 자동으로 획득했다가 해제되는 잠금이다. 글로벌 잠금글로벌 잠금은 MongoDB 서버 인스턴스에 단 하나만 있는 잠금으로 인스턴스 잠..
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 인덱스에서 멀티 키 인덱스는 여러 개의 인덱스 키 엔트리가 하나의 도큐먼트를 가지기 때문에쿼리의 검색조건으로 멀티 키 인덱스를 사용할 때는 검색 조건을 주의해야 한다. 2. MongoDB 테스트 버전유형버전구성mongosh2.2.10 mongodb7.0.12Config : 1개, 포트 20000Route : 1개, 포트 20001Shard1 : 1개, 포트 30001Shard2 : 1개, 포트 40001 3. MongoDB 테스트 데이터 적재number 필드는 배열로 되어있고 number 필드를 인덱스로 생성했다.[direct: mongos] indexDB> db.multiCollection.insert({ item: "Mozi" , number : [2, 9..
해시인덱스해시 인덱스는 B-Tree 인덱스만큼 범용적이지는 않지만 고유특성이 있는 인덱스 중 하나다.단일검색에는 최적화되지만 범위검색이나 정렬된 결과를 가져오는 목적으로는 사용할 수 없다.쿼리의 검색 성능을 향상시키기 위한 인덱스의 목적보다는 해시 샤딩을 구현하기 위해 꼭 필요한 인덱스이다. 해시 인덱스의 구조 및 특성해시 인덱스의 가장 큰 장점은 빠르다는 것이다.해시 인덱스는 트리 형태의 구조가 아니므로 검색하고자 하는 값이 주어지면 해시 함수를 거쳐 바로 버켓의 주소를 알아내며, 그 버켓을 읽어 즉시 해당 데이터의 레코드를 가져오기 때문이다. 일반적으로 버켓은 메모리에 로드되어 있고 해시 인덱스로 데이터 레코드를 읽는것은 디스크를 한번만 읽어서 데이터를 가져올 수 있음을 의미한다.해시 인덱스는 B-T..
1. MongoDB 청크MongoDB 는 데이터를 청크단위로 묶어서 관리한다.청크는 밸런서에 의해 나뉘거나 샤드서버별로 옮겨다닐 수 있다. 2. MongoDB 테스트 버전유형버전구성mongosh2.2.10 mongodb7.0.12Config : 1개, 포트 20000Route : 1개, 포트 20001Shard1 : 1개, 포트 30001Shard2 : 1개, 포트 40001 3. 전제조건mongodb 는 2개의 샤드서버가 구성되어 있는 상태이다.레인지샤딩이 아래와 같이 구성되어있고 모든 청크는 rs1 샤드에 있다.[direct: mongos] test> sh.status();shardingVersion{ _id: 1, clusterId: ObjectId('66838519ea100ebaf5ee3cc8')..
1. MongoDB 레인지샤딩사용자가 샤드별로 가지는 데이터 범위를 할당하여 샤드별로 데이터를 분산할 수 있는 방법이다. 2. MongoDB 테스트 버전유형버전구성mongosh2.2.10 mongodb7.0.12Config : 1개, 포트 20000Route : 1개, 포트 20001Shard1 : 1개, 포트 30001Shard2 : 1개, 포트 40001 3. 전제조건mongodb 는 2개의 샤드서버가 구성되어 있는 상태이다.또 rangeShardDB 데이터베이스는 레인지샤딩으로 구성되어 있다.[direct: mongos] test> sh.status();shardingVersion{ _id: 1, clusterId: ObjectId('66838519ea100ebaf5ee3cc8') }---shard..