티스토리 뷰
MongoDB와 같은 NoSQL의 최대 장점이자 단점은 Schema-Free입니다.
즉 데이터를 넣을 공간을 미리정의할 필요가 없다는 것이죠.
그래서 도큐먼트마다 필드의 갯수나 타입도 다양하게 저장해서 활용할 수 있습니다.
스키마가 없으니 데이터를 저장할 때 편하지만, 개발자 실수로 원하지 않은 도큐먼트가
추가되는 일이 흔히 발생합니다.
MongoDB에서는 RDBMS의 제약조건과 비슷한 기능으로 이런 단점을 보완할 수 있습니다.
"collMod" 명령으로 컬렉션에 유효성을 추가할 수 있는데, "collMod"는 'dbAdmin' 역할이 필요합니다.
해당 데이터베이스 유저중 하나에 'dbAdmin' 역할(role)를 부여하고, 그 계정으로 접속한 다음에
유효성을 추가하면 됩니다.
예시로 member라는 컬렉션에 no라는 필드가 반드시 존재해야 한다는 유효성을 추가해 보겠습니다.
db.runCommand(
{
collMod:"member",
validator:{no:{$exists:true}},
validationLevel:"strict",
validationAction:"error"
}
)
<<TEST>>
db.member.insert( {nm:'홍길동', gender:'남'}) ;
위와 같이 도큐먼트를 추가하려고 하면, no 필드가 존재하지 않기 때문에
도큐먼트는 추가되지 않고 에러가 발생합니다.
<< 경험>>
저는 주요 컬렉션에 Primary Key에 해당하는 필드에는 존재 유무를 체크하는 유효성을, 계산 값에 사용되는 특정 필드 (ex. 가격, 수수료)에는 데이터 타입(int, double) 유효성 체크를 설정함으로써 유효하지 않은 도큐먼트가 컬렉션에 추가되는 것을 방지하고 있습니다.
- Total
- Today
- Yesterday
- 남설 팔찌
- 별잉 빛나는 밤
- 홈 오피스
- 별이 빚나는 밤
- JMW 헤어드라이기기
- 톡토기
- 빈센트 반 고흐
- 배당급
- 로니카 BCS
- 매직 트랙패드2
- 르세라핌
- node.js
- yugabyteDB
- VARIDESK
- 카카오 에드
- Sybase IQ
- 루미큐브 종류
- 유가바이트디비
- 오미크론
- weka
- Life Chair
- 브리다 정수기
- 증권정보포털
- Pixel Pals
- 파나소닉 비데 DL-EH10KWS
- 고체 향수
- 코라나 19
- 솔리드 쿨론
- GKRS
- 화분벌레
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |