정의
전통적인 관계형 데이터베이스보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 메커님즘을 의미. 단순 검색 및 추가 작업을 위한 매우 최적화된 키 값 저장 공간을 활용하며, 레이턴시와 스루풋과 관련하여 성능 이익을 내는 것이 목적이다.
단점
일관성과 타협한다는 점. 저급의 쿼리 언어의 사용, 표준화된 인터페이스의 부족, 기존 관계형DB의 상당한 개선. 진정한 ACID 트랜잭션이 결여되어 있으나, 일부 DB들은 이를 염두에 두고 설계하기도 하였다.
역사
카를로 스트로찌 (Caril Strozzi)는 1988년 표준 SQL 인터페이스를 채용하지 않은 자신의 경량 오픈소스 관계형 DB를 NoSQL이라고 명명했다. 스트로찌는 현재의 NoSQL 운동이 “전반적인 관계형 모델에서 점차 멀어지고 있으므로” NoREL로 부르는 것이 더 적절하다고 언급했다.
2009년 초에 라스트 FM의 요한 오스칼손(Johan Oskarsson)이 오픈 소스 분산DB를 논하기 위한 미트업 행사를 조직하면서, 이와 같은 데이터베이스를 NoSQL이라고 불렀다. 고전적인 관계형 데이터베이스 시스템의 주요 특성을 보장하는 ACID 제공을 주로 시도하지 않은 수많은 비관계형, 분산 데이터 자료 공간의 등장에 따라 이 이름이 사용되었다.
예시
카를로 스트로찌 (Caril Strozzi)는 1988년 표준 SQL 인터페이스를 채용하지 않은 자신의 경량 오픈소스 관계형 DB를 NoSQL이라고 명명했다. 스트로찌는 현재의 NoSQL 운동이 “전반적인 관계형 모델에서 점차 멀어지고 있으므로” NoREL로 부르는 것이 더 적절하다고 언급했다.
2009년 초에 라스트 FM의 요한 오스칼손(Johan Oskarsson)이 오픈 소스 분산DB를 논하기 위한 미트업 행사를 조직하면서, 이와 같은 데이터베이스를 NoSQL이라고 불렀다. 고전적인 관계형 데이터베이스 시스템의 주요 특성을 보장하는 ACID 제공을 주로 시도하지 않은 수많은 비관계형, 분산 데이터 자료 공간의 등장에 따라 이 이름이 사용되었다.
- 와이드 컬럼 스토어 : H베이스, 아큐물로, 카산드라
- 도큐먼트: 몽고DB, 카우치베이스
- 키 값 : 다이나모DB 리악, 레디스, 캐시, 프로젝트 볼드모트
- 그래프 : Neo4j, AgensGraph, 알레그로그래프, 버투요소
스티븐 옌은 자신의 블로그의 글 "NoSQL is a Horseless Carriage"에서 NoSQL 데이터베이스들을 다음과 같이 분류했다.
용어연관 데이터베이스
KV Store | Keyspace, Flare, SchemaFree, RAMCloud, Oracle NoSQL Database (OnDB) |
KV Store - Eventually consistent | Dynamo, voldemort, Dynomite, SubRecord, Mo8onDb, DovetailDB |
KV Store - Hierarchical | GT.m, Cache |
KV Store - Ordered | TokyoTyrant, Lightcloud, NMDB, Luxio, MemcacheDB, Actord |
KV Cache | MemCached, Repcached, Coherence, Hazelcast, Infinispan, EXtremeScale, JBossCache, Velocity, Terracotta |
Tuple Store | Gigaspaces, Coord, Apache River |
Object Database | ZopeDB, DB40, Shoal |
Document Store | CouchDB, Cloudant, COuchBase, MongoDB, Jackrabbit, XML-Databases, ThruDB, CloudKit, Prsevere, Riak-Basho, Scalaris |
Wide Columnar Store | BigTable, HBase,Apache Cassandra, HypherTable, KAI, OpenNeptune, Qbase, KDI |
성능
벤 스코필드는 여러 유형의 NoSQL 데이터베이스의 등급을 다음과 같이 평가했다.
데이터 모델 | 성능 | 확장성 | 유연성 | 복잡성 | 기능 |
키-값 스토어 | 높음 | 높음 | 높음 | 없음 | 가변적 (없음) |
컬럼 지향 스토어 | 높음 | 높음 | 준수 | 낮음 | 최소 |
도큐먼트 지향 스토어 | 높음 | 가변적 (높음) | 높음 | 낮음 | 가변적 (낮음) |
그래프 데이터베이스 | 가변적 | 가변적 | 높음 | 높음 | 그래프 이론 |
관계형 데이터베이스 | 가변적 | 가변적 | 낮음 | 준수 | 관계대수 |
성능
데이터 모델 | 성능 | 확장성 | 유연성 | 복잡성 | 기능 |
키-값 스토어 | 높음 | 높음 | 높음 | 없음 | 가변적 (없음) |
컬럼 지향 스토어 | 높음 | 높음 | 준수 | 낮음 | 최소 |
도큐먼트 지향 스토어 | 높음 | 가변적 (높음) | 높음 | 낮음 | 가변적 (낮음) |
그래프 데이터베이스 | 가변적 | 가변적 | 높음 | 높음 | 그래프 이론 |
관계형 데이터베이스 | 가변적 | 가변적 | 낮음 | 준수 | 관계대수 |
참조
https://ko.wikipedia.org/wiki/NoSQL
NoSQL - 위키백과, 우리 모두의 백과사전
위키백과, 우리 모두의 백과사전. NoSQL(원래 의미: non SQL 또는 non relational)[1] 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을
ko.wikipedia.org
'백엔드 > NoSQL DB' 카테고리의 다른 글
DynamoDB 개요 (0) | 2022.10.07 |
---|