관계형 데이터베이스(Relational DataBase)란?
관계형 데이터베이스란 데이터가 하나 이상의 열과 행의 테이블에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로, 데이터를 구성하는 정보 모음이다.
관계형 데이터베이스에는 테이블을 조인하여 정보 간 관계 또는 링크를 설정할 수 있는 기능이 있으며, 여러 데이터 포인트 간의 관계를 쉽게 이해하고 정보를 얻을 수 있다.
관계는 이러한 테이블 간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적인 연결이다.
관계형 데이터베이스의 예
관계형 데이터베이스 관리 시스템(RDBMS)은 관계형 데이터베이스를 생성, 업데이트, 관리하는 데 사용하는 프로그램으로 잘 알려진 예로는 MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, Oracle Database가 있다.
Cloud SQL, Cloud Spanner, AlloyDB와 같은 클라우드 기반 관계형 데이터베이스는 데이터베이스 유지보수, 패치, 용량 관리, 프로비저닝, 인프라 지원을 위한 관리형 서비스를 제공하기 때문에 점점 더 많은 인기를 얻고 있다.
관계형 데이터베이스의 장단점
📍 장점
- 전체 데이터베이스 구조를 변경하거나 기존 애플리케이션에 영향을 주지 않고 필요할 때마다 간편하게 테이블, 관계를 추가 또는 삭제하고 데이터를 변경할 수 있다.
- 관계형 데이터베이스는 ACID(원자성, 일관성, 격리, 내구성) 성능을 지원하므로 오류, 실패, 기타 잠재적 오작동과 관계없이 데이터 유효성을 검사할 수 있다.
- 일반 사용자도 SQL을 사용하여 복잡한 쿼리를 쉽게 실행할 수 있다.
- 여러 사용자가 동시에 데이터를 운영하고 액세스할 수 있어 공동작업이 가능하다.
- 정규화를 사용해 데이터 중복성을 줄이고 데이터 무결성을 개선한다.
- 대부분의 관계형 데이터베이스는 쉬운 내보내기 및 가져오기 옵션을 제공하므로 백업과 복원이 용이하다.
📍 단점
- 관계를 맺고 있어 JOIN 문이 많은 복잡한 쿼리문이 생길 수 있다.
- JOIN이 많은 복잡한 쿼리문이 생성된 경우 수정이 매우 번거롭다.
- 수평적 확장이 어렵고 주로 수직적 확장만 가능해 데이터 처리량 성장에 한계가 있다.
- 가변성이 있는 데이터의 경우 저장이 쉽지 않다.
- 데이터베이스 모델링이 개발 전 완료되어야해 개발속도가 느려진다.
- 대용량의 데이터를 스키마에 맞추어 넣을 때 많은 시간이 소요된다.
비관계형 데이터베이스(Non-Relational Database)란?
비관계형 데이터베이스는 NoSQL이라고도 부르며, 행과 열로 이루어진 테이블 형식의 스키마를 사용하지 않는 데이터베이스로, 저장되는 데이터 형식의 특정 요구 사항에 맞게 최적화된 스토리지 모델을 사용한다.
NoSQL은 기존의 관계형 데이터베이스의 한계를 뛰어넘기 위해 만들어진 새로운 형태로 분산 환경에서의 데이터 처리를 더욱 빠르게 할 수 있다.
비관계형 데이터베이스의 예
높은 확장성과 가용성이 주요 장점인 NoSQL 데이터베이스는 실시간 웹 애플리케이션 및 빅 데이터에 널리 사용되며, 사용하는 프로그램으로 잘 알려진 예로는 MongoDB, CouchDB, Firebase의 실시간 데이터베이스와 Cloud Firestore 등이 있다.
비관계형 데이터베이스의 장단점
📍 장점
- 유연한 스키마를 제공하여 보다 빠르고 반복적인 개발이 가능하게 해주며, 유연한 데이터 모델은 NoSQL 데이터베이스를 반정형 및 비정형 데이터에 이상적으로 만들어 준다.
- 각 데이터 모델에 맞춰 특별히 구축된 뛰어난 기능의 API와 데이터 유형을 제공한다.
- 특정 데이터 모델 및 액세스 패턴에 최적화되어 있어 관계형 데이터베이스로 유사한 기능을 수행할 때보다 더 높은 성능을 얻을 수 있다.
- 대용량의 데이터를 처리하는 데 효율적이다.
- 수직, 수평적 확장이 모두 가능하다.
- 가변성 있는 데이터의 저장이 쉽다.
📍 단점
- 유연성으로 인해 구조 결정이 어려울 수 있다.
- 데이터가 중복될 수 있다.
- 릴레이션이 아니므로 고정된 스키마가 없고 조인이 어렵다.
- 쿼리 언어를 다르게 사용하는 경우가 많아 이식성이 낮다.
- 문서 저장에 단위 요소 수준에서 세밀한 보안을 제공하지 않는다.
- 데이터베이스의 컬렉션이 다양한 경우 수정 시 모든 컬렉션의 데이터를 수정해야 한다.
관계형 DB와 비관계형 DB
관계형 DB를 사용해야 하는 경우
- 데이터베이스의 ACID 성질을 준수해야 하는 경우
- 관계를 맺고 있는 데이터가 자주 수정되지 않는 경우
- 데이터가 구조적이고 일관적인 경우
비관계형 DB를 사용해야 하는 경우