반응형

1. SQL vs NoSQL ?
왜 종류가 나뉠까?
과거에는 흔치 않았던 테라바이트 수준의 데이터도 현재는 꽤 흔하게 접한다
저장할 데이터가 증가함에 따라 개발자는 '데이터베이스를 어떻게 확장할 것인가'와 같은 어려운 의사 결정에 직면하게 된다. 데이터베이스의 확장은 결국 더 큰 장비로 성능 확장할지 혹은 여러 장비에 데이터를 나눠 분산 확장할지 결정해야 하는 갈림길에 서게 한다. 일반적으로 성능 확장이 더 편한 길이지만, 대형 장비는 대체로 가격이 비싸고 결국에는 더는 확장할 수 없는 물리적 한계에 부딪히고 만다.
반면에 분산 확장은 저장 공간을 늘리거나 처리량을 높이고 서버를 구매해서 클러스터에 추가하는 방법이여서 경제적이고 확장이 용이하다
MongoDB는 분산 확장을 염두에 두고 설계됐다
[ SQL ( RDBMS ) ]
종류
Oracle / PostgreSQL / MySQL / SQLite
특징
- 데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다.
- 데이터는 관계를 통해 여러 테이블에 분산된다.
- 데이터는 테이블에 레코드로 저장되는데, 각 테이블마다 명확하게 정의된 구조가 있다. 해당 구조는 필드의 이름과 데이터 유형으로 정의된다. 따라서 스키마를 준수하지 않은 레코드는 테이블에 추가할 수 없다. 즉, 스키마를 수정하지 않는 이상은 정해진 구조에 맞는 레코드만 추가가 가능한 것이 관계형 데이터베이스의 특징 중 하나다.

장 · 단점
- 데이터 무결성 보장 - DB 내의 데이터에 대한 일관성, 유효성, 신뢰성을 보장하기 위해 데이터 변경 혹은 수정 시 여러 가지 제한을 두어 데이터의 정확성을 보증하는 것을 말한다
- 정해진 스키마 - 명확한 데이터 구조를 보장한다
- 복잡한 관계 - 테이블 간 관계를 맺고 있어서 시스템이 커질 경우 JOIN문이 많은 복잡한 쿼리가 만들어진다
- 유연하지 못한 데이터 - 스키마로 인해서 유연성이 떨어지고, 스키마 변경 시에는 번거롭고 어렵다
언제 사용할까 ?
- 관계를 맺고 있는 데이터가 자주 변경될 경우 (NoSQL은 여러 컬렉션을 모두 수정해줘야만 하기 때문이다)
- 명확한 스키마가 중요한 경우 사용
[ NoSQL ]
종류
MongoDB / CouchDB / ArangoDB
특징
- NoSQL에서는 레코드를 문서(documents)라고 부른다
- 스키마 없음, 관계없음
- SQL은 정해진 스키마를 따르지 않으면 데이터 추가가 불가능하지만 NoSQL에서는 다른 구조의 데이터를 같은 컬렉션에 추가가 가능하다
- 관계형 데이터베이스처럼 데이터를 여러 테이블에 나누어 담지 않고 관련 데이터를 동일한 컬렉션에 넣기 때문에 조인(join) 할 필요 없이 이미 필요한 모든 것을 갖춘 문서를 작성하게 된다

장 · 단점
- 유연함 - 스키마가 없어서 훨씬 더 유연하기 때문에 저장된 데이터를 조정하고 새로운 "필드"를 추가할 수 있다
- 속도 - 데이터는 애플리케이션이 필요로 하는 형식으로 저장되어 데이터를 읽어오는 속도가 빨라진다
- 불명확한 데이터 - 스키마가 존재하지 않기에 명확한 데이터 구조를 보장하지 않으며 데이터 구조 결정이 어렵다
- 수정이 어렵다 - 데이터가 여러 컬렉션에 중복되어 있기 때문에, 수정을 해야 하는 경우 모든 컬렉션에서 수행해야 한다
언제 사용할까 ?
- 데이터베이스를 수평으로 확장해야 하는 경우 즉, 막대한 양의 데이터를 다뤄야 하는 경우
- 정확한 데이터 구조를 알 수 없거나 변경 / 확장될 수 있는 경우
2. MongoDB ?
탄생한 이유
대규모 데이터를 처리해야 하는 데에는 RDBMS는 한계가 있다
일관성과 무결성을 버리고 더 빠른 읽기 성능과 수평 확장이 가능한 DB가 필요해서 탄생하였다
특징
- Document

- 몽고디비는 nosql이기 때문에 값을 저장하기 전에 schema를 별도로 정의하지 않으며, document를 추가하면 그게 바로 schema가 되기 때문에 자유롭게 데이터 구조를 잡을 수 있다
- BASE
- Basically Avaliable : 기본적으로 언제든지 사용할 수 있다는 의미로 가용성이 필요하다는 의미
- Soft state : 외부의 개입이 없어도 정보가 변경될 수 있다는 의미
- Eventually consistent : 일시적으로 일관적이지 않은 상태가 되어도 일정 시간 후 일관적인 상태가 되어야 한다
* BASE 기반이어서 성능과 가용성을 우선시한다
- Open Source : 무료로 이용이 가능하다
* IOT 사업에 MongoDB를 사용한 이유 ?
1. 많은 양의 데이터
2. 전자 기기들의 서로 다른 정보
반응형
'TIL > DataBase' 카테고리의 다른 글
SQLD 자격증 강의 정리 1st (0) | 2021.12.15 |
---|---|
Oracle / Sequence / View (0) | 2021.08.01 |
Oracle / Transaction / Constraints (0) | 2021.08.01 |
Oracle / CREATE TABLE / CRUD DATA (0) | 2021.08.01 |
Oracle / ORDER_BY / JOIN / ANSI JOIN (0) | 2021.08.01 |