기존의 RDBMS의 주요 특성을 보장하는 ACID(Atomic, Consistency, Integrity, Durability) 특성을 제공하지 않지만, 뛰어난 확장성이나 성능 등의 특성을 갖는 비관계형, 분산형 데이터베이스
스키마 없이 사용하거나, 느슨한 스키마를 제공하는 저장소이다.
1. Key-value Stores: 데이터가 키-값 쌍의 배열로 저장된다.
키는 데이터 레코드의 식별자이며, 데이터는 해당 키에 매핑된다.
애플리케이션이 value 필드에 저장된 모든 데이터를 제약 없이 완벽하게 제어할 수 있다.
2. Document Stores: 데이터가 문서 형태로 저장된다.
각 문서는 완전히 다른 구조를 가질 수 있다. 문서는 컬렉션으로 그룹화된다.
반구조적 데이터의 저장, 검색, 관리에 사용되며, 문서에 포함할 필드를 특정할 필요가 없다.
3. Graph-Based Databases: 데이터가 노드, 엣지 및 속성의 그래프 구조로 저장된다.
복잡한 연결성과 상호 작용을 모델링하는 데 적합하다. 완전한 데이터 표현을 지원한다.
4. Column-Family Stores: 데이터가 테이블, 행, 열 형식으로 저장된다.
각 컬럼 그룹은 독립적으로 검색될 수 있어 데이터베이스를 세분화하여 높은 확장성과 성능을 제공한다.
1. 유연성: 엄격한 스키마 없이 훨씬 자유로운 형식으로 저장된다. 애플리케이션의 요구사항에 따라 데이터 모델을 쉽게 조정할 수 있다.
2. 확장성: 수평적 확장이 가능하여 서버를 추가함으로써 성능을 증가시킬 수 있다.
3. 대용량 데이터 처리: 분산 아키텍처를 통해 대규모 데이터셋을 효과적으로 처리할 수 있다.
4. 가용성: 여러 서버, 데이터 센터, 클라우드 리소스 전반의 데이터를 자동으로 복제하여, 사용자의 위치와 상관없이 대기 시간이 최소화된다.
1. 표준화 부족: NoSQL DB 간에 표준화가 부족하여 다양한 시스템 간 호환성 문제가 발생할 수 있다.
2. 트랜잭션 관리: 대부분의 NoSQL DB는 ACID 속성을 완벽히 지원하지 않아 트랜잭션 처리가 어렵다.
3. 쿼리의 한계: 사용하는 쿼리 언어가 sql만큼 표현력이 좋지 않아 복잡한 쿼리를 작성하기 어려울 수 있다.

