Node mongoDB
MEAN Stack = MongoDB + Express + Angular + Node
IT (Information Technology)
- 저장 : 데이터 저장소
- 처리 : 프로그래밍 언어
(1) MongoDB 란?
몽고DB(MongoDB)
크로스 플랫폼 : window, linux, mac 전부다 가능하다.
도큐먼트(JSON과 같은 동적 스키마형 문서) 지향
NoSQL 데이터베이스 시스템 : NonSQL SQL외에 다른것도 사용한다.
Readys방식 => 키:값
MongoDB => 문서기반(JSON) : Java Script Object Notation
- BigData => 컬럼패밀리
- Graph
오픈소스(Open Source)
C++로 작성됨
높은 확장성
높은 성능
더 쉽고 더 빠르게 데이터 통합 가능
NoSQL
NoSQL 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다.
이러한 접근에 대한 동기에는 디자인의 단순화, 수평적 확장성, 세세한 통제를 포함한다.
NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매우 최적화된 키 값 저장 공간으로, 레이턴시와 스루풋과 관련하여 상당한 성능 이익을 내는 것이 목적이다.
NoSQL 데이터베이스는 빅데이터와 실시간 웹 애플리케이션의 상업적 이용에 널리 쓰인다.
또, NoSQL 시스템은 SQL 계열 쿼리 언어를 사용할 수 있다는 사실을 강조한다는 면에서 “Not only SQL”로 불리기도 한다. (위키백과)
데이터 저장소에 대한 CAP 이론
CAP 정리, 또는 브루어의 정리(Brewer -)는, 다음과 같은 세 가지 조건을 모두 만족하는 분산 컴퓨터 시스템이 존재하지 않음을 증명한 정리이다.
일관성(Consistency):
모든 노드가 같은 순간에 같은 데이터를 볼 수 있다.
가용성(Availability):
모든 요청이 성공 또는 실패 결과를 반환할 수 있다.
분할내성(Partition tolerance):
메시지 전달이 실패하거나 시스템 일부가 망가져도 시스템이 계속 동작할 수 있다.
위의 세 가지 조건의 첫 글자를 따서 CAP 정리
라고 부른다.
2000년 전산학자 에릭 브루어가 이 명제를 가설로서 제시하였고, 2002년 세스 길버트와 낸시 린치가 이를 증명하였다.
CAP정리에 따르면 분산 시스템이 추구하는 데이터의 특성은 세 가지 중 두가지만 보장할 수 있다.
CA 분류
(일관성 +가용성) : 전통적인 RDBMS. 트랜잭션.CP 분류
(가용성 + 분할용인) : 구글의 BigTable, HBase 등AP 분류
(가용성 + 분할용인) : Dynamo, Cassandra, MongoDB 등
(2) MongoDB 설치
mongoDB 설치
1
> brew install mongodb
data/db 폴더 생성
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22sudo mkdir -p data/db
data/db로 이동 후
sudo chown kimsejune /data/db
mongoDB를 실행시키는 명령어 : 서버의 역할을 한다.
mongod
클라이언트의 역할 실행 명령어
mongo
> showdbs // 서버, 클라이언트 정보 확인
> db.member.insert({
"id":"hong", "email":"tpwns1088@gmail.com"
});
// mongoDB에 값을 추가하는 명령어
> db.member.find()
// mongoDB의 member값을 찾는다.GUI Tool : RoboMongo
(3) 관계형 데이터베이스와 몽고디비 비교
RDBMS | MongoDB |
---|---|
Database | Database |
Table | Collection |
Row | Document |
Column | Key |
Primary Key | ObjectId(_id) |
RDBMS 명령과 MongoDB 함수 비교 >
Insert
SQL : insert into members (“name”,”email”) values(“홍길동”,”hong@aaa.com“)
Mongo DB : db.members.insert({name:”hong”, email:”hong@aaa.com“})
Select
SQL : select * from members where name=”홍길동”
Mongo DB : db.members.find({name:”홍길동”})
Update
SQL : update members set email=”hong@aaa.com“ where name=”홍길동”
Mongo DB : db.members.update( {name:”홍길동”}, {$set :{email:”hong@aaa.com“} } )
Delete
SQL : delete from members where name=”홍길동”
Mongo DB : db.members.remove({name:”홍길동”})
(4) REST API와 몽고 디비 연동 이해
HTTP METHOD | 역할 | MongoDB 함수 |
---|---|---|
POST | 리소스를 생성 | insert, save |
GET | 리소스를 조회 | find |
PUT | 리소스를 수정 | update |
DELETE | 리소스를 삭제 | delete |
(5) MEAN 스택 미니 프로젝트
MongoDB
: 문서 기반의 NoSQL 데이터베이스.ExpressJS
: Node.js에서 가장 널리 쓰이는 웹 프레임워크.AngularJS
: 구글에서 개발한 MVC 기반 클라이언트 측 자바스크립트 프레임워크.Node
.js : 자바스크립트 엔진 기반의 웹 서버.
Asyncawait version이 낮은 node에서 callback hell을 방지한다.