[Interview] NoSQL이란 무엇인가요?
NoSQL과 RDBMS
● NoSQL, Not Only SQL의 약자입니다. 관계형 데이터베이스(RDBMS)와는 다른 방식으로
데이터를 저장하고 관리하는 데이터베이스 아키텍처를 의미합니다.
● MySQL은 대표적인 RDBMS으로 정해진 스키마와 테이블 구조를 기반으로
데이터를 관리합니다. 반면에 NoSQL은 key-value, wide-column, 그래프 등 다양한
데이터 모델을 활용할 수 있습니다.
(Hash, JSON 등)
● 어느 것이 더 좋다는 것은 없고 목적성에 따라서 사용처가 달라집니다.
RDBMS는 데이터 안정성을 보장하고, NoSQL은 빠른 응답 속도와 처리량을 제공합니다.
NoSQL에 대해 더 자세히
● 높은 확장성과 빠른 응답 속도를 가집니다.
● 수평적 확장이 가능하고, 데이터 중복을 허용합니다.
● NoSQL은 데이터의 일관성을 보장하지는 않습니다. 데이터 중복에 대한 관리가 필요합니다.
데이터가 중복이 가능하기 때문에 최신 데이터를 유지하기 위한 추가 작업이 필요합니다.
● 대규모 데이터 처리와 빠른 응답 속도가 중요한 애플리케이션에 적합합니다.
예를 들어, 소셜 네트워크 서비스나 로그 데이터 저장에 사용될 수 있습니다.
또한 서버에서도 사용이 되는데 분산 서버에서 동시성 처리, 세션 관리로 사용하기에 적합합니다.
정리하자면
| 특징 | RDBMS(관계형DB) | NoSQL(비관계형 DB) |
| 스키마 | - 고정된 스키마와 미리 정의된 테이블 구조 사용 | - 유연한 스키마 사용으로 데이터 모델이 자유롭다 |
| 데이터 모델 | - 행과 열로 구성된 테이블 형태 | - 문서(Document), key-value, wide-column, 그래프 등 다양한 형태로 정의 가능 |
| 확장성 | - 수직적 확장(서버의 성능, 하드웨어 업그레이드)에 의존 | - 수평적 확장이 용이하며, 노드를 추가하여 쉽게 확장이 가능 |
| 쿼리 언어 | - SQL을 사용, 복잡한 JOIN과 트랙잭션 지원 | - 데이터 모델에 따라 특화된 쿼리 언어 사용 |
| 일관성 | - ACID 트랜잭션을 보장하여 강력한 데이터 일관성을 제공 | - Eventual Confistency(최종 일관성) 모델을 사용 - 가용성과 성능을 우선시함 |
즉, RDBMS는 데이터 무결성과 관계를 중요시하는 프로그램에 사용됩니다. 정형화된 데이터를 관리하는 데 적합하지만, 애플리케이션 요구사항이 자주 변화하거나 대용량의 비정형 데이터를 다룰 때에는 NoSQL DB를 사용하는 것이 성능과 속도 면에서는 이득을 볼 수 있습니다.