본문 바로가기
TIL/기술면접 대비

NoSQL과 RDBMS의 특징과 차이점(장, 단점)에 대해서

by J1-H00N 2023. 8. 16.

NoSQL

Not only SQL의 약자이며, 비관계형 데이터베이스 유형을 가리킨다.

관계형 데이터베이스와는 다른 방식으로 데이터를 저장하며, 언어마다 관습화된 API, 선언적 구조의 쿼리 언어, 쿼리별 언어를 사용하여 질의할 수 있다.

변화하는 요구사항에 빠르게 적응하고 개발 패러다임에 자연스럽게 활용되는 이점 때문에 실시간 웹 애플리케이션 및 빅 데이터에 널리 사용된다고 한다.

데이터가 보다 직관적이고 쉬운 방식 또는 애플리케이션이 사용하는 방식에 가깝게 저장된다. 따라서 저장 또는 검색시 데이터 변환의 필요성이 줄어든다.

또한 다운타임이 없는 클라우드의 이점을 온전히 누릴 수 있다.

사전에 스키마를 정의하지 않아도 데이터를 저장할 수 있다. 즉, 작업을 진행하는 동시에 데이터를 정의하는 방식으로 빠르게 데이터를 작성하고 반복할 수 있는 능력을 얻게된다. 따라서 그래프 기반, 열 지향, 문서 지향 또는 키-값 저장소 등 특정 비즈니스 요구 사항 수행에 적합하다.

데이터의 종류, 양, 속도를 기존의 관계형 데이터베이스가 감당하지 못해 NoSQL이 도입되었고, 덕분에 높은 트래픽을 처리하고 또한 높은 적응력을 자랑한다.

빠른 혁신이 필요한 기업 및 조직에게 있어, 민첩성을 유지하면서 동시에 모든 규모의 운영을 지속할 수 있는 능력이 필요했고,  NoSQL 데이터베이스는 유연한 스키마를 제공하고, 대량의 데이터 및 낮은 대기시간 또는 응답시간을 요구하는 애플리케이션 구축에 이상적인 다양한 데이터 모델을 지원한다. 온라인 게이밍 및 전자상거래 웹 애플리케이션이 여기에 해당된다.

NoSQL은 비정규화된 데이터에 의존하며 비교적 적은 데이터를 사용하는 유형, 참조를 사용해 데이터 관계를 모델링하지 않고, 포함된 기록(또는 문서)으로 모델링하는 유형에 적합하다. 

단일 테이블에 대한 쿼리 작업이 매우 잘 작동하므로, 쿼리 복잡성이 높은 작업에는 어울리지 않다.

 NoSQL 데이터베이스는 보통 복잡한 조인, 하위 쿼리 및 WHERE 절에서의 중첩 질의를 제공하지 않는다.

결국 NoSQL의 가장 큰 특징은 구조화되지 않은 스토리지를 사용한다는 점이다. 빠르고 단순한 쿼리, 방대한 데이터, 잦은 애플리케이션 변화를 지원하기 위해 설계되었다.

또한 '샤딩'이라는 프로세스를 거쳐 수평 확장을 한다 = 여러 서버에 걸친 데이터 처리를 위해 더 많은 머신을 추가할 수 있다

수직 확장은 집 안에 새로운 계단을 추가하는 것으로, 수평 확장은 기존 건물 옆에 새로운 건물을 추가로 세우는 것으로 생각하면 이 개념을 쉽게 이해할 수 있다.

개발자들이 NoSQL을 선택하는 가장 큰 이유 5가지 유연성, 확장성, 고성능, 가용성, 기능성.

유연성 -  NoSQL 데이터베이스는 하나의 데이터 저장소에서 구조적, 반구조적, 비구조적 데이터 등 모든 형식의 데이터를 손쉽게 처리할 수 있다.

확장성 - 서버를 증설해 확장하는 대신 상업용 하드웨어를 사용해 확장할 수 있다.

고성능 - 수형 확장성 덕분에 데이터 양이 증가하거나 트래픽이 높아질수록 그 진가를 발휘한다.

