Docs Menu
Docs Home
/
MongoDB 매뉴얼
/ / /

스키마 버전 관리용 모델 데이터

이 페이지의 내용

  • 개요
  • 스키마 버전 관리 패턴
  • 예제
  • 사용 사례

때에 따라 데이터베이스 스키마 업데이트가 필요합니다. 예를 들어, 사용자 연락처 정보를 보관하기 위한 스키마는 Twitter나 Skype와 같은 새로운 커뮤니케이션 수단이 대중화되면 이를 포함하기 위한 업데이트가 필요할 수 있습니다.

동일한 컬렉션에서 다른 형태의 문서를 지원하는 MongoDB의 유연한 스키마 모델을 사용하여 컬렉션의 스키마를 점진적으로 업데이트할 수 있습니다. 스키마 모델을 업데이트할 때 스키마 버전 관리 패턴을 사용하면 버전 번호로 업데이트를 추적할 수 있습니다. 애플리케이션 코드는 버전 번호를 사용하여 다운타임 없이 다양한 형태의 문서를 식별하고 처리할 수 있습니다.

스키마 버전 관리 패턴을 실행하려면 처음 수정할 때 schema_version(또는 이와 유사한 이름의) 필드를 스키마에 추가합니다. 새 스키마를 사용하는 문서에는 스키마의 두 번째 반복 수행을 준수하고 있다는 점을 나타내는 schema_version 2 표시가 있어야 합니다. 스키마를 다시 업데이트하는 경우 schema_version을 높입니다.

애플리케이션 코드는 문서의 schema_version이나 버전이 없다는 점을 이용하여 문서를 조건부로 처리할 수 있습니다. 데이터베이스에 새로운 정보를 저장하려면 최신 스키마를 사용합니다.

다음 예시에서는 users 컬렉션에서 문서에 대한 스키마를 반복합니다.

이 스키마의 첫 번째 반복 수행에서는 galactic_id, namephone 필드가 기록에 포함됩니다.

// users collection
{
"_id": "<ObjectId>",
"galactic_id": 123,
"name": "Anakin Skywalker",
"phone": "503-555-0000",
}

다음 반복에서는 다른 형태의 추가 정보를 포함하도록 스키마가 업데이트됩니다.

// users collection
{
"_id": "<ObjectId>",
"galactic_id": 123,
"name": "Darth Vader",
"contact_method": {
"work": "503-555-0210",
"home": "503-555-0220",
"twitter": "@realdarthvader",
"skype": "AlwaysWithYou"
},
"schema_version": "2"
}

schema_version 추가는 애플리케이션이 새 스키마에 적합하게 구성된 문서를 식별하고 적절하게 처리할 수 있음을 의미합니다. 문서에 schema_version이 존재하지 않는 경우에도 애플리케이션은 이전 문서를 처리할 수 있습니다.

예를 들어 사용자의 전화번호를 galactic_id로 찾는 애플리케이션을 생각해 볼 수 있습니다. galactic_id가 입력되면 애플리케이션은 데이터베이스를 쿼리해야 합니다.

db.users.find( { galactic_id: 123 } );

데이터베이스에서 문서가 반환된 후 애플리케이션은 문서에 schema_version 필드가 있는지 확인합니다.

  • schema_version 필드가 없는 경우 애플리케이션은 반환된 문서를 원래 스키마에서 phone 필드를 렌더링하는 전용 함수에 전달합니다.

  • schema_version 필드가 있는 경우 애플리케이션은 스키마 버전을 확인합니다 이 예시에서 schema_version2이며, 애플리케이션은 새로운 필드 contact_method.workcontact_method.home을 렌더링하는 전용 함수에 반환된 문서를 전달합니다.

애플리케이션 코드는 schema_version 필드를 사용하여 코드에 전용 핸들러 함수를 추가하는 방식으로 동일한 컬렉션에서 스키마 반복을 원하는 횟수만큼 지원할 수 있습니다.

스키마 버전 관리 패턴은 다음 사례 중 한 가지 이상에 해당될 경우에 이상적으로 사용할 수 있습니다.

  • 애플리케이션 다운타임을 사용할 수 없는 경우

  • 문서 업데이트 완료하는 데 몇 시간, 며칠 또는 몇 주가 걸릴 경우

  • 문서를 새 스키마 버전으로 반드시 업데이트하지 않아도 되는 경우

스키마 버전 관리 패턴을 이용하면 기존의 표 형식 데이터베이스에 비해 데이터 마이그레이션의 시기와 방법을 효과적으로 결정할 수 있습니다.

돌아가기

화폐 데이터