키-값 데이터베이스
키-값 데이터베이스(key–value database, 키-밸류 데이터베이스) 또는 키-값 스토어(키-밸류 스토어)는 오늘날 딕셔너리(dictionary), 해시(hash)로 잘 알려져 있는 자료 구조인 연관 배열의 저장, 검색, 관리를 위해 설계된 데이터 스토리지 패러다임이다.
딕셔너리에는 객체나 레코드의 컬렉션이 포함되어 있으며 이 안에서 각기 다른 수많은 필드가 그 안에 포함되어 있고 각각 데이터를 담고 있다.
이 레코드들은 레코드를 고유하게 식별하는 "키"를 사용하여 저장되고 검색되며 데이터베이스 안에서 데이터를 빠르게 찾는데 사용된다.
키-값 쌍으로 표현되는 키-값 데이터베이스는 더 잘 알려져 있는 관계형 데이터베이스(RDB)와는 방식이 매우 다르다.
RDB는 데이터베이스에 자료 구조를 자료형이 잘 정의된 필드를 포함하는 일련의 테이블로 미리 정의한다. 자료형은 데이터베이스 프로그램에 노출시킴으로써 수많은 최적화를 허용한다. 반면 키-값 시스템은 데이터를 하나의 불투명한 컬렉션으로 처리하며 각 레코드마다 각기 다른 필드를 가질 수 있다. 이는 객체 지향 프로그래밍과 같은 현대의 개념을 더 밀접하게 따르며 상당한 유연성을 제공한다. 선택적인 값들이 대부분의 DB에서 처럼 플레이스홀더(placeholder)로 표현되지 않기 때문에 키-값 데이터베이스는 동일한 데이터베이스 저장을 위해 메모리를 훨씬 덜 사용하기도 하므로 특정한 부하에서 큰 성능 상의 이점이 있을 수 있다.
성능, 표준화의 부재, 기타 문제들로 인해 키-값 시스템들이 수년 간 틈새로 국한되었으나 2010년 이후 클라우드 컴퓨팅으로의 조속한 움직임은 더 큰 NoSQL 운동의 일부로서 르네상스로 이어졌다. 일부 그래프 데이터베이스 또한 내부적으로 키-값 데이터베이스를 사용하여 최초 클래스 자료형으로서 레코드 간 관계(포인터)의 개념을 추가한다.
키-값 쌍 사용예
[편집]
데이타베이스 테이블 |
|
제이슨(JSON) stringify |
{"k1":"AAA,BBB,CCC","k2":"AAA,BBB","k3":"AAA,DDD","k4":"AAA,2,01/01/2015","k5":"3,ZZZ,5623"} |
XML 스키마 표현 |
<k1>AAA,BBB,CCC </k1> <k2>AAA,BBB</k2><k3>AAA,DDD</k3><k4>AAA,2,01/01/2015</k4><k5>3,ZZZ,5623</k5> |