따라서, 은행과 주식프로그램 DB의 경우 형식에 중점을 둔 SQL을 많이 사용한다.
TIP) 다양한 NoSQL 데이터베이스
1. 와이드 컬럼 스토어: H베이스, 아큐물로, 카산드라
2. 도큐먼트: 몽고DB, 카우치베이스
3. 키 값: 다이나모DB, 리악, 레디스, 프로젝트 볼드모트
4. 그래프: Node4J, AgensGraph, 알레그로그래프, 버투오소
<출처: wiki>
오늘은 다양한 NoSQL중에서 MongoDB(이하 몽고DB)를 활용해서 DB를 활용해 보겠다.
몽고DB는 JavaScript를 활용한 크로스 플랫폼 도큐먼트 지향 데이터베이스 시스템이며 몽고DB는 JSON과 같은 동적 스키마형 도큐먼트(BSON)들을 선호함에 따라 전통적인 테이블 기반 관계형 데이터베이스 구조의 사용을 지향한다.
<Document 예제>
{
"name" : "Baek"
"title" : "Learn_MongoDB"
"age" : 30
}
- MongoDB의 장점
- RDBMS보다 속도가 굉장히 빠르다(100배이상)
- schema관리가 따로 필요가 없다.
- 복잡한 JOIN이 따로 없다.
- MongoDB의 단점
- 메모리 사용량이 큰편이다.
- SQL을 완전히 이전할 수 없다.
- JOIN이 없어서 복잡한 쿼리를 사용할 수 없다.
TIP) JSON VS BSON
<JSON의 올바른 예시>
<BSON의 올바른 예시>
여기에서 Connect를 선택하면 하나의 창이 나타나게 된다.
이번에는 위 3가지 방법중 두번째 방법을 통해 접속을 해보겠다.
두번째 방법을 들어가면 Driver와 version을 선택하라는 창이 뜨게된다.
자신의 환경에 맞춰 설정을 한 뒤 아래의 코드를 이용해서 vscode를 통해 구현해보겠다.
mongodb+srv://Baek:<password>@cluster0.jolds.mongodb.net/myFirstDatabase?retryWrites=true&w=majority
- 코드를 짜기전 환경설정을 위해 MongoDB를 먼저 설치해주겠다
$ npm install mongodb
- 코드설정
const { MongoClient } = require('mongodb') // MongoDB를 불러온다 const Password = User의 패스워드 const Database_Access_User_Name = User의 이름을 설정 const ClusterName = 본인이 만든 cluster의 이름을 설정 //url변수에 MongoDB연결 const url = `mongodb+srv://${Database_Access_User_Name}:${Password}@${ClusterName}.jolds.mongodb.net/myFirstDatabase?retryWrites=true&w=majority` //client 변수에 mongodb를 연결하여 준다. 2개의 const client = new MongoClient(url, { useNewUrlParser: true, //최신 MongoDB에는 새로운 파서를 사용하기 위한 옵션들 useUnifiedTopology: true, / }) async function main(){ // client.connect()을 통해 만들어진 본인의 MongoDB에 연결한다. await client.connect() // 'school'이라는 DataBase에 users라는 collection을 만들어준다. const users = client.db('school').collection('users') await users.deleteMany({}) // 데이터베이스를 실행할때마다 비우기위한 문장 await users.insertMany([ //데이터베이스에 아래정보를 넣어준다. { name: 'Base' }, { name: 'Lee' }, { name: 'Kim' } ]) // 본래 조건채워 필요한 정보를 불러오지만 지금은 모든데이터를 찾아야하니 비워든다. const cursor = users.find({조건}) // 찾은 정보들을 출력 위해 console.log를 통해 결과를 확인한다. await cursor.forEach(el=>console.log(el) // 데이터베이스를 종료한다. await client.close() } // 데이터베이스 생성함수를 실행하여 DataBase를 생성한다. main()
결과
위와같이 결과가 나왔다.
_id라는 구별점을 가지고 있으며 안에 key:value값으로 name과 값이 있는것 볼 수 있다.
위와 같이 특정형식없이 JSON형식으로 데이터를 저장하여 편하게 불러올 수 있다.