Skip to content

Latest commit

 

History

History
92 lines (69 loc) · 1.66 KB

201.Data_Modeling.md

File metadata and controls

92 lines (69 loc) · 1.66 KB

DB Structure

Cautions

  1. mongoDB는 중첩된 Object를 가진 데이터 설계가 가능하다.
  2. 관계형 데이터베이스에서는 join 쿼리를 사용하지만, MongoDB는 Join하지 않는다는 점에 주목한다.
    • 자주 조회되는 화면은 한번의 쿼리로 데이터를 가져올 수 있도록 한다.
    • 조회 빈도가 낮은 화면이거나 데이터량이 큰 경우는 2번의 쿼리로 나누어서 가져올 수 있도록 한다.
  3. JSON과 거의 동일한 형식으로 데이터가 저장된다.

Relations

: One-to-N -> N의 규모/농도 파악

  1. One to Few
  2. One to Many
  3. One to Squillions

One to Few

// person
{
  name: "Edward Kim",
  hometown: "Jeju",
  addresses: [
    { street: 'Samdoil-Dong', city: 'Jeju', cc: 'KOR' },
    { street: 'Albert Rd', city: 'South Melbourne', cc: 'AUS' }
  ]
}

One to Many

// 편의상 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')
  ]
}

Two-Way Referencing

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 문서 참조
}