가용성 - 여러 서버, 데이터 센터, 클라우드 리소스 전반의 데이터를 자동으로 복제해 사용자의 위치와 상관없이 사용자 대기시간이 최소화된다. 이 기능은 데이터베이스 관리 부담을 줄이는 데에도 효과적

기능성 - 데이터 저장 수요가 엄청나게 큰 분산형 데이터 저장소를 위해 설계되었기에 빅 데이터, 실시간 웹 앱 등을 처리하기에 이상적이다.

 

 

 

RDBMS

SQL의 기반으로, 이를 통해 사용자는 고도로 구조화된 테이블에서 데이터에 접근하고 조작할 수 있다.테이블은 관계형 데이터 항목 모음이고, 열과 행으로 이루어져있다.사전에 모든 열과 관련된 데이터의 유형이 파악되어야 애플리케이션이 데이터를 데이터베이스에 작성할 수 있다.키를 통해 테이블을 연결하는 방식(외래키)으로 정보를 저장한다. 즉, 키는 특정 행을 검색하는데 사용되며, 검사 또는 수정될 수 있다.대다수의 금융, 회계, 기업 리소스 계획을 위한 고전적인 백오피스 비즈니스 애플리케이션은 데이터 변형 및 데이터 중복을 방지하기 위해 고도로 정규화된 데이터에 의존하기 때문에 이러한 유형의 애플리케이션은 SQL에 적합하다.

관계형 데이터베이스는 데이터 간의 매우 복잡한 관계를 보여주는 데에도 탁월하기 때문에 데이터가 데이터베이스의 사전 정의된 관계형 스키마를 준수하는 한 더 많은 테이블의 데이터를 참조할 수 있다.

관계형 데이터베이스의 이점은 직관적인 데이터 표현 방법은 제공하고 관련 데이터 포인트에 쉽게 접근할 수 있다는 점이다. 따라서 인벤토리 추적부터 트랜잭션 데이터 처리 및 애플리케이션 로깅까지 대량의 구조화된 데이터를 관리할 때 많이 이용된다.

관계형 데이터베이스의 특징

유연성 - 데이터베이스 구조를 변화하거나 기존 애플리케이션에 영향을 주지 않고 필요할 때마다 테이블/관계를 생성, 삭제하고 데이터를 변경할 수 있다.

ACID 규정 준수 - 오작동에 관계없이 데이터 유효성을 검사할 수 있다.

사용 편의성 - 누구라도 SQL을 사용하여 복잡한 쿼리를 쉽게 실행시킬 수 있다.

공동 작업 - 여러 사용자가 동시에 데이터에 접근하고 운영할 수 있다.

내장된 보안 기능 - 역할 기반 보안을 통해 데이터 엑세스가 특정 사용자로 제한된다.

데이터베이스 정규화 - 데이터 중복성을 줄이고 데이터 무결성을 개선하는 설계 기법 사용

 

정리 

RDBMS는 데이터베이스 정규화를 위해 고도로 정규화된 데이터에 의존하기 때문에 금융, 회계, 백오피스 비즈니스 애플리케이션에 유리하다. 하지만 데이터의 타입이 다양해지고 양이 많아질수록 속도를 감당하기 힘들어진다. NoSQL은 구조화되지 않은 스토리지를 사용하며 '샤딩'을 통해 수평확장을 하기 때문에 데이터를 더 유연하게 처리하고 성능적으로도 탁월하다. 다만 구조화되지 않은 스토리지를 사용한다는 점 때문에 복잡한 쿼리를 사용하는 작업에는 적합하지 않다. 그래서 보통 둘을 결합해 데이터 처리 유연성이 높으며 성능 저하 없이 일관적인 읽기 및 쓰기 성능을 제공하는 컨버지드 모델의 데이터베이스를 사용한다고 한다.

'TIL > 기술면접 대비' 카테고리의 다른 글

CORS(Cross Origin Resource Sharing)  (0) 2023.08.22
HTTP 메서드  (0) 2023.08.21
Primary Key, Foreign Key  (0) 2023.08.20
RDBMS의 정규화  (0) 2023.08.18
mvc 패턴  (0) 2023.08.17