스키마 유효성 검사로 데이터 무결성 보장
MongoDB 는 유연한 스키마로 알려져 있지만, 스키마 유효성 검사를 사용하여 문서에 특정 구조를 강제할 수 있습니다. 이를 통해 컬렉션의 모든 문서가 정의된 규칙 집합을 준수하도록 하여 데이터 품질과 일관성을 향상시킬 수 있습니다.
이 마지막 단계에서는 books 컬렉션에 유효성 검사기 (validator) 를 추가합니다. 이 유효성 검사기는 모든 문서에 title, author, year 필드를 요구하며, 이러한 필드에 대한 특정 데이터 유형 및 범위를 강제합니다.
collMod (modify collection) 명령을 사용하여 유효성 검사기를 추가합니다.
db.runCommand({
collMod: "books",
validator: {
$jsonSchema: {
bsonType: "object",
required: ["title", "author", "year"],
properties: {
title: {
bsonType: "string",
description: "must be a string and is required"
},
author: {
bsonType: "string",
description: "must be a string and is required"
},
year: {
bsonType: "int",
minimum: 1000,
maximum: 2024,
description: "must be an integer between 1000 and 2024"
}
}
}
}
});
{ ok: 1 } 출력은 유효성 검사기가 성공적으로 적용되었음을 확인합니다.
이제 규칙을 위반하는 문서를 삽입하여 유효성 검사기를 테스트해 보겠습니다. 이 문서에는 허용된 범위를 벗어난 year가 있습니다.
db.books.insertOne({
title: "The Hobbit",
author: "J.R.R. Tolkien",
year: 999
});
삽입은 실패하며 MongoDB 는 문서가 유효성 검사에 실패했음을 설명하는 오류 메시지를 반환합니다.
MongoBulkWriteException: Document failed validation
이는 스키마 유효성 검사 규칙이 활성화되어 데이터 무결성을 효과적으로 보호하고 있음을 확인합니다. 이 강력한 기능은 NoSQL 데이터베이스의 유연성과 데이터 유효성 검사의 안정성을 결합합니다.