최대 1 분 소요

**[공지사항]** [개인적인 공부를 위한 내용입니다. 오류가 있을 수 있습니다.]

[NoSQL & 몽고DB(mongodb) - 001]

NoSQL Database


DB의 발전
  • RDBMS(관계형 DB)는 mySQL 또는 Oracle 등으로 SQL 언어로 작성된 DB이다.
    • 정해진 규격(Schema, Table - Column)이 있으며 join으로 DB간 연결을 한다.
    • transaction을 사용하며, 분산처리에 어려움이 있다.
      • write보다 read에 포커싱되어 있어 매초마다 write가 일어나는 SNS 서비스 등 빅데이터에 사용되는 경우 성능 저하가 발생한다.




  • NoSQL은 정해진 규격이 없다. join은 불가능하고 transaction도 사용하지 않지만 분산처리와 빅데이터에 유리하다.
    • NoSQL DB는 각 DB마다 기반으로 하는 데이터 모델이 다르고 각 DB를 다루는 인터페이스가 다르기에,
      데이터 모델별로 대표적인 DB를 알아둘 필요가 있다.
    • primary key를 위한 별도 컬럼을 만들 필요가 없다.
    • mongo db는 collection에서 _id가 각 document마다 자동생성되어 primary key 역할을 함.
    • 컬럼마다 데이터 타입을 정할 필요가 없음(“컬럼명” : 컬럼값이 기본 형태) Ex)
      • Key-Value Store(redis, riak 등)
      • Wide Column Store(Hbase, cassandra 등)
      • Document Store(mongo DB, Couch DB 등)
      • Graph Store(Neo4j, InfiniteGraph 등)



몽고 DB(mongo DB)
  • JSON 형태에 Document를 기반으로 데이터를 관리한다.
  • 프로그래밍에서 다루는 data format은 정수(int), 소숫점(float), 문자(string), csv, JSON 형태가 있다.
  • 기존 db의 collection - Document 기반으로 만들어지기에 column이란 개념이 없다.
  • collection에 JSON 형태의 document를 넣으며 이 document 하나하나가 low data이다. 따라서 mongodb는 collection의 집합이다.




댓글남기기