파이썬, 몽고DB 설치부터 기초시작하기
MongoDB 장점
Schema-less 구조
- 다양한 형태의 데이터 저장 가능
- 데이터 모델의 유연한 변화 가능(데이터 모델 변경, 필드 확장 용이)
Read/Write 성능이 뛰어남
Scale Out 구조- 많은 데이터 저장이 가능
- 장비 확장이 간단함
JSON 구조 : 데이터를 직관적으로 이해 가능
사용 방법이 쉽고, 개발이 편리함
MongoDB 단점
- 데이터 업데이트 중 장애 발생 시, 데이터 손실 가능
- 많은 인덱스 사용 시, 충분한 메모리 확보 필요
- 데이터 공간 소모가 RDBMS에 비해 많은(비효율적인 Key 중복 입력)
- 복잡한 JOIN 사용시 성능 제약이 따름
- 트랜잭션 지원이 RDBMS 대비 미약함
- 제공되는 MapReduce 작업이 Hadoop에 비해 성능이 떨어짐
빅데이터 처리 특화
- Memory Mapped(데이터 쓰기 시에 OS의 가상 메모리에 데이터를 넣은 후 비동기로 디스크에 기록하는 방식)를 사용
- 방대한 데이터를 빠르게 처리 가능
- OS의 메모리를 활용하기 때문에 메모리가 차면 하드디스크로 데이터 처리하여 속도가 급격히 느려짐
- 하드웨어적인 측면에서 투자가 필요
MongoDB 불안정성
데이터 양이 많을 경우
- 일부 데이터가 손실 가능성 존재
- 샤딩의 비정상적인 동작 가능성
- 레플리카 프로세스의 비정상 동작 가능성
MongoDB vs MySQL
- MongoDB와 MySQL에서 동일한 데이터를 가지고 CRUD를 수행할 때, 대부분의 결과가 MongoDB가 빠르게 나옴
- MongoDB의 경우, Single Node와 Multi Node 간에 성능 차이는 거의 없음(Delete 연산을 제외하고 대부분 Multi Node가 근소하게 빠름)
- MongoDB Multi Node의 Insert 연산 중에 연산 실패가 일어나는 경우 발생
- 분산을 목적으로 한 DBMS 선택할 경우, RDBMS에 비해 낮은 비용과 빠른 성능을 제공하는 MongoDB가 유리함
# 저장 - 예시
doc = {'name':'bobby','age':21}
db.users.insert_one(doc)
# 한 개 찾기 - 예시
user = db.users.find_one({'name':'bobby'})
# 여러개 찾기 - 예시 ( _id 값은 제외하고 출력)
all_users = list(db.users.find({},{'_id':False}))
# 바꾸기 - 예시
db.users.update_one({'name':'bobby'},{'$set':{'age':19}})
# 지우기 - 예시
db.users.delete_one({'name':'bobby'})
일지 쓰는 것 습관들이기..그동안 일지와 정리 블로깅하기에 소홀했던것 반성하자
NoSQL 데이터베이스인 몽고DB도 쓰지만 이전 공부했던 mySQL 공부도 잊지 않도로 계속 공부해야겠다.