[데이터베이스] NoSQL
- NoSQL의 장점 및 특징에 대해서 이해 할 수 있다.
- 자유로운 형태로 데이터를 저장할 수 있으므로, 소프트웨어 개발에 정형화되지 않은 많은 양의 데이터가 필요한 경우 효율적
- 데이터베이스를 클라우드 기반으로 쉽게 분리 할 수 있도록 지원하여, 저장 공간을 효율적으로 사용 가능
- 스키마를 미리 준비할 필요가 없어서, 개발을 빠르게 해야하는 경우에 매우 적합
- MongoDB의 도큐먼트(Document)와 컬렉션(Collection)에 대해 이해할 수 있다.
도큐먼트(Document) : 필드 - 값 쌍으로 저장된 데이터
컬렉션(Collection) : 도큐먼트의 모음
- JSON과 BSON의 차이점을 이해하고, 도큐먼트를 가져오거나 내보낼 수 있다.
JSON(JavaScript Object Notation) : {"id":"12153"} 같은 형식, 가독성이 좋음, 외부에서 사용
BSON(Binary JSON) : 이진법에 기반을 둔 표현법, 파싱이 빠르고 메모리 사용이 효율적, 내부에서 사용
- MongoDB의 Atlas에 대해 이해할 수 있다
- 클러스터(Cluster)와 레플리카 세트(Replica set)에 대해 이해할 수 있다.
- 클러스터 : 데이터를 저장하는 서버 그룹으로 여러 대의 컴퓨터를 네트워크를 통해 연결하여 하나의 단일 컴퓨터처럼 동작하도록 제작한 컴퓨터
- 레플리카 세트 : 동일한 데이터를 저장하는 소수의 연결된 머신. 레플리카 세트 중 하나에 문제가 발생하더라도, 데이터를 그대로 유지.
- Atlas를 GUI(Graphical User Interface)와 shell 쿼리문으로 사용할 수 있다.
- MongoDB에서 CRUD를 할 수 있다.
- Insert(C), Find(R), Update(U), Delete(D)에 대한 쿼리문을 작성 할 수 있다.
- C :
db.fruits.insert([{ "fruit": "apple" }, { "fruit": "banana" }, { "fruit": "blueberries" }])
- R :
db.zips.find({"state":"NY"})
- U :
db.animals.updateMany({ "animal": "tiger" }, { "$set": { "type": "dangerous", "look": "adorable" }})
- D : deleteOne, deleteMany
- $match, $project, $group 연산자를 사용할 수 있다.
- $match : 지정된 조건과 일치하는 문서만 다음 파이프라인 단계로 전달
- $project : 요청된 필드가 있는 문서를 파이프라인의 다음 단계로 전달
- $group : 지정된 _id표현식으로 입력 문서를 그룹화하고 개별 그룹화에 대해 문서를 출력