유연한 데이터 모델을 갖춘 고성능 비관계형 데이터베이스
유연성과 확장성을 비롯해 고성능의 매우 기능적인 데이터베이스를 필요로 하는 모바일, 웹이나 게이밍과 같은 다양한 현대적인 애플리케이션에 적합
유연성: No SQL은 일반적으로 유연한 스키마를 제공하여 빠르고 반복적인 개발이 가능. 반정형 및 비정형 데이터에 이상적
확장성: NoSQL 데이터베이스는 일반적으로 고가의 강력한 서버를 추가하는 대신 분산형 하드웨어 클러스터를 이용해 확장하도록 설계됨. 일부 클라우드 제공자들은 완전관리형 서비스로서 이런 운영 작업을 보이지 않게 처리
고성능(High performance): NoSQL 데이터베이스는 특정 데이터 모델 및 액세스 패턴에 대해 최적화되어 관계형 DB를 통해 기능을 충족하려 할 때 보다 성능이 좋음
고기능성(High functional): NoSQL 데이터베이스는 각 데이터 모델에 맞춰 특별히 구축된 뛰어난 기능의 API와 데이터 유형을 제공
각 NoSQL DB 시스템마다 스키마가 없는 데이터를 관리하고 저장하는 몇몇 다른 방법들이 있음.
키 값 데이터베이스: 분할성이 커서 다른 유형의 데이터베이스로는 불가능한 범위까지 수평 확장이 가능. 게이밍, 광고 기술 및 IoT와 같은 사용 사례에서 키 값 데이터 모델이 특별히 적합
문서 데이터베이스: 애플리케이션 코드에서 데이터는 개발자에게 효율적이고 직관적인 데이터 모델인 객체 또는 JSON 유사 형식의 문서로 표시됨. 문서 데이터베이스를 사용하면 개발자들이 자신의 애플리케이션 코드에서 사용하는 것과 동일한 문서 모델 형식을 사용하여 데이터베이스에서 보다 손쉽게 데이터를 저장하고 쿼리할 수 있음. MongoDB는 유연하고 반복된 개발을 위해 강력하고 직관적인 API를 제공하는 널리 쓰이는 문서 데이터베이스
그래프 데이터베이스: 그래프 데이터베이스의 목적은 고도로 연결된 데이터세트를 사용하는 애플리케이션을 쉽게 구축하고 실행하는 것. 일반적인 사용 사례로는 소셜 네트워킹, 추천 엔진, 사기 감지 및 지식 그래프가 있음. 대중적인 그래프 데이터베이스에는 Neo4j와 Giraph가 있음
인메모리 데이터베이스: 다른 비관계형 DB들이 디스크나 SSD에 데이터를 저장하는 것과달리 인메모리 DB는 디스크에 접근할 필요가 없도록 디자인 됨. 마이크로 초 단위의 응답시간이나 트래픽이 순간적으로 급등할수 잇는 시스템들에 이상적. 게이밍과 광고 기술 애플리케이션에서 리더보드, 세션 스토어, 실시간 분석을 위해 사용할 수 있음
검색 데이터베이스: 검색엔진 데이터베이스는 데이터 내용을 검색하기 위한 비관계형 데이터베이스. 데이터중에서 비슷한 특징을 카테고리화 하고 검색하기 위해 인덱스를 사용함. 이미지나 영상같은 비정형 데이터를 정렬하는데 최적화 되어있음. 인덱싱하고, 집계하고, 반구조화된 로그나 행렬같은 데이터를 검색하여 거의 실시간 시각화 및 분석을 제공할 수 있음
흔히 "NoSQL"이란 용어는 "비관계형"과 같은 의미로 사용됨
| 관계형 데이터베이스 | NoSQL 데이터베이스 | |
|---|---|---|
| 최적의 워크로드 | 일관성이 뛰어난 온라인 트랜잭션 프로세싱(OLTP) 애플리케이션을 위해 설계되어 온라인 분석 프로세싱(OLAP)에 적합 | 낮은 지연 시간의 애플리케이션을 포함한 수많은 데이터 액세스 패턴에 맞도록 설계 됨. 반정형 데이터에서 분석을 위해 설계됨 |
| 데이터 모델 | 데이터를 행과 열로 구성된 테이블로 정규화. 스키마는 테이블, 행, 열, 인덱스, 테이블 간 관계, 기타 데이터베이스 요소를 정확하게 규정. 테이블 사이의 관계에서 참조 무결성을 실현 | NoSQL 데이터베이스는 키-값, 문서, 그래프 등 성능과 규모 확장에 최적화된 다양한 데이터 모델을 제공 |
| ACID 속성 | 관계형 데이터베이스는 원자가, 일관성, 격리성 및 지속성(ACID, atomicity, consistency, isolation, and durability)의 속성을 제공 | NoSQL 데이터베이스는 흔히 수평으로 확장할 수 있는 보다 유연한 데이터 모델을 위해 관계형 데이터베이스의 일부 ACID 속성을 완화함으로써 조정. 이로써 NoSQL 데이터베이스는 단일 인스턴스의 한계를 넘어 수평으로 확장해야 하는 사용 사례에서 높은 처리량, 낮은 지연 시간을 보여줄 수 있음. |
| 성능 | 성능은 일반적으로 디스크 하위 시스템에 따라 다름. 최고 성능을 달성하기 위해서 쿼리, 인덱스 및 테이블 구조를 자주 최적화해야 함 | 성능은 일반적으로 기본 하드웨어 클러스터 크기, 네트워크 지연 시간 및 호출 애플리케이션의 기능 |
| 확장 | 관계형 데이터베이스는 일반적으로 하드웨어의 계산 성능을 높이거나 읽기 전용 워크로드의 복제물을 추가함으로써 확장 | NoSQL 데이터베이스는 일반적으로 거의 무제한적인 범위에서 일관된 성능을 제공하는 처리량 제고를 위해 분산형 아키텍처를 사용해 액세스 패턴이 확장 가능하기 때문에 분할성 있음 |
| API | 데이터를 저장 및 검색하기 위한 요청이 SQL 쿼리를 사용하여 전달됨. 쿼리는 관계형 데이터베이스에 의해 구문 분석되고 실행됩니다. | 객체 기반 API를 통해 앱 개발자가 데이터 구조를 쉽게 저장 및 검색할 수 있음. 파티션 키를 사용하면 앱에서 키-값 페어, 열 세트 또는 일련의 앱 객체 및 속성을 포함하는 반정형 문서를 검색 가능 |

참고: