NoSQL & 몽고DB(mongodb) - 001
[NoSQL & 몽고DB(mongodb) - 001]
NoSQL Database
DB의 발전
- RDBMS(관계형 DB)는 mySQL 또는 Oracle 등으로 SQL 언어로 작성된 DB이다.
- 정해진 규격(Schema, Table - Column)이 있으며 join으로 DB간 연결을 한다.
- transaction을 사용하며, 분산처리에 어려움이 있다.
- write보다 read에 포커싱되어 있어 매초마다 write가 일어나는 SNS 서비스 등 빅데이터에 사용되는 경우 성능 저하가 발생한다.
- 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 등)
- NoSQL DB는 각 DB마다 기반으로 하는 데이터 모델이 다르고 각 DB를 다루는 인터페이스가 다르기에,
몽고 DB(mongo DB)
- JSON 형태에 Document를 기반으로 데이터를 관리한다.
- 프로그래밍에서 다루는 data format은 정수(int), 소숫점(float), 문자(string), csv, JSON 형태가 있다.
- 기존 db의 collection - Document 기반으로 만들어지기에 column이란 개념이 없다.
- collection에 JSON 형태의 document를 넣으며 이 document 하나하나가 low data이다. 따라서 mongodb는 collection의 집합이다.
댓글남기기