59일차 [데이터베이스] NoSQL
2021. 10. 23. 19:51
반응형
2021. 10. 19 화요일
1. Today's Key Points!🔑
- NoSQL
- MongoDB
2. 정리해보자!
NoSQL
NoSQL Database는 관계형 테이블의 레거시한 방법을 사용하지 않는 데이터 저장소를 말한다. 데이터를 행과 열이 아닌, 체계적인 방식으로 저장한다. NoSQL이 의미하는 데이터베이스의 범위는 매우 넓다.
NoSQL 기반의 비관계형 데이터베이스는 다음과 같은 경우에 많이 사용한다.
- 비구조적인 대용량의 데이터를 저장하는 경우. why? 자유로운 형태로 데이터 저장이 가능하기 때문에 정형화 되지 않은 많은 양의 데이터가 필요한 경우 NoSQL이 효율적일 수 있다.
- 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우. why? 저장 공간을 효율적으로 사용한다. 수평적 확장 형태로 증설하기때문에 이론상 무한대로 서버를 계속 분산시켜 DB를 증설할 수 있다.
- 빠르게 서비스를 구축하고 데이터 구조를 자주 업데이트 하는 경우. why? 스키마를 미리 준비할 필요가 없다.
MongoDB
- 도큐먼트 : 필드 - 값 쌍으로 저장된 데이터.
- 컬렉션 : 도큐먼트로 구성된 저장소. 일반적으로 도큐먼트 간의 공통 필드가 있다. 데이터베이스 당 많은 컬렉션이 있고, 컬렉션 당 많은 도큐먼트가 있을 수 있다.
JSON vs BSON
JSON
- shell을 이용해서 도큐먼트를 조회하거나 업데이트 할 때, 도큐먼트는 JSON형태로 출력된다.
- 장점 : 읽기 쉽고, 많은 개발자들이 사용하기 편리한 형태를 가지고 있다.
- 단점 : 파싱이 느리고 메모리 사용이 비효율적이다. 사용할 수 있는 데이터 타입에 제약이 있다.
- MongoDB에서 JSON형식으로 데이터를 가져올 때 명령어 : mongoimport, 내보낼 때 명령어 : mongoexport
BSON
- 이진법에 기반을 둔 표현법이다.
- 장점 : 메모리 사용이 효율적이고, 가볍고, 유연하다. 더 많은 데이터 타입을 사용할 수 있다. 그래서 데이터를 저장할 때는 주로 BSON으로 저장한다.
- 단점 : 읽기 어렵다.
- MongoDB에서 BSON형식으로 데이터를 가져올 때 명령어 : mongostore, 내보낼 때 명령어 : mongodump
CRUD
CREATE
- insert : db.collection_name.insert(json_type_data)
READ
- show dbs : 데이터베이스 리스트 조회
- use database_name : database_name 데이터베이스 사용
- show collections : 컬렉션 조회
- find : db.collection_name.find({조건}) // ex)db.zips.find({"state":"NY"}) 이라고 입력하면 zips라는 컬렉션에서 state가 NY인 데이터 조회. 근데 화면에는 랜덤하게 선택된 총 20개의 결과물만 출력된다.
- count : db.collection_name.find().count() // 선택된 컬렉션안에 데이터 갯수가 몇개인지 출력된다.
UPDATE
- updateMany, $inc : db.zips.updateMany({"city" : "ALPINE"}, {"$inc" : {"pop" : 10}}) // 앞의 중괄호는 업데이트 할 도큐먼트, 뒤의 중괄호는 연산자$inc를 사용해서 특정한 필드의 값을 주어진 만큼 증가.
- updateOne, $set : db.zips.updateOne({"zip":"12534"},{"$set":{"pop":6235}}) // updateMany와 사용법은 같다. $set연산자를 사용하면 주어진 필드에 지정된 값을 업데이트 한다. 만약 pop이 아닌 없는 필드를 작성한다면 에러가 나지않고 작성한 필드가 생성되면서 입력된 값이 들어가게 된다.
DELETE
- deleteOne : 주어진 기준에 맞는 다수의 도큐먼트 중 첫번째 도큐먼트 하나를 삭제
- deleteMany : 쿼리문과 일치하는 모든 도큐먼트를 삭제
- drop : 컬렉션 삭제
반응형
LIST
'코드스테이츠 수강 TIL > Section 3' 카테고리의 다른 글
61일차 [인증/보안] Token (0) | 2021.10.25 |
---|---|
60일차 [인증/보안] Cookie/Session (0) | 2021.10.24 |
58일차 [데이터베이스] ORM (0) | 2021.10.20 |
56, 57일차 [데이터베이스] MVC (0) | 2021.10.16 |
55일차 [데이터 베이스] 관계형 데이터베이스3 (0) | 2021.10.13 |