본문 바로가기
[ Developer ]/MongoDB

[MongoDB] 몽고 디비, No SQL

by 김현섭. 2016. 6. 21.
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
MongoDB
  • MongoDB를 포함한 모든 NoSQL Solution 들은 관계형 DB가 아님
    • NoSQL != RDBMS
    • Not Only SQL
  • 하나의 데이터를 하나의 문서로 표현함
    • 즉 Row(Recode)라는 개념보다 Document라는 개념
  • 데이터는 JSON Type으로 저장이 되는데 정형화된 Schema가 없음
    • Schema 변경에 따른 대량 작업 (Insert or Update)가 없다
  • 유연하고 손쉬운 확장
    • 저장해야 할 데이터가 폭발적으로 증가하면서 저장소 및 성능의 확장이 고려될 수 있음
    • NoSQL은 성능 확장 또는 분산 확장을 제공
      • 성능 확장 : DB 서버의 성능을 향상 (확장의 폭이 큼)
      • 분산 환장 : 여러 대의 데이터베이스 서버를 설치해 분산처리 하도록 구성(경제적 저렴)
  • 쿼리가 존재하지 않기 때문에 하나의 정보를 문서화 시킨다
  • RDB의 무결성 제약의 원칙이 무시됨.
  • RDB는 Primary Key(PK)를 “고유값"을 가진 컬럼에 지정함.
    • PK <-> FK로 중복을 최소화 한다.
  • MongoDB는 고유한 값을 자동으로 만들어 냄.
    • 중복을 허용하고 적극적으로 활용한다.
    • RDB처럼 JOIN을 이용해 데이터를 가져올 필요가 없음.
    • 예 > 정규화하지 않은 Table – Non Atomic Data

  • RDBMS 는 정형화된 테이블에 동일한 정보들을 넣고, 다른 정보가 필요할 때 JOIN을 한다.
    • 블로그 포스팅을 저장하는 테이블은
      • 글쓴이, 제목, 글쓴 날짜, 내용 으로 구성되고, 댓글이나 태그 등은 다른 테이블에 저장한다.
  • NoSQL 은 비정형화된 컬렉션에 관련된 정보들을 넣고, 다른 정보가 필요할 때 다른 문서를 찾는다.
    • 블로그 포스팅을 저장하는 컬렉션은
    • 글쓴이, 제목, 글쓴 날짜, 내용, 댓글, 태그 까지 모두 포함할 수 있다.
  • No SQL 개념
    • Database
      • Collection의 집합
    • Collection
      • Document의 집합
    • Document
      • 정보의 집합 Join은 하지 않는다

@ Collection
  • RDB에서 Table에 해당된다
    • 여러 개의 문서(Document)로 구성


@ Mongo Shell을 이용해 컬렉션 만들기
  • > use blog
  • switched to dbblog
  • > db
  • blog
  • > db.createCollection("post2")
  • { "ok" : 1 }
  • >

@ 컬렉션 네이밍
  • 컬렉션은 이름으로 식별함.
  • 빈 문자열은 사용할 수 없다.
  • \0(null 문자)은쓸 수 없다.
  • system. 으로 시작하는 컬렉션이름은 사용할 수 없다. (예약어)
  • $ 를 쓸 수 없다.