MongoDB란

zihooy·2023년 6월 8일
0

MongoDB

목록 보기
1/3
post-thumbnail

Mongo DB에 대해 알아보자.

🏹 MongoDB란?

MongoDB는 문서 지향적인 NoSQL 데이터베이스로, 대량의 비정형 데이터를 저장하고 처리하는 데 사용된다.

이게 무슨뜻인가...🤔 하나씩 천천히 알아보자 !

문서 지향적이란?

문서 지향적(Document-oriented)이란 데이터베이스 시스템의 한 종류이다.
MongnDB에서는 비정형 데이터를 저장하고 관리하기 위해 문서(Document)라는 개념을 중심으로 데이터를 구성한다.

아래의 코드를 한번 살펴보자.

// 데이터베이스 선택
MongoDatabase database = mongoClient.getDatabase("mydatabase");

// 컬렉션 선택
MongoCollection<Document> collection = database.getCollection("mycollection");

// 새로운 문서 생성
Document document = new Document("name", "John")
 	.append("age", 30)
    .append("email", "john@example.com");

// 문서 삽입
collection.insertOne(document);
System.out.println("새로운 문서가 삽입되었습니다. ID: " + document.get("_id"));

위의 코드 처럼 새로운 document를 생성한 후, collection에 직접적으로 삽입할 수 있다.
위의 코드를 실행하면 다음과 같은 document가 생성된다.

{
  "name": "John",
  "age": 30,
  "email": "john@example.com"
}

컬렉션(Collection)이란?

컬렉션(Collection)은, 비정형 데이터인 문서(Document)들의 그룹이다.
비슷한 유형의 문서들을 논리적으로 모아서 저장하는 단위라고 할 수 있다.

아래의 코드는 Person document이다.
id, name, gender, age, address라는 field를 만들고 데이터를 저장한다.

  {
    "_id": ObjectId("61e0d934a4b2d43e3aef3e6f"),
    "name": "John",
    "gender": "남",
    "age": 30,
    "address": "New York"
  }

중괄호로 둘러싸인 부분이 하나의 문서이며, 아래와 같이 3개의 문서가 1개의 collection을 이룬다.
주의할 점은, 하나의 colletion에 있는 각 문서는 동일한 field를 가져야 한다는 것이다.

[
  {
    "_id": ObjectId("61e0d934a4b2d43e3aef3e6f"),
    "name": "John",
    "gender": "남",
    "age": 30,
    "address": "New York"
  },
  {
    "_id": ObjectId("61e0d934a4b2d43e3aef3e70"),
    "name": "Alice",
    "gender": "여",
    "age": 25,
    "address": "London"
  },
  {
    "_id": ObjectId("61e0d934a4b2d43e3aef3e71"),
    "name": "Michael",
    "gender": "남",
    "age": 35,
    "address": "Los Angeles"
  }
]

NoSQL이란?

NoSQL은 "Not Only SQL"의 약어이다.
관계형 데이터베이스(MySQL 등)와 달리 쿼리가 아닌 메소드를 사용한다.
예를 들어 Document 클래스를 사용하여 문서를 생성하고 필드와 값을 추가하며, insertOne(), find(), updateOne(), deleteOne() 등의 메소드를 사용하여 데이터를 조작한다.

비정형 데이터란?

MongoDB는 JSON 형식의 문서로 데이터를 저장한다.
문서는 BSON(Binary JSON) 형태로 저장되며, 하나의 문서에는 여러 필드와 값이 포함될 수 있다.
따라서, 애플리케이션의 요구사항에 맞게 데이터를 조직화할 수 있는 장점이 있다.

MongoDB는 여러 개의 문서를 하나의 컬렉션으로 그룹화한다.
컬렉션은 RDBMS의 테이블에 해당하며, 각 문서는 유일한 식별자인 ObjectId를 갖는다.
이 ObjectId는 자동으로 생성되며, 각 문서를 고유하게 식별하는 데 사용된다.

🏹 관계형 데이터베이스의 Table vs 컬렉션

관계형 데이터베이스와 컬렉션을 비교하면 컬렉션의 개념에 대해 보다 쉽게 이해할 수 있다.

예를 들어, Person이라는 객체 안에 id, name, gender, age, address를 저장한다고 하자.

아래의 코드는 관계형 데이터베이스에서 나타낸 Person Table이다.

관계형 테이블에서는 id, name, gender, age, address라는 column을 만들어서 데이터를 저장한다.

이와 다르게, MondoDB에서는 하나의 문서 안에 id, name, gender, age, address라는 field를 만들어서 데이터를 저장하고, 이를 하나의 colletion에 저장한다.

[
  {
    "_id": ObjectId("61e0d934a4b2d43e3aef3e6f"),
    "name": "John",
    "gender": "남",
    "age": 30,
    "address": "New York"
  },
  {
    "_id": ObjectId("61e0d934a4b2d43e3aef3e70"),
    "name": "Alice",
    "gender": "여",
    "age": 25,
    "address": "London"
  },
  {
    "_id": ObjectId("61e0d934a4b2d43e3aef3e71"),
    "name": "Michael",
    "gender": "남",
    "age": 35,
    "address": "Los Angeles"
  }
]

🏹 MongoDB의 특징 3가지

MongoDB의 특징 3가지를 간단히 정리해보았다.

  1. 문서 지향적(Document-Oriented)
    JSON 형식의 문서를 중심으로 데이터를 저장한다.

  2. 스케일아웃 가능(Scalable)
    분산 아키텍처로 수평적인 확장이 가능하며 대용량 데이터 처리에 용이하다.

  3. 유연한 데이터 모델(Flexible Schema)
    스키마를 사전에 정의하지 않고 유연하게 데이터를 저장하고 수정할 수 있다.

profile
thisIsZihooLog

0개의 댓글