티스토리 뷰

 MongoDB는 문서 지향적 NoSQL 데이터베이스이다. 데이터를 JSON과 유사한 형식인 BSON(Document)으로 저장하고 관리한다.

 

다양한 데이터 구조를 효율적으로 저장하고 쿼리 할 수 있으며, SQL 데이터베이스에 비해 더 유연한 데이터 모델을 제공한다.

MongoDB의 특징:

  1. 스키마가 없다: MongoDB는 고정된 스키마를 갖지 않는다. 같은 컬렉션 내의 문서들은 서로 다른 구조를 가질 수 있다.
  2. 문서 지향적이다: 데이터는 문서 형식의 BSON 파일로 저장된다. 이는 JSON과 유사하며, 데이터의 읽기와 쓰기가 용이하다.
  3. 확장성이 뛰어나다: 데이터가 증가함에 따라, MongoDB는 샤딩을 통해 데이터베이스를 수평으로 확장할 수 있다.
  4. 인덱싱을 지원한다: MongoDB는 다양한 형태의 인덱싱을 지원한다. 이를 통해 효율적인 쿼리 수행이 가능하다.
  5. 복제와 고가용성을 지원한다: MongoDB는 자동 복제 및 장애 대비 기능을 제공하여 데이터의 안정성을 보장한다.

MongoDB 사용법 예시

유저, 주문, 계좌 정보를 예시로 MongoDB에서 기본적인 CRUD 작업을 한번 확인해 보자.

 

1. 데이터베이스와 컬렉션 생성:

 

MongoDB에서 데이터를 저장하기 위해 먼저 데이터베이스와 컬렉션을 생성해야 한다.

use shopDB // shopDB라는 이름의 데이터베이스 사용. 없으면 새로 생성됨.
db.createCollection("users") // users 컬렉션 생성
db.createCollection("orders") // orders 컬렉션 생성
db.createCollection("accounts") // accounts 컬렉션 생성

 

2. 데이터 삽입:

db.users.insertOne({name: "John Doe", age: 30, email: "johndoe@example.com"})
db.orders.insertOne({userId: "some_user_id", total: 100, status: "pending"})
db.accounts.insertOne({userId: "some_user_id", balance: 1000})

 

3. 데이터 조회:

db.users.find({name: "John Doe"})
db.orders.find({userId: "some_user_id"})
db.accounts.find({balance: {$gt: 500}}) // 잔액이 500 이상인 계좌 조회

 

4. 데이터 업데이트:

db.users.updateOne({name: "John Doe"}, {$set: {age: 31}})
db.accounts.updateOne({userId: "some_user_id"}, {$inc: {balance: -100}})

 

5. 데이터 삭제:

db.users.deleteOne({name: "John Doe"})
db.orders.deleteOne({userId: "some_user_id", status: "pending"})

일단 데이터가 기본적으로 "비정규화"되는 것이 굉장히 마음에 들고(JOIN 싫어요...) 생각보다 사용이 쉬워서 놀랐다.

 

앞으로 좀 더 친해져 보도록 하자.

Comments