NoSQL의 정의
NoSQL 이라는 용어는 비관계형 데이터베이스 유형을 가리키며, 이 데이터베이스는 관계형 테이블과는 다른 형식으로 데이터를 저장합니다. 그러나 NoSQL 데이터베이스는 언어마다 관습화된 API, 선언적 구조의 쿼리 언어, 쿼리별 언어를 사용하여 데이터 관리를 할 수 있습니다. 이것이 바로 해당 데이터베이스가 not only SQL 데이터베이스라고 불리는 이유입니다.
NoSQL 데이터베이스 사용처
높은 확장성과 가용성이 주요 장점인 NoSQL 데이터베이스는 실시간 통신 및 빅 데이터에 주로 사용됩니다.
이해 관계자로부터 요청되는, 다양하고 시시각각으로 변하는 요구 사항에 빠르게 적응함으로써 민첩한 개발 패러다임에 자연스럽게 활용되는 이점 때문에 DX 적으로 좋은 경험을 가지고 있습니다. NoSQL 데이터베이스를 사용하면 데이터는 보다 직관적이고 이해하기 쉬운 방식 혹은 애플리케이션이 사용하는 것에 가까운 방식으로 저장됩니다. NoSQL 스타일의 API를 사용하면 저장 또는 검색 시 데이터 변환의 필요성이 줄어듭니다. 또한 NoSQL 데이터베이스는 다운타임이 없는 클라우드의 이점을 완전히 누릴 수 있습니다.
NoSQL 데이터베이스 이점
- 유연성: SQL 데이터베이스를 사용하면 데이터는 훨씬 더 엄격한 사전 정의된 구조 안에 저장됩니다. 하지만 NoSQL을 사용하면 데이터는 엄격한 스키마 없이도 훨씬 더 자유로운 형식으로 저장될 수 있습니다. 이와 같은 설계 덕분에 혁신과 빠른 애플리케이션 개발이 가능해집니다. 개발자들 역시 스키마 걱정 없이 고객들에게 더 나은 서비스를 제공하기 위한 시스템 개발에만 몰두할 수 있습니다. NoSQL 데이터베이스는 하나의 데이터 저장소에서 구조적, 반구조적, 비구조적 데이터 등 모든 형식의 데이터를 손쉽게 처리할 수 있습니다.
- 확장성: NoSQL 데이터베이스는 서버를 증설해 확장하는 대신 상업용 하드웨어를 사용해 확장할 수 있습니다. 덕분에 증가한 트래픽을 지원하고 다운타임 없이 수요를 충족시킬 수 있습니다. NoSQL 데이터베이스는 확장을 통해 더 큰 용량과 성능을 갖출 수 있습니다. 이와 같은 이유로 데이터 세트 확장을 위한 옵션으로서 NoSQL 데이터베이스에 대한 선호도가 높습니다.
- 고성능: NoSQL 데이터베이스의 확장 아키텍처는 데이터 양이나 트래픽이 증가할 때 그 진가를 발휘합니다. 또한 NoSQL 데이터베이스는 데이터를 수집하여 이를 빠르고 안정적으로 제공합니다. NoSQL 데이터베이스가 매일 테라바이트 규모의 데이터를 수집하는 동시에 고도의 대화식 사용자 경험을 제공하는 애플리케이션에 활용되는 이유가 바로 이것입니다.
NoSQL 데이터베이스를 선택해야 하는 경우
빠른 혁신이 필요한 기업 및 조직에게 있어, 민첩성을 유지하면서 동시에 모든 규모의 운영을 지속할 수 있는 능력이 게임의 승패를 좌우합니다. NoSQL 데이터베이스는 유연한 스키마를 제공하고, 대량의 데이터 및 낮은 대기시간 또는 응답시간을 요구하는 애플리케이션 구축에 이상적인 다양한 데이터 모델을 지원합니다. 온라인 게이밍 및 전자상거래 웹 애플리케이션이 여기에 해당됩니다.
NoSQL 데이터베이스를 선택해서는 안 되는 경우
NoSQL 데이터베이스는 일반적으로 비정규화된 데이터에 의존하며, 상대적으로 적은 수의 데이터 혹은 컨테이너를 사용하는 애플리케이션 유형을 지원합니다. 또한 참조를 사용해 데이터 관계를 모델링하지 않고, 포함된 기록 혹은 문서로 모델링하는 애플리케이션을 지원합니다. 대다수의 금융, 회계, 기업 리소스 계획을 위한 고전적인 Back-office 비즈니스 애플리케이션은 데이터 변형 및 데이터 중복을 방지하기 위해 고도로 정규화된 데이터에 의존합니다. 이와 같은 애플리케이션은 NoSQL 데이터베이스에 어울리지 않는 유형이라 할 수 있습니다.
NoSQl 데이터베이스의 또 다른 특징은 쿼리 복잡성입니다. NoSQL 데이터베이스는 단일 테이블에 대한 쿼리 작업에서는 아주 잘 작동합니다. 그러나 쿼리의 복잡성이 높아지는 경우, 관계형 데이터베이스가 더 나은 선택이 될 수 있습니다. NoSQL 데이터베이스는 보통 복잡한 조인, 하위 쿼리 및 Where 절에서의 중첩 Select를 제공하지 않습니다.
하지만 꼭 관계형 혹은 비관계형 데이터베이스 중 하나를 선택해야 하는 것은 아닙니다. 많은 기업들은 관계형 및 비관계형 데이터 모델을 결합해 적용할 수 있는 컨버지드 모델을 제공하는 데이터베이스를 선택합니다. 이 하이브리드 접근 방식은 다양한 데이터 유형을 처리할 수 있는 유연성을 제공하는 동시에 성능 저하 없이 일관적인 읽기 및 쓰기를 보장합니다.
NoSQL 데이터베이스의 차별점
NoSQL 데이터베이스와 다른 유형의 데이터베이스 간의 주요 차이는 NoSQL 데이터베이스의 경우 보통 구조화되지 않은 스토리지를 사용한다는 점입니다. 지난 20년 동안 개발된 NoSQL 데이터베이스는 빠르고 단순한 쿼리, 방대한 데이터, 잦은 애플리케이션 변화를 지원하기 위해 설계되었습니다. 또한 이 데이터베이스는 개발자들의 프로그래밍을 크게 단순화해 주었습니다.
또 한 가지 중요한 차이점은 NoSQL 데이터베이스가 '샤딩'이라는 프로세스를 거쳐 수평 확장을 한다는 점입니다. 여러 서버에 걸친 데이터 처리를 위해 더 많은 머신을 추가할 수 있다는 뜻입니다. 다른 SQL 데이터베이스에서 찾을 수 있는 수직 확장성을 지원하기 위해서는 기존 머신에 더 많은 파워와 메모리를 추가해야 합니다. 계속해서 더 많은 스토리지가 필요하기 때문에 지속불가능하다는 특징이 있습니다.
이러한 수평 확장성 덕분에 NoSQL 데이터베이스는 엄청나게 많은 양의 데이터를, 심지어 데이터가 계속해서 증가하는 동안에도 더욱 효율적으로 처리할 수 있습니다. 수직 확장은 집 안에 새로운 계단을 추가하는 것으로, 수평 확장은 기존 건물 옆에 새로운 건물을 추가로 세우는 것으로 생각하면 이 개념을 쉽게 이해할 수 있습니다.
샤딩은 큰 데이터 세트를 샤드라고 하는 더 작고 관리하기 쉬운 조각으로 분할하는 데이터베이스 아키텍처 패턴입니다. 각 샤드는 데이터의 하위 집합을 포함하는 독립적인 데이터베이스이며, 모든 샤드는 완전한 데이터 세트를 형성합니다.
'Database' 카테고리의 다른 글
[Database] PostgreSQL Commands - DML (0) | 2024.07.17 |
---|---|
[Database] PostgreSQL Commands - DDL (8) | 2024.07.15 |
[Database] RDBMS - PostgreSQL (0) | 2024.07.10 |
[Database] RDB (0) | 2024.07.04 |
[Database] 데이터베이스의 기초 (0) | 2024.07.02 |