- 관계형 데이터베이스(Relational Database)란 데이터가 중복되지 않도록 하여 테이블의 역할이 명확하게 구분하고 테이블 간에는 외래키(FK)를 사용하여 데이터를 공유하는 것으로 서로 관계를 맺도록 설계한 데이터 모델이다.
- 데이터의 중복이 허락되지 않기 때문에 Object 안에 Object를 넣을 수 없어 두 개의 테이블의 데이터를 조인해서 사용합니다.
- 2차원 데이터로 표현된다.
- 테이블 사이의 관계를 외래키로 나타낸다.
- ACID 성질을 갖는다.
- 유지관리 비용 / 사용 요금이 비쌉니다.
- 스키마 변경이 어렵다.
- RDB는 매우 정교한 초기 설계로 만들어집니다.
- 테이블 사이에 서로 의존성이 있기에 새로운 열을 추가한다던지 하는 작업은 실제 production 환경에서는 사실상 불가능합니다.
- 수직 확장(Vertical Scale) 가능하지만, 수평 확장(Horizontal Scale)이 어렵습니다.
- 일반적으로 수직 확장(Vertical Scale)은 하드웨어 스펙의 확장을 의미합니다.
- 수평 확장(Horizontal Scale)은 양적 확장을 의미합니다.
- RDB가 수직 확장이 더 용이하고 수평 확장이 어려운 이유는, 데이터가 여러 테이블에 의존해있기 때문입니다.
- 데이터가 서버에 분산될 경우 이를 중간에서 잘 중재해주는 역할이 중요해지는데, 그럴 바에는 그냥 좋은 서버를 하나 사서 분산 처리에 대한 신경을 쓰지 않는게 더 좋기 때문입니다.
- 보통 기존 테이블을 복제해서 거기에 수정을 가한 뒤, 기존 테이블과 교체하는 방식을 택합니다.
- Not Only SQL 의 약자로, 테이블 간 상호관계가 없는 것이 특징이다. 관계가 없으므로 다른 테이블과 join도 할 수 없다.
- RDB 형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장기술이다. RDBMS와는 달리 테이블 간 관계를 정의하지 않는다.
- 빅데이터의 등장으로 인해 데이터와 트래픽이 기하 급수적으로 증가함에 따라 RDBMS에 단점인 성능을 향상시키기 위해 등장하였다.
- 데이터 일관성은 포기하되 비용을 고려하여 여러대의 데이터에 분산하여 저장하는 Scale-Out을 목표로 등장하였다.
도큐먼트 모델은 레코드 하나를 오브젝트(도큐먼트) 형식으로 표현하며, 자유로운 스키마 구조를 가지며, 자유롭게 작업하기 좋다. 대표적으로 몽고 DB가 있습니다.그래프 모델은 데이터를 버텍스와 엣지로 그래프에 표현하는 방식이며, 데이터 사이의 유기적인 관계를 표현하기에 적합합니다. 대표적으로 아랑고 DB가 있습니다.키/값 모델은 하나의 키에 값을 맵핑하는 해시 구조의 데이터 모델이며, 빠르게 데이터에 접근할 수 있는 장점이 있습니다. 대표적으로 redis가 있습니다.와이드 컬럼 모델은 테이블 형태를 가지며, 행마다 갖는 컬럼의 형태가 고정되어 있지 않은 데이터 모델이라고 합니다.
- 다양한 방식으로 데이터를 표현합니다.
- 테이블 사이에 딱히 명시된 제약이나 규칙이 없습니다.
- 스키마가 고정적이지 않고, 매우 유연합니다.
- 수평적 확장(Horizontal Scale)이 쉽습니다.
- 코스트가 저렴하고 오픈소스도 많습니다.
- 연산이 빠르고 빅데이터 & 실시간 연산에 적합합니다.
- 데이터 중복 발생 가능
- 데이터 변경 시 중복 데이터로 인해 모든 컬렉션에서 수정이 필요할 수 있습니다.

