일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Django
- depends_on
- MySQL server on 'db' (115)
- TypeError: 'property' object is not iterable
- EC2
- 우아한 테크코스 2차 합격
- OperationalError
- depends
- docker
- github skyline
- METACLASS
- DB
- Spring
- classproperty
- S3
- springboot 3.0.0
- 프로그래머스
- classmethod
- 코딩테스트
- javascript
- 2차 코딩테스트
- AWS S3
- 재귀함수가 뭔가요
- 우아한테크코스 2차
- python
- AWS
- 갓재석
- docker-compose
- github
- python all testcode
Archives
hanbin.dev
[DB] MongoDB 장점 본문
RDBMS에 친숙하다면
- 정규화가 잘 된 데이터모델의 유용함
- 트랜잭션의 필요성
- 견고한 저장 엔진을 통해 얻는 확신
을 잘 알고 있을 것이다.
이런 RDBMS를 벗어나 NoSQL로 옮긴다면 어떤 장점이 있을까?
- 확장의 용이성MongoDB의 데이터 모델과 지속성 전략은 높은 읽기/쓰기 효율과 자동 장애조치를 통한 확장의 용이성을 염두에 두고 만들어졌다.
- MongoDB는 웹 애플리케이션과 인터넷 기반을 위해 설계된 데이터베이스 관리 시스템이다.
- 직관적인 데이터 모델예를 들자면 아래에 사용자에 대한 정보를 몇 개의 필드로 저장한 도큐먼트가 있다.만약 하나의 사용자가 여러개의 이메일을 가질 수 있다면 어떻게 해야할까?하지만 MongoDB는 아래와 같이 사용하면 된다.예시와 같이 MongoDB는 한명의 사람 정보를 얻기 위해서 하나의 도큐먼트로 표현할 수 있다.
- 만약 RDBMS였다면 여러개의 테이블에 나눠져 있는 정보를 조인 연산으로 가득찬 SQL 쿼리를 만들어 표현했어야 할 것이다.
- { _id: 10, username: 'hanbin', email : [ 'hanbin8269@gmail.com', 'gksqls0128@naver.com' ] }
- RDBMS라면 서로 조인을 하기 위해 이메일 과 사용자 테이블을 각각 만들어야 할 것이다.
- { _id: 10, username: 'hanbin', email : 'hanbin8269@gmail.com' }
- MongoDB는 데이터의 변경이 발생했을 때 스키마에 맞춰야 하는 걱정 없이 구조화 된 도큐먼트를 저장할 수 있다는 장점이 있는데,
- 객체 매핑의 단순화MongoDB의 도큐먼트는 JSON에 기반하는데, JSON은 프로그래밍 언어에서 dictionary나 hash map과 유사하다.
- 그렇기 떄문에 프로그래밍 언어에서 정의한 객체가 그대로 저장되므로 객체 매퍼의 복잡성이 사라진다.
- 개발자들은 주로 객체지향언어를 사용해 작업을 하기 때문에 객체에 잘 매핑되는 데이터 저장 구조를 원한다.
'DB' 카테고리의 다른 글
[DB] MongoDB 자료구조 (0) | 2022.06.01 |
---|---|
[DB] Lock 이해하기 (0) | 2022.05.20 |
[DB] 상황에 맞는 인덱스 사용법 (0) | 2022.05.20 |