Relational DataBase Management System (관계형 DB 관리 시스템)
ex. Oracle, MySQL, Microsoft SQL Server, PostgreSQL
| NoSQL | |
|---|---|
| 장점 | 1. 스키마가 정해져 있어 데이터 무결성을 보장 2. 정규화를 통해 *데이터 중복을 최소화 |
| 단점 | 1. 스키마가 정해져 있어 추후 수정이 어려움 2. 수직적 확장만 가능 |
최고 존엄
사용률 1순위에 위치한 만큼 어떤 DB보다 기능도 많고 빠르지만, 가격도 살벌하기에 개인이 사용하기엔 무리가 따릅니다.
주로 기업에서 구매해 사용하는 DB이며, 대규모 데이터를 안정적으로 처리하며, 강력한 보안 기능을 제공합니다.
사용 기업 : Uber, Spotify, 올리브영
RDBMS계의 2인자
무난하게 쓰기 좋고 무료이기 때문에 토이 프로젝트 용도로 사용하기 좋습니다.
다만, 상업적 목적으로 사용하기 위해서는 유료 라이센스를 구매하기 때문에 약간 아쉽습니다.
오라클에 비해 기능이 부족하지만, 초기 설정이 쉽고 간단한 프로젝트의 RDBMS로 쓰기엔 충분하니 이 부분은 걱정하지 않아도 됩니다.
사용 기업 : Youtube, Github, Netflix
기업용
주로 기업에서 사용하며 유료 DB이기 때문에 기술지원, 데이터 관리 도구 등은 잘 되어있는 편입니다.
하지만 비슷한 기능을 무료로 제공하는 DB도 많기에, 개인적으로 새로운 프로젝트에 도입하기는에는 추천하지는 않습니다.
사용 기업 : 금융권
무료 오라클
무료 오라클이라는 수식어 답게 오라클만큼이나 기능도 풍부하고 성능도 보장됩니다.
또한 오픈소스 프로젝트이기 때문에 상업적 이용도 무료로 사용할 수 있습니다.
한국에서는 다른 DB에 비해 인지도가 밀리지만, 미국이나 일본에서는 꾸준히 점유율이 올라가고 있는 좋은 DB입니다.
사용 기업 : Redit, Skype
많은 RDS에는 MySQL, MariaDB, PostgreSQL 중에 고르는 것이 좋습니다.
이유 1. 가격
이유 2. Amazon Aurora(오로라) 교체 용이성
Not Only SQL (RDBMS를 제외한 나머지 유형)
ex. MongoDB, Redis, elasticsearch
| NoSQL | |
|---|---|
| 장점 | 1. 대량의 데이터와 높은 사용자 부하에도 확장에 용이(수직, 수평) 2. 애플리케이션이 필요한 형식으로 저장되기때문에 데이터를 읽어오는 속도가 빠름 |
| 단점 | 1. 스키마가 정해져있지않아 장기적인 유지보수에 어려움(데이터 무결성은 보장함) 2. 데이터 중복을 계속 확인해야함 |

NoSQL 1티어
NoSQL이기에 RDBMS에 비해 구조가 유연해 빠른 개발 속도를 보장하며, 국내에서는 Node.js+MongoDB 조합으로 스타트업과 같이 빠르게 제품을 개발해야 할 때 사용합니다.
디스크 기반의 저장 방식 때문에 대용량 데이터 처리에 적합하지만, Redis에 비해 상대적으로 느릴 수 있습니다. 하지만 다양한 인덱스를 지원하여 검색 속도가 높습니다.
ex. SNS, 콘텐츠 관리 시스템(ex:카톡의 톡서랍), 로그 데이터 분석

메모리 기반으로 데이터를 디스크가 아닌 RAM에 저장해 빠른 데이터 처리 속도를 자랑합니다. 실시간 채팅, 알림 시스템, 세션 관리, 인기 콘텐츠 캐싱 등 초고속 데이터 처리가 필요한 서비스에 적합합니다. 또한 Pub/Sub 기능을 통해 실시간 메시징을 효율적으로 처리할 수 있습니다. 인덱스를 지원하지 않지만, Sorted Sets, Lists 자료구조를 사용하여 인덱싱과 유사한 기능을 제공할 수 있습니다.
ex. 인기 콘텐츠캐싱, 실시간 순위판, 메시징 시스템, JWT 토큰 관리
검색, 로그 수집 등 대용량 데이터 처리
기본 데이터 구조는 검색엔진, vector DBMS 역색인 구조로 데이터 저장하여 조회가 매우 빠릅니다. Elastic stack 내 Logstash, Kibana 등을 이용하여 데이터 수집 및 시각화가 가능합니다.
MongoDB: 대용량 데이터와 복잡한 쿼리가 필요한 애플리케이션에 적합합니다.
Redis: 빠른 데이터 액세스가 필요한 경우에 적합합니다.

| RDBMS | NoSQL | |
|---|---|---|
| 데이터 유형 | table (rows-columns) | document, key-value, wide column, graph etc. |
| 데이터 스키마 | 명확하게 정의되어 있음 | 유연함 |
| 예시 | ex1. 명확한 스키마가 사용자와 데이터에게 중요한 경우 ex2. 데이터베이스의 ACID 성질을 준수해야 하는 소프트웨어를 개발하는 경우 | ex1. 정확한 데이터의 구조를 알 수 없거나 변경/확장될 가능성이 있는 경우 ex2. 읽기는 자주 / 변경은 자주 없는 경우 ex3. 막대한 양의 데이터를 다뤄야 해서 데이터베이스를 수평으로 확장해야 하는 경우 |
| 장/단점 | 일관성과 신뢰도를 보장/데이터 유형에 제약 | 속도, 유연성 및 확장성을 선사/유지보수 어려움 |
참고자료
RDBMS와 NoSQL의 차이
[Database] MySQL과 MariaDB 무엇이 더 좋을까?
[MongoDB] MongoDB란? 특징과 장단점을 예제로 확인해보자.
냅다 디비를 만들어! 1위부터 5위까지 DB 비교
Redis
MongoDB (Redis와 비교)