-(Key-Value) 스토어(Store) NoSQL 데이터베이스 중 가장 간단한 것입니다이름에서 알 수 있듯이, K-V 스토어는 키와 값을 한 쌍으로 저장하며더 이상의 기능이 없고 단지 키 기반으로 값을 저장할 수 있습니다많이 알려진 프로그래밍 언어의 맵(Map) 또는 해시 테이블(Hash Table)과 동일한 방법을 사용합니다.

 

 

해시 테이블(Hash Table)

컴퓨터에서 사용되는 해시 테이블이란 자료를 저장하는 한 형태이며대용량의 자료를 관리할 수 있으며찾고자 하는 검색키(Key)가 들어오면 주소계산을 통하여 발생한  인덱스(Index)를 기초하여 값(Value)를 찾아냅니다

 

해시 테이블을 이용한 주소 계산 ]

 

해시 충돌(Hash Collision)

해시충돌이란 전산학에서 해시 함수가 서로 다른 두개의 입력값에 대해 동일한 출력값을 내는 상황을 의미합니다모든 해시 함수는 아무리 잘 설계가 되어도 잠재적인 충돌 가능성을 안고 있습니다.

 

일부 K-V 스토어 구현 시스템에서는 해시나 리스트와 같은 복잡한 값의 데이터 타입을 허용하지만 꼭 필요한 것은 아닙니다그리고 저장된 키들을 순환 처리하는 방법을 제공하지만 이것 역시 보너스로 생각하면 됩니다만일 파일의 경로는 키로파일의 내용은 값으로 생각한다면 파일 시스템을 키-값 스토어라고 할 수 있을 것입니다.

 

K-V 스토어는 자체적으로 필요로 하는 것(자원 등)이 거의 없어서 이런 유형의 데이터베이스는 많은 경우에는 놀랄 만한 성능을 보여줄 수 있습니다그러나 복잡한 쿼리(Query)나 집합 연산이 필요할 때는 그리 도움이 안 될 것입니다.

 

 

Key-Value Store 디자인

-값 저장소에서는 데이터의 각 조각들은 키-값 쌍으로 구성되어키를 사용하여 데이터베이스에 값을 저장합니다. NoSQL 데이터베이스에서는 키-값 저장소가 분산 서버에 분할되어 저장될 가능성이 높습니다.

 

애플리케이션이 데이터를 검색할 때키를 키-값 저장소에 제공합니다-값 저장소는 키를 해시하여 저장된 위치에서 값을 가져옵니다.

 


분산 서버에서 데이터 검색 ]

 

 

해싱 함수(Hashing Function)의 효율성(Efficiency)과 일관성(Consistency) 관리

해시를 사용하여 키-값 저장소에서 분산 서버에 데이터를 저장하고 검색하기 위해서는 해쉬 함수에서 키를 기반으로 값의 위치를 계산하는 로직의 성능이 중요합니다만약 두 키가 동일하여 같은 위치의 값을 접근하게 되면 충돌이 발생합니다-값 저장소는 이러한 충돌를 감지하고 이를 해결하기 위해서 준비를 해야 합니다.

 

 

삽입에 대한 충돌 감지 및 처리

-값 데이터베이스는 새로운 위치를 결정하기 위하여 보조 해시(Secondary hash)를 사용하거나 선형 검색을 수행합니다어느 경우에도 추가 작업은 데이터베이스의 반응성(Responsiveness)을 감소시킬 수 있습니다다음의 그림은 키-값 저장소에서 새 항목을 추가할 때 충돌을 감지하고 처리하는 과정을 보여줍니다충돌을 검출하는 방법은 파티션에서 다음 이용 가능한 슬롯에 값을 저장하는 것입니다.

 

삽입에 대한 충돌 감지 및 처리 ]

 

 

검색할 때 충돌을 감지하고 데이터 처리

애플리케이션이 데이터를 검색할 때 키-값 저장소는 충돌 이전에 일어난 경우에 적용하기 전에 재 해시 함수를 이용하여 계산된 위치에 유지키를 검사합니다키가 정확하지 않을 경우-값 저장소는 데이터를 삽입할 때 처럼 동일한 전략을 이용하여 데이터의 위치를 조사합니다다음의 그림은 그 과정을 보여줍니다.

 

검색할 때 충돌을 감지하고 데이터 처리 ]

 

 

아래의 그래프는 2013년 기준으로 가장 인기 있는 키-밸류 스토어 제품의 순위를 나타내고 있습니다. Redis, Memcached, Riak, DynamoDB 순으로 사람들에게 사랑을 받고 있습니다.





'빅데이터 > No SQL' 카테고리의 다른 글

레디스(Redis, Remote Dictionary Server)  (0) 2017.08.03
와이드 컬럼 스토어(Wide column store)  (0) 2017.08.03
문서 저장소(Document Store)  (0) 2017.08.03
그래프(Graph) 데이터베이스  (0) 2017.08.03
NoSQL 개요  (0) 2017.08.03

+ Recent posts