2021.11.24 TIL

권윤경·2021년 11월 24일
0

TIL

목록 보기
2/15
post-thumbnail

0.NoSQL
1.Mongoose
2.MongoDB
3.문서 지향 데이터베이스

MongoDB는 NoSQL의 대표적인 데이터베이스이다.

관계형 데이터베이스의 한계
관계형 데이터베이스(RDBMS:Relational Database Management System) 는 애플리케이션에 사용된 것 중 오랫동안 가장 지배적인 유형의 데이터베이스(DB:DataBase)였다.
그러나 웹 출현과 더불어 RDB의 한계가 점점 더 문제로 드러나게 되었다.
큰 규모의 데이터와 사용자를 대상으로 하려면 대용량 데이터 읽기/쓰기 작업, 빠른 응답시간, 높은 가용성이 지원되어야했으나 이러한 요구 사항은 RDB로 실현하기 어려웠다.
또한, 과거에 RDB의 성능이 저하되면 더많은 CPU, 메모리 추가, 더 빠른 저장 장치를 장착함으로써 문제를 해결했으나 이런 방식은 비용이 비싸고 임시방편일 뿐이였다. 결국 DB설계자는 비정규화를 통해 DB Schema를 재설계 해야했다.

NoSQL의 등장

NoSQL(Not Only SQL)은 웹 시장이 발전함에 따라 데이터의 발생량이 증가했고, 사용자가 요구하고 저장하는 데이터가 일관적이지 않아졌기 때문에 RDB의 한계를 해결하기 위해 등장하게되었다.

▪️ NoSQL은 확장성에 용이하다.
필요에 따라 서버를 추가하는 작업이 이루어지는데, RDB에서는 단일 DB 시스템을 구동하는 여러 서버를 관리하기 위해 DB 소프트웨어가 필요하여 복잡성과 운영 비용이 증가할 수 있다. 반면 NoSQL은 애초에 클러스터 하나에서 서버를 여러개 이용하도록 설계되어 새로운 서버를 추가/제거할 때 NoSQL DBMS는 사용 가능한 새 서버를 사용하도록 조정한다.

▪️ NoSQL은 비용 저렴한편이다.
주요 NoSQL DB들은 오픈 소스 형태로 제공되며 대부분 오픈 소스 개발자는 자신의 소프트웨어를 사용하는데 비용을 매기지 않는다.

▪️ NoSQL은 유연성이 좋다.
RDB는 관계형 데이터 모델을 사용해 해결 가능한 문제의 범위 내에서는 유연한 편이지만, DB설계자는 프로젝트를 시작할 때 애플리케이션 지원에 필요한 모든 테이블과 컬럼을 파악해야 할 뿐만 아니라 대부분의 테이블에 값이 채워져있어야한다.
반면 NoSQL 데이터베이스는 고정된 테이블 구조가 필요하지 않다. 즉, 데이터베이스 설계를 변경하지 않고도 필요한 새로운 속성을 동적으로 추가할 수 있다.

▪️ NoSQL은 가용성이 좋다.
저렴한 비용으로 서버를 여러개 이용할 수 있도록 설계되어있다. 서버 하나가 중지되거나 서비스를 일시 중지해야할 경우 클러스터 내 다른 서버가 작업량 전체를 떠맡을 수 있다. 단, 성능은 다소 저하될지라도 애플리케이션이 중단되지는 않는다.

참고 : https://velog.io/@hanblueblue/NoSQL%EA%B3%BC-%EC%97%AD%EC%82%AC

Mongoose는 객체 모델링 도구, MogoDB는 인스턴스 상호작용을 위한 드라이버.

Mongoose

Mongoose는 NoSQL데이터베이스의 대표적인 MongoDB를 지원하는 Node의 확장 모듈이다.
주된 역할로는 Node.js와 MogoDB를 연결해주는 ODM(Object Document Mapping)이다.
(ODM은 객체와 문서를 1대 1로 매칭해주는것을 뜻한다.)
MongoDB의 ODM은 다양하지만 위와 같은 역할때문에 Mongoose가 가장 유명하다.

MongoDB

MongoDB는 문서지향 NoSQL데이터베이스 시스템이다. MongoDB에서는 데이터가 Document로 불리며, 데이터의 집합을 Collection(RDB에서는 Table)이라 한다. 스키마 제약 없이 자유롭고 BJSON(Binary JSON)형태로 각 문서가 저장되며 배열이나 날짜 등 기존 RDBMS에서 지원하지 않던 형태로 저장할 수 있기 때문에 Join 사용 없이 문서에 좀 더 이해하기 쉬운 형태 그대로 정보를 저장 할 수 있다는것이 특징이다.

특히 MongoDB는 문서지향 데이터베이스로, 객체지향 프로그래밍과 잘 맞고 JSON을 사용할 때 유용하다. JS(JavaScript)를 기반으로 하는 Node.js와 호환이 매우 좋아, Node.js에서 가장 많이 사용되는 DB이다.

참고: https://edu.goorm.io/learn/lecture/557/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-node-js/lesson/174384/mongodb%EB%9E%80

문서지향 데이터베이스는 관계형 데이터배이스와 대조되며, NoSQL의 종류 중 하나이다.

문서지향 데이터베이스

문서지향 데이터베이스는 XMl, JSON과 같은 문서 데이터 저장에 특화된 자료 구조이며, NoSQL의 종류 중 하나이다. NoSQL에는 Key-Value DB(키-벨류형),Columnar DB(컬럼 지향형), Document DB(문서 지향형), Grapth DB(그래프형) 등 이 있다. 각 종류에 따라 적합한 DB가 있는데, MongoDB는 NoSQL의 문서지향 데이터베이스에 알맞는 DB이다.

문서지향 데이터베이스는 관계형 데이터베이스와 강하게 대조되는 특징을 가지고 있으며,
관계형 데이터베이스는 일반적으로 프로그래머사 정의한 별도의 테이블에 데이터를 저장하며 다인 객체는 여러 테이블에 분산될 수 있다.
문서지향 데이터베이스는 주어진 개체에 대란 모든 정보를 데이터베이스의 단일 인스턴스에 저장하며 저장된 모든 개체는 서로 다를 수 있다. 이는 데이터베이스에 데이터를 로드하는 동안 개체 관계형 매칭이 필요하지 않다.

0개의 댓글