본문 바로가기
Study/mongodb

03. MongoDB(몽고디비) Study - Database 생성 및 Collection 생성

by 블리드카가 2017. 10. 9.
728x90



     연습을 위해 MongoDB 클라이언트를 실행합니다.
    
    
  1. Database 생성

새롭게 존재하지 않는 Database를 생성하기위해 명시적으로 생성하는 명령어가 필요하지 않습니다. Database를 전환하는 명령어를 입력하고,  데이터를 insert하면 자동으로 Database와 Collection이 자동으로 생성됩니다.

존재하지 않는 ‘testDB’ 를 생성해보겠습니다. ‘testDB’는 대신 원하시는 명칭으로 사용하시면 됩니다.
use testDB
db.testcollection.insertOne( { x : 1 } )


MongoDB클라이언트를 refresh해보시면 Database와 Collection이 생성 되었음을 알 수 있습니다.

‘insertOne’은 Document 하나를 입력하는 명령어 입니다.

 2. Collection 생성

  이번에는 새롭게 존재 하지 않는 Collection 을 생성 해봅니다.
db.test2.insertOne({ x : 2})



test2 Collection이 생성되었습니다.

Collection은 Document를 하나 insert해도 되지만, Index를 생성해도 Collection이 생성됩니다.
db.test3.createIndex({ x : 1}) 



3. 명시적인 Collection 생성
db.createCollection(<Collection 명칭>, { capped: <boolean>,
                              autoIndexId: <boolean>,
                              size: <number>,
                              max: <number>,
                              storageEngine: <document>,
                              validator: <document>,
                              validationLevel: <string>,
                              validationAction: <string>,
                              indexOptionDefaults: <document>,
                              viewOn: <string>,
                              pipeline: <pipeline>,
                              collation: <document> } )

옵션 내용

Field Type Description
capped boolean capped collection(제한된 크기만 저장) , true 로 값을 지정할 경우 반드시 ‘size’ 옵션을 통해 최대값을 설정해야만 합니다.
autoIndexId boolean

false로 입력할경우 _id 필드에 자동 index 생성이 disable됩니다.

size number capped collection에서 최대 bytes, 최대 bytes에 도달 할 경우, MongoDB는 오래된 Documents를 지웁니다.
max number capped collection 에서 최대 Document 수, size 옵션이 우선함, max 옵션이 우선하게 하려면 충분한 size옵션을 주어야 합니다.




더 자세한 옵션 내용은 아래 링크를 참조하세요.

4. Capped Collection

Cappped Collection 이란?  

  -  최초 제한된 크기로 생성된 공간 내에서 만 데이터를 저장할 수 있고, 최초 공간이 모두 사용되면 다시 처음으로 돌아가서 기존 공간을 재사용하는 타입의 Collection 
  -  로그 데이터 처럼 일정한 기간 내에서 만 저장, 관리할 필요가 있는 데이터에 효과적인 타입

100000 바이트 크기의 log 라는 명칭의 capped collection Collection 을 생성합니다.
db.createCollection( "log", { capped: true, size: 100000 } )

20000 바이트 한계치와 5000 Document 한계치를 가진 log2 라는 명칭의 Collection을 생성 합니다.
db.createCollection("log2", { capped : true, size : 20000, max : 5000 } )
‘size’ 옵션은 필수 값입니다. max 값에 도달 하지 않았더라도 size 값에 도달하면  ‘log2' Collection에 오래된 Document는 삭제될 것입니다.


아래는 해당 Collection이 capped 속성을 가지고 있는지 체크하는 함수입니다.
db.log2.isCapped()
capped collection 이 아닌 collection을 capped collection 으로 변경해보겠습니다. test2 Collection 을 변경합니다.
db.runCommand({"convertToCapped": "test2", size: 100000});









728x90