데이터베이스는 데이터 구조, 저장 방식, 확장성 등에 따라 관계형 데이터베이스(RDBMS)와 비관계형 데이터베이스(NoSQL)로 나뉩니다. 각각의 특징과 차이점을 정리해 보겠습니다.
테이블(표) 형식으로 데이터를 저장하며, 데이터 간 관계를 정의하여 무결성을 보장하는 데이터베이스입니다.
✔ 데이터 무결성 및 일관성 보장 → 중요한 금융, 회계, 트랜잭션 시스템에서 필수
✔ 중복 없는 데이터 저장 가능 → 데이터 정규화를 통해 최적화
✔ 복잡한 쿼리 처리 가능 → SQL을 사용해 여러 테이블에서 데이터를 조합
❌ 스키마 변경이 어렵다 → 컬럼을 추가하거나 구조를 변경하면 기존 데이터 수정이 필요
❌ 확장성이 낮다(Scale-Up 방식이 주로 사용됨) → 서버 성능 한계 도달 시 확장 어려움
❌ 고성능 트래픽 처리에 불리할 수 있음 → 많은 읽기/쓰기 요청을 처리하는 데 부담이 될 수 있음
테이블 기반이 아닌 다양한 형태(문서, 키-값, 컬럼, 그래프)로 데이터를 저장하며, 유연한 확장성과 높은 성능을 제공하는 데이터베이스입니다.
✔ 빠른 읽기/쓰기 성능 → 트래픽이 많은 환경에서 유리
✔ 유연한 스키마 구조 → 데이터 구조가 자주 바뀌는 애플리케이션에 적합
✔ 확장성이 뛰어남 → 여러 대의 서버를 추가하여 트래픽 증가에 대응
❌ 데이터 정합성 보장이 어려움 → 데이터 중복 허용으로 인해 일관성 문제가 발생할 수 있음
❌ 복잡한 쿼리 처리 불가능 → JOIN이 없으며, 특정 유형의 데이터를 처리하기 위한 별도 방식 필요
❌ 적절한 데이터 모델링 필요 → 데이터를 어떻게 저장할지 미리 설계해야 함
유형 | 설명 | 대표적인 DB |
---|---|---|
문서(Document) 기반 | JSON 형태로 데이터 저장 | MongoDB, CouchDB |
키-값(Key-Value) 저장소 | Key-Value 쌍으로 데이터 저장 | Redis, DynamoDB |
와이드 컬럼(Column-Family) 스토어 | 열 중심 저장 방식 | Apache Cassandra, HBase |
그래프(Graph) 데이터베이스 | 노드와 엣지로 관계 표현 | Neo4j, ArangoDB |
구분 | 관계형 데이터베이스(RDBMS) | 비관계형 데이터베이스(NoSQL) |
---|---|---|
데이터 구조 | 고정된 스키마(테이블 기반) | 유연한 스키마(문서, 키-값, 그래프 등) |
확장 방식 | 주로 Scale-Up(서버 성능 업그레이드) | 주로 Scale-Out(서버 여러 대 추가) |
트랜잭션 지원 | ACID 보장(데이터 무결성 높음) | Eventually Consistent(일관성 낮을 수 있음) |
복잡한 쿼리 | JOIN 및 다중 테이블 연산 가능 | JOIN 불가능, 단순한 조회 연산 위주 |
읽기/쓰기 성능 | 일반적인 수준 | 빠른 읽기/쓰기 처리 가능 |
사용 사례 | 금융, ERP, 트랜잭션 중심 서비스 | 로그, 실시간 분석, 대량의 데이터 처리 |
📌 대부분의 대규모 서비스는 RDBMS와 NoSQL을 혼합하여 사용합니다.
예를 들어, 사용자 정보는 MySQL에 저장하고, 로그 데이터는 MongoDB에 저장하는 방식으로 구성할 수 있습니다.