[TIL]221201

grace·2022년 12월 1일

TIL/WIL

목록 보기
4/37
post-thumbnail

What I Learned Today

파이썬, 몽고DB 설치부터 기초시작하기


Key Concepts

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가 유리함

Code Snippets

# 저장 - 예시
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'})

Challenges Experienced

일지 쓰는 것 습관들이기..그동안 일지와 정리 블로깅하기에 소홀했던것 반성하자
NoSQL 데이터베이스인 몽고DB도 쓰지만 이전 공부했던 mySQL 공부도 잊지 않도로 계속 공부해야겠다.

profile
미래의 개발자!

0개의 댓글