NoSQL

ejoo·2024년 4월 24일

NoSQL(Not Only SQL)

기존의 RDBMS의 주요 특성을 보장하는 ACID(Atomic, Consistency, Integrity, Durability) 특성을 제공하지 않지만, 뛰어난 확장성이나 성능 등의 특성을 갖는 비관계형, 분산형 데이터베이스
스키마 없이 사용하거나, 느슨한 스키마를 제공하는 저장소이다.

NoSQL 유형

1. Key-value Stores: 데이터가 키-값 쌍의 배열로 저장된다.
키는 데이터 레코드의 식별자이며, 데이터는 해당 키에 매핑된다.
애플리케이션이 value 필드에 저장된 모든 데이터를 제약 없이 완벽하게 제어할 수 있다.

  • Redis, DynamoDB

2. Document Stores: 데이터가 문서 형태로 저장된다.
각 문서는 완전히 다른 구조를 가질 수 있다. 문서는 컬렉션으로 그룹화된다.
반구조적 데이터의 저장, 검색, 관리에 사용되며, 문서에 포함할 필드를 특정할 필요가 없다.

  • MongoDB, CouchDB

3. Graph-Based Databases: 데이터가 노드, 엣지 및 속성의 그래프 구조로 저장된다.
복잡한 연결성과 상호 작용을 모델링하는 데 적합하다. 완전한 데이터 표현을 지원한다.

  • Neo4j, OrientDB

4. Column-Family Stores: 데이터가 테이블, 행, 열 형식으로 저장된다.
각 컬럼 그룹은 독립적으로 검색될 수 있어 데이터베이스를 세분화하여 높은 확장성과 성능을 제공한다.

  • Cassandra, HBase

NoSQL 특징

  • 미리 정의된 스키마가 없어 데이터 구조가 자유롭다.
  • 대량의 데이터를 처리하기 위해 서버를 추가하여 데이터베이스를 확장할 수 있다.
  • 간단한 쿼리 구조로 읽기 및 쓰기 속도가 빠르다.
  • 하나의 데이터 저장소에서 구조적, 반구조적, 비구조적 데이터 등 모든 형식의 데이터를 손쉽게 처리할 수 있다.
  • 기존의 관계형 데이터베이스보다 더 융통성 있는 데이터 모델을 사용하고, 데이터의 저장, 검색에 특화된 메커니즘을 제공한다.

NoSQL 장점

1. 유연성: 엄격한 스키마 없이 훨씬 자유로운 형식으로 저장된다. 애플리케이션의 요구사항에 따라 데이터 모델을 쉽게 조정할 수 있다.
2. 확장성: 수평적 확장이 가능하여 서버를 추가함으로써 성능을 증가시킬 수 있다.
3. 대용량 데이터 처리: 분산 아키텍처를 통해 대규모 데이터셋을 효과적으로 처리할 수 있다.
4. 가용성: 여러 서버, 데이터 센터, 클라우드 리소스 전반의 데이터를 자동으로 복제하여, 사용자의 위치와 상관없이 대기 시간이 최소화된다.

NoSQL 단점

1. 표준화 부족: NoSQL DB 간에 표준화가 부족하여 다양한 시스템 간 호환성 문제가 발생할 수 있다.
2. 트랜잭션 관리: 대부분의 NoSQL DB는 ACID 속성을 완벽히 지원하지 않아 트랜잭션 처리가 어렵다.
3. 쿼리의 한계: 사용하는 쿼리 언어가 sql만큼 표현력이 좋지 않아 복잡한 쿼리를 작성하기 어려울 수 있다.

Redis

  • 데이터를 RAM에 저장하여 메모리에서 직접 데이터에 엑세스한다. 응답 지연 시간이 짧아지지만, 저장할 수 있는 데이터의 양도 제한된다.
  • Redis는 데이터 내구성을 제공하는 스냅샷 및 Append Only File 로깅을 통해 데이터 세트를 디스크에 저장한다.
  • Redis는 데이터를 키-값 페어로 저장하고, 각 데이터 항목에는 고유한 키가 있다. 정렬된 세트, 해시, 세트, 목록 및 문자열과 같은 다양한 데이터 유형을 지원한다.

MongoDB

  • 문서 데이터 모델을 따라 주로 외부 메모리 스토리지에 데이터를 저장한다. 데이터를 직렬화 바이너리(JSON, BSON) 문서로 저장한다. 최대 문서 크기는 16MB
  • 디스크 공간에 따라 기능을 강화할 수 있으므로 대규모 데이터 볼륨을 확장하는 데 유용하다.

참고
NoSQL이란 무엇인가?
Redis와 MongoDB의 차이점은 무엇인가요?

profile
안녕하세요

0개의 댓글