Database
[MongoDB] Intro 및 기본 사용법
춘햄
2024. 3. 12. 11:29
MongoDB는 문서 지향적 NoSQL 데이터베이스이다. 데이터를 JSON과 유사한 형식인 BSON(Document)으로 저장하고 관리한다.
다양한 데이터 구조를 효율적으로 저장하고 쿼리 할 수 있으며, SQL 데이터베이스에 비해 더 유연한 데이터 모델을 제공한다.
MongoDB의 특징:
- 스키마가 없다: MongoDB는 고정된 스키마를 갖지 않는다. 같은 컬렉션 내의 문서들은 서로 다른 구조를 가질 수 있다.
- 문서 지향적이다: 데이터는 문서 형식의 BSON 파일로 저장된다. 이는 JSON과 유사하며, 데이터의 읽기와 쓰기가 용이하다.
- 확장성이 뛰어나다: 데이터가 증가함에 따라, MongoDB는 샤딩을 통해 데이터베이스를 수평으로 확장할 수 있다.
- 인덱싱을 지원한다: MongoDB는 다양한 형태의 인덱싱을 지원한다. 이를 통해 효율적인 쿼리 수행이 가능하다.
- 복제와 고가용성을 지원한다: 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 싫어요...) 생각보다 사용이 쉬워서 놀랐다.
앞으로 좀 더 친해져 보도록 하자.