Database

Database. 4일차 - MongoDB의 기본 명령어

머용? 2024. 2. 19. 16:57

데이터베이스 관련 명령어

  1. 데이터베이스 생성 또는 전환
    • use [데이터베이스 이름]
    • 지정된 데이터베이스로 전환하거나 없으면 새로 생성합니다.
  2. 현재 데이터베이스 확인
    • db
    • 현재 사용 중인 데이터베이스를 표시합니다.
  3. 데이터베이스 목록 조회
    • show dbs
    • 서버에 존재하는 모든 데이터베이스 목록을 보여줍니다.
  4. 데이터베이스 삭제
    • db.dropDatabase()
    • 현재 선택된 데이터베이스를 삭제합니다.
  5. 데이터베이스 상태 확인
    • db.stats()
    • 현재 데이터베이스의 통계 정보를 제공합니다.

컬렉션 관련 명령어 예제

  1. 컬렉션 생성

     db.createCollection("users", { capped: false })
    • 이 예제는 'users'라는 이름의 새로운 컬렉션을 생성합니다. capped 옵션은 해당 컬렉션이 용량 제한이 있는지 여부를 결정합니다.

    • 컬렉션 생성 관련 옵션

      • Capped 컬렉션 생성

        db.createCollection("log", { capped: true, size: 100000 })
        • "log"라는 이름의 컬렉션을 생성하고, 이를 capped 컬렉션으로 지정합니다. size 는 컬렉션의 최대 크기를 바이트 단위로 설정합니다. 이 경우 컬렉션의 크기가 100,000바이트를 초과하면, 가장 오래된 문서부터 새 문서로 대체됩니다.
      • 문서 유효성 검사가 있는 컬렉션 생성

        db.createCollection("contacts", {
            validator: {
                $jsonSchema: {
                    bsonType: "object",
                    required: ["phone"],
                    properties: {
                        phone: {
                            bsonType: "string",
                            description: "must be a string and is required"
                        },
                        email: {
                            bsonType: "string",
                            pattern: "@mongodb\.com$",
                            description: "must be a string and match the regular expression pattern"
                        }
                    }
                }
            }
        })
        • "contacts"라는 컬렉션을 생성합니다. 이 컬렉션은 JSON 스키마를 사용하여 유효성 검사를 적용합니다. 여기서는 phone 필드가 필수이며, email 필드는 특정 패턴을 따라야 합니다.
      • 특정 스토리지 엔진 옵션을 사용하는 컬렉션 생성

        db.createCollection("myData", {
            storageEngine: {
                wiredTiger: {
                    configString: "block_compressor=zlib"
                }
            }
        })
        • "myData"라는 컬렉션을 생성하면서 WiredTiger 스토리지 엔진에 대한 특정 설정을 지정합니다. 여기서는 block_compressor 옵션을 zlib 으로 설정하여 데이터 압축을 사용합니다.

        • storageEngine 옵션들

          1. WiredTiger:
            • MongoDB 3.2 버전부터 기본 스토리지 엔진으로 사용됩니다.
            • 고성능, 고압축, 멀티스레딩 지원 등이 특징입니다.
            • 문서 수준의 잠금(Document-Level Locking) 기능을 제공하여 동시성을 향상시킵니다.
            • 데이터 압축과 색인 압축을 지원합니다.
          2. In-Memory Storage Engine:
            • 데이터를 메모리 내에서만 관리하는 엔진입니다.
            • 높은 처리 속도와 낮은 지연 시간이 필요한 애플리케이션에 적합합니다.
            • 데이터 지속성은 제공하지 않으므로, 주로 캐시나 실시간 데이터 분석에 사용됩니다.
          3. MMAPv1:
            • MongoDB 3.0 버전 이전의 기본 스토리지 엔진입니다.
            • 각 컬렉션별로 별도의 파일을 사용하며, 파일 레벨 잠금을 지원합니다.
            • WiredTiger에 비해 더 낮은 수준의 동시성과 압축 기능을 제공합니다.
            • MongoDB 4.0 버전부터는 더 이상 기본 엔진으로 사용되지 않으며, 추후 버전에서는 지원이 중단될 예정입니다.
          4. RocksDB (써드파티):
            • Facebook에서 개발한 Key-Value 스토어 기반의 스토리지 엔진입니다.
            • 고성능 쓰기 작업과 효율적인 스토리지 사용이 특징입니다.
            • WiredTiger와 비슷하게 문서 수준의 잠금 기능을 제공합니다.
            • 일부 MongoDB 배포판에서 선택적으로 사용할 수 있습니다.
  2. 컬렉션 목록 조회

     show collections
    • 현재 데이터베이스에 있는 모든 컬렉션의 목록을 표시합니다.
  3. 컬렉션 이름 변경

     db.users.renameCollection("customers")
    • 'users' 컬렉션의 이름을 'customers'로 변경합니다.
  4. 컬렉션 삭제

     db.customers.drop()
    • 'customers'라는 이름의 컬렉션을 삭제합니다.