Python

[MongoDB] 몽고DB란? NoSQL란? (1)

강담비 2022. 9. 5. 20:26
반응형



안녕하세요~

오늘은 몽고디비에 대한 첫번째 포스팅을 가지고 왔습니다.

첫장에서는 몽고디비가 무엇인지, 장점과 단점등에 대해서 이야기를 해보려 합니다.

먼저 몽고디비에 대해 알아보기 전에 NoSQL에 대해 잠시 설명하자면,

0. NoSQL 란?


Not Only SQL, Non-Relationl Operational Database SQL의 약자로 해석되며,
기존 관계형 DBMS에서 쓰이는 SQL과 다른 방식으로 데이터를 다룹니다.

대표적인 관계형 데이터베이스는 MySQL, Oracle, DB2, SQL Server 등이 있고
이 유형에 데이터베이스를 다루기 위해 사용되는 언어가 SQL(Structured Query Language)입니다.

관계형 데이터베이스와 NoSQL 데이터베이스를 비교해보겠습니다.

  관계형 데이터베이스 (RDBMS) NoSQL 데이터베이스
저장 - 정해진 데이터 스키마에 따라 테이블에 저장
- 스키마에 맞지 않는 레코드는 저장 불가
- 한 테이블 내에 데이터 중복 불가
- 정해진 규칙, 구조 없음
- 구조가 다른 데이터 저장 가능
- 한 커렉션 내에 데이터 중복 가능
(*컬렉션 : RDBMS에서의 테이블과 동일)
확장 - 수직적 확장 : 단순 DB서버 성능을 향상 - 수직적 확장 : 단순 DB 서버 성능 향상
- 수평적 확장 : 하나의 DB를 여러 호스트에 분산 작동
장점 - 데이터 무결성 보장
- 관계 맺는 데이터를 비교적 쉽게 관리 가능
- 규칙, 구조 없어 유연함
- 사용자가 필요한 형식으로 저장 가능 (효율)
- 수평적 확장 가능
단점 - 스키마 사전 정의 및 수정의 어려움으로 유연성 저하
- 관계와 구조로 인한 비 효율적인 쿼리 생성 가능성
- 수평적 확장 불가능
- 데이터 전처리, DB 설계등의 시간 필요
- 데이터 중복이 가능해 수정시 모든 중복 데이터 변경해야 함


아마 많은 분들이 관계형 데이터베이스(RDBMS)가 더 익숙하실 것 같습니다. 정보화 시대에 빅데이터에 중요성이 점점 높아지면서,
쏟아지는 비정형/반정형 데이터들을 처리할 수 있는 NoSQL 의 수요 또한 높아지고 있는 추세입니다. 둘 중에 뭐가 더 좋다기 보다는 필요에 따라 선택해 사용하는게 현명한 방법일거 같습니다. 데이터 끼리 관계가 있고 관계에 따라 잘 변경되는 서비스라면 관계형 데이터베이스를
빅데이터와 같이 방대한 비정형 데이터를 다뤄야 할때는
구조가 없고 확장성이 좋은 NoSQL을 사용하면 더 나은 결정이겠죠!
이제 본격적으로 NoSQL의 대표적인 예인 MongoDB에 대해 설명드리겠습니다.

1. MongoDB 란?


Document 지향적인 NoSQL 데이터베이스입니다.

MongoDB는 무엇입니까?

MongoDB는 필요한 쿼리 제공 및 인덱싱을 활용해 원하는 수준의 확장성과 유연성을 제공하는 문서 데이터베이스입니다.

www.mongodb.com


MongoDB에서는 JSON, BJSON을 모두 사용됩니다.
transaction 시에는 JSON을 사용하고, 데이터를 저장할 때는 BJSON을 사용합니다.

몽고디비 insert 문


위 예시는 "db" 라는 데이터베이스 안에 "users" 라는 컬렉션에 데이터를 넣는 insert문입니다.
앞서 말했 듯 transaction 시 JSON을 사용하기 때문에 데이터 형식은 JSON입니다.

( 익숙한 SQL과 용어가 좀 다른데 아래 표를 참고하시면 될 것 같습니다. )

SQL MongoDB
테이블 컬렉션
문서
컬럼 필드
기본키 ObjectId
인덱스 인덱스
보기 보기


2. MongoDB의 장점


몽고디비는 NoSQL의 장점을 다 가지고 있고,

- JSON를 사용하기 때문에 데이터 쉽게 이해 가능
- 개발이 편리하고 사용 방법이 간단
- 빅데이터 처리 특화

라는 장점이 있습니다.

3. MongoDB의 단점


몽고디비는 NoSQL의 단점을 다 가지고 있고,

- 비교적 데이터 공간이 많이
- 복잡한 JOIN 시 성능 저하 가능성 존재
- 데이터 양이 많을 경우, 안정성으로 데이터 손실 가능성 존재

라는 단점이 있습니다.






다음 포스팅은 몽고디비 설치 방법, 파이몽고 활용법에 대해 가져오겠습니다~


감사합니다 : )

'Python' 카테고리의 다른 글

[Pyinstaller] 파이썬 프로그램 실행파일(.exe) 만들기  (0) 2022.07.25