Not Only SQL 혹은 Non-Relational Operational DataBase의 약자로 비관계형 데이터베이스를 지칭한다.
NoSQL 데이터베이스는 전통적인 관계형 데이터베이스 관리 시스템(RDBMS)과는 달리,
데이터 저장 및 검색에 대해 보다 유연하고 확장 가능한 접근 방식을 제공합니다.
NoSQL 데이터베이스는 다양한 데이터 모델을 지원하며, 일반적으로 스키마가 고정되지 않고 동적입니다.
주로 빅데이터, 분산 시스템 환경에서 대용량의 데이터를 처리하는데 적합하다.
1. RDBMS와 달리 데이터 간의 관계를 정의하지 않는다.
RDBMS는 데이터 관계를 외래키 등으로 정의하고 JOIN 연산을 수행할 수 있지만, NoSQL은 JOIN 연산이 불가능하다.
2. RDBMS에 비해 대용량의 데이터를 저장할 수 있다.
페타바이트 급의 대용량 데이터를 저장할 수 있다.
3. 분산형 구조이다.
여러 곳의 서버에 데이터를 분산 저장해 특정 서버에 장애가 발생했을 때도 데이터 유실 혹은 서비스 중지가 발생하지 않도록 한다.
4. 고정되지 않은 테이블 스키마를 갖는다.
RDBMS와 달리 테이블의 스키마가 유동적이다.
데이터를 저장하는 칼럼이 각기 다른 이름과 다른 데이터 타입을 갖는 것이 허용된다.
1. 유연한 스키마 (Flexible Schema):
NoSQL 데이터베이스는 사전 정의된 스키마가 없으며, 데이터 구조를 쉽게 변경할 수 있습니다.
이는 데이터가 자주 변경되거나 확장되는 환경에서 유용합니다.
2. 수평적 확장성 (Horizontal Scalability):
NoSQL 시스템은 데이터를 여러 서버에 분산 저장하여 확장할 수 있습니다.
이는 대규모 데이터와 트래픽을 효율적으로 처리할 수 있도록 합니다
3. 고성능 (High Performance):
NoSQL 데이터베이스는 특정 작업에 최적화되어 있어 대규모 데이터 처리와 빠른 읽기/쓰기 성능을 제공합니다.
예를 들어, 캐싱, 실시간 분석 등에 유리합니다.
4.다양한 데이터 모델 (Variety of Data Models):
문서 지향, 키-값, 그래프, 열 지향 등 다양한 데이터 모델을 지원하여, 다양한 데이터 요구 사항에 맞출 수 있습니다.
5.데이터 중복 저장 (Data Redundancy):
NoSQL 데이터베이스는 데이터를 중복 저장하여 고가용성과 데이터 복원력을 제공합니다.
이는 시스템의 장애를 최소화하는 데 도움이 됩니다.
1. 일관성 부족 (Lack of Consistency):
많은 NoSQL 시스템은 ACID 특성 대신 CAP 이론을 따르기 때문에,
일관성보다는 가용성이나 파티션 허용성을 우선할 수 있습니다.
이는 데이터 일관성이 중요한 애플리케이션에는 적합하지 않을 수 있습니다.
2. 복잡한 쿼리 (Complex Queries):
NoSQL 데이터베이스는 전통적인 SQL의 복잡한 쿼리와 조인(join) 연산을 지원하지 않거나 제한적으로 지원합니다.
따라서 복잡한 데이터 분석이나 트랜잭션 관리에는 어려움이 있을 수 있습니다.
3. 제한된 커뮤니티 지원 (Limited Community Support):
NoSQL 기술은 상대적으로 신기술이기 때문에 SQL에 비해 커뮤니티와 지원 자료가 부족할 수 있습니다.
이는 문제 해결이나 학습에 어려움을 줄 수 있습니다.
4. 표준화 부족 (Lack of Standardization):
각 NoSQL 데이터베이스는 고유한 쿼리 언어와 관리 도구를 사용하기 때문에,
새로운 NoSQL 시스템을 배우고 사용하는 데 시간이 걸릴 수 있습니다.
5. 데이터 중복 (Data Duplication):
NoSQL 데이터베이스는 데이터 중복 저장을 통해 성능을 향상시키지만,
이는 저장 공간을 더 많이 차지하고 데이터 관리가 복잡해질 수 있습니다.