MongoDB 기초 톺아보기
[SQL]MongoDB 기초 톺아보기
MongoDB 기초 톺아보기
1. 왜 MongoDB인가?
RDBMS(Relational Database Management System) 환경에서는 데이터를 테이블(행과 열)로 저장하고, SQL 언어로 조작함. 하지만 최근 대규모 비정형 데이터가 많아지면서 더 유연한 저장 방식이 요구되고 있음. 이럴 때 NoSQL, 그 중에서도 문서지향(Document-Oriented) 데이터베이스인 MongoDB가 많이 활용됨.
MongoDB는 어떤 특징이 있을까?
- JSON과 유사한 형태(BSON)로 데이터 저장
- 스키마 유연성: 컬럼이 고정되어 있지 않아 다양한 형태의 데이터 저장 가능
- 수평적 확장에 유리 (Sharding)
- 다양한 언어에서 사용 가능 (Python, JavaScript, Java 등)
- 복잡한 조인보다는 중첩 문서 구조를 통해 데이터 표현
2. MongoDB 설치 및 시작
2-1. 로컬 설치 (Windows 기준)
- 공식 홈페이지에서 설치파일 다운로드: https://www.mongodb.com/try/download/community
- 설치 시, MongoDB Compass (GUI 클라이언트)도 함께 설치 가능
- 기본 포트는 27017번
2-2. 클라우드(MongoDB Atlas) 사용도 가능
- 별도의 설치 없이 웹에서 바로 클러스터 생성 후 사용 가능
- 무료 플랜도 제공
3. PyMongo로 Python에서 MongoDB 다뤄보기
!pip install pymongo
from pymongo import MongoClient
client = MongoClient("mongodb://localhost:27017")
MongoClient()는 MongoDB에 연결할 수 있게 해주는 객체- 기본 포트는 27017이며, 다른 포트를 사용 중이라면 주소를 수정해주면 됨
4. 데이터베이스와 컬렉션
4-1. 데이터베이스 생성/선택
db = client['my_database']
4-2. 컬렉션 생성/선택
collection = db['my_collection']
- MongoDB는 명시적으로
CREATE TABLE같은 명령어가 없음 - 데이터를 처음 삽입할 때 자동으로 컬렉션 및 데이터베이스가 생성됨
5. 문서(Document) 삽입하기
data = {"name": "Pikachu", "type": "Electric", "level": 25}
collection.insert_one(data)
- MongoDB는 각 행을 문서(document)라고 부름
- Python에선 dict 자료형으로 표현 가능
여러 개의 문서를 한 번에 삽입하려면?
docs = [
{"name": "Charmander", "type": "Fire"},
{"name": "Squirtle", "type": "Water"}
]
collection.insert_many(docs)
6. 문서 조회하기
전체 조회
for doc in collection.find():
print(doc)
조건 조회
collection.find_one({"type": "Electric"})
조건과 함께 반복 조회
for doc in collection.find({"type": "Water"}):
print(doc)
7. 문서 수정하기
collection.update_one(
{"name": "Pikachu"},
{"$set": {"level": 30}}
)
$set연산자를 통해 필드값 수정 가능
8. 문서 삭제하기
collection.delete_one({"name": "Charmander"})
9. MongoDB 쿼리 작성 시 팁?
_id필드는 자동 생성되며, 각 문서의 고유값 역할을 함- 정렬:
.find().sort("name") - 조건 연산자:
$gt,$lt,$in,$and,$or등 SQL과 유사한 느낌으로 작성 가능
10. 마무리
MongoDB는 데이터 구조가 유동적이고 복잡한 경우 특히 유용함.
근데… 데이터 무결성이나 복잡한 조인 연산이 필요한 경우엔 관계형 DB가 더 낫다고 함..
댓글남기기