참고 : https://velopert.com/mongodb-tutorial-list
MongoDB는 C++로 작성된 오픈소스 문서지향(Document-Oriented) 적 Cross-platform 데이터베이스이며, 뛰어난 확장성과 성능을 자랑합니다. 또한, 현존하는 NoSQL 데이터베이스 중 높은 인지도를 유지하고 있다.
MongoDB는 대표적인 NoSQL 데이터 베이스 입니다.
데이터 베이스는 RDBMS 와 NoSQL, 이렇게 크게 두 가지로 나누어 볼 수 있습니다.
RDBMS 는 관계형 데이터 베이스로 table 과 table 의 관계로 이루어진 데이터베이스 입니다.
대표적으로는 MySQL, MS-SQL, Oracle 등이 있습니다.
NoSQL 은 Not Only SQL 의 약자로, 기존 RDBMS 의 한계를 극복하기 위해 만들어진 새로운 형태의 데이터베이스입니다.
의미는 Not Only SQL 입니다. 기존의 RDBMS의 한계를 극복하기 위해 만들어진 새로운 형태의 데이터저장소. 관계형 DB가 아니므로, RDMS처럼 고정된 스키마 및 JOIN 이 존재하지 않는다.
Document Oriented, 여기서 말하는 Document는 RDMS의 record 와 비슷한 개념인데요, 이의 데이터 구조는 한개이상의 key-value pair 으로 이뤄져있다.
ex)
{
"_id": ObjectId("5099803df3f4948bd2f98391"),
"username": "velopert",
"name": { first: "M.J.", last: "Kim" }
}
Collection은 MongoDB Document의 그룹입니다. Document들이 Collection내부에 위치하고 있습니다. RDMS의 table과 비슷한 개념이지만 각 Document들이 동적인 schema를 가지기 때문에RDMS와 달리 schema를 따로 가지고 있지않다.
Database는 Collection들의 물리적인 컨테이너이다. 각 Database는 파일시스템에 여러파일들로 저장된다.
컬렉션은 몽고DB Document 의 그룹이며 RDBMS 의 예를 들면 Table 과 개념과 유사합니다.
컬렉션은 단일 데이터베이스에 존재합니다.
컬렉션은 스키마를 강요하지 않습니다. 따라서 컬렉션 내부의 도큐먼트는 서로 다른 필드를 가질수 있습니다.
컬렉션 안에 도큐먼트는 일반적으로 서로 유사한 하거나 관련된 목적이 있습니다.
Docuemtn 는 하나의 키(key) 와 값(value)의 집합으로 이루어져 있으며 동적 스키마 입니다.
동적 스키마는 동일한 컬랙션 내의 도큐먼트가 동일한 필드 또는 구조를 가지필요 없을을 의미한다.
그리고 동일한 필드안에 다른타입의 데이타를 보유할수 있음을 의미합니다.
RDBMS MongoDB
Database Database
Table Collection
Tuple/Row Document
Column Field
Table Join Embedded Documents
Primary Key Primary Key ( Default _id )