Key Value ( KV )
NoSQL에서 사용되는 가장 단순한 저장 형태로 각 키에 대응되는 값들은 임의의 길이를 갖는 바이너리 데이터로만 간주된다.
데이터 저장소는 각 값이 내부적으로 어떤 구조를 갖고 있는지에 대해서는 일절 관여하지 않는다.
그러므로 애플리케이션에서 JSON, ProtocolBuffer, Thrift, Avro같은 전용 포멧 등을 사용하여 테이터를 추가로 인코딩/디코딩 해야 한다.
- http://json.org/example.html
- https://github.com/google/protobuf ( https://code.google.com/p/protobuf )
- http://thrift.apache.org
- http://avro.apache.org
- Using Oracle Berkeley DB as a NoSQL Data Store
Key-data
각 값마다 특정 자료구조에 대응되는 타입을 지정할 수 있게 해 준다.
대표적으로 Redis의 경우 정수, 문자열, 리스트, 집합, 정렬된 집합같은 타입을 사용 할 수 있다.
get/set/delete 기능 외에 각 데이터 타입별 전용 기능들이 함께 제공된다. ( 숫자 : +, - )
Key-Document
각 키에 대응되는 값으로 JSON 같은 구조화된 문서를 사용한다.
이런 포멧에서는 재귀적로 구성된 리스트 및 딕션너리 등을 사용할 수 있다.
MongoDB는 키스페이스를 컬렉션으로 분할함으로써 키 충돌을 방지하지만, CouchDB, Riak는 개발자가 키를 관리해야 한다.
- http://redis.io/
- http://couchdb.apache.org/
- https://www.mongodb.com/
- http://basho.com/products/#riak ( KV모델도 소개가 되어있다. )
BigTable Column Family
HBase와 Cassandra는 구글의 BigTable의 데이터 모델을 기반으로 사용하고 있다.
이 모델은 각 키마다 Row가 하나씩 대응되고, 각 Row는 하나 이상의 컬럼 패밀리 ( Column Family, CF )들이 포함된다.
각 패밀리 내에서 다시 각 Row별로 다수의 컬럼에 대한 값들을 가질 수 있다.
Graph
그래프는 컴퓨터 공학의 근본적 자료구조 중 하나지만, 관계형 데이터 모델이나 키 위주의 데이터 모델로 표현하기 적합하지 않다.
HyperGraph, Neo4J는 그래프 데이터 저장에 특화된 대표적은 NoSQL시스템이다.
'db' 카테고리의 다른 글
Install Mongodb for windows scoop (0) | 2019.02.01 |
---|---|
Install Postgresql for windows scoop (0) | 2019.01.31 |
초보자를위한 SQL 인젝션 비디오 자습서 8 (0) | 2014.10.08 |
오라클 트리거 (0) | 2012.01.04 |
TOAD 단축키 (0) | 2011.04.14 |