- mongoDB는 중첩된 Object를 가진 데이터 설계가 가능하다.
- 관계형 데이터베이스에서는 join 쿼리를 사용하지만, MongoDB는 Join하지 않는다는 점에 주목한다.
- 자주 조회되는 화면은 한번의 쿼리로 데이터를 가져올 수 있도록 한다.
- 조회 빈도가 낮은 화면이거나 데이터량이 큰 경우는 2번의 쿼리로 나누어서 가져올 수 있도록 한다.
- JSON과 거의 동일한 형식으로 데이터가 저장된다.
: One-to-N -> N의 규모/농도 파악
- One to Few
- One to Many
- One to Squillions
// person
{
name: "Edward Kim",
hometown: "Jeju",
addresses: [
{ street: 'Samdoil-Dong', city: 'Jeju', cc: 'KOR' },
{ street: 'Albert Rd', city: 'South Melbourne', cc: 'AUS' }
]
}
// 편의상 ObjectID는 2-byte로 작성, 실제는 12-byte
// parts
{
_id: ObjectID('AAAA'),
partno: '123-aff-456',
name: 'Awesometel 100Ghz CPU',
qty: 102,
cost: 1.21,
price: 3.99
}
// products
{
name: 'Weird Computer WC-3020',
manufacturer: 'Haruair Eng.',
catalog_number: 1234,
parts: [
ObjectID('AAAA'),
ObjectID('DEFO'),
ObjectID('EJFW')
]
}
Atomic Update is not possible
// person
{
_id: ObjectID("AAF1"),
name: "Koala",
tasks [ // task 문서 참조
ObjectID("ADF9"),
ObjectID("AE02"),
ObjectID("AE73")
]
}
// tasks
{
_id: ObjectID("ADF9"),
description: "Practice Jiu-jitsu",
due_date: ISODate("2015-10-01"),
owner: ObjectID("AAF1") // person 문서 참조
}