본문으로 이동

키-값 데이터베이스

위키백과, 우리 모두의 백과사전.
배비지의 해석기관을 위해 제안된 표 형식의 데이터 카드로, 키-값 쌍(이 경우 숫자와 그 상용로그값)을 보여준다.

키-값 데이터베이스(key-value database) 또는 키-값 저장소(key-value store)는 오늘날 사전(dictionary) 또는 해시 테이블로 더 잘 알려진 자료 구조연관 배열을 저장, 조회, 관리하기 위해 설계된 데이터 저장 패러다임이다. 사전은 컬렉션 형태의 객체 또는 레코드를 포함하며, 각 레코드는 데이터를 담고 있는 여러 가지 필드를 가진다. 이러한 레코드는 레코드를 고유하게 식별하는 키를 사용하여 저장 및 조회되며, 데이터베이스 내에서 데이터를 찾는 데 사용된다.[1][2]

서로 다른 키와 연결된 다양한 형식의 데이터 값을 보여주는 표

키-값 데이터베이스는 더 잘 알려진 관계형 데이터베이스(RDB)와는 매우 다른 방식으로 작동한다. 관계형 데이터베이스는 잘 정의된 자료형을 가진 필드들을 포함하는 일련의 테이블로 데이터 구조를 미리 정의한다. 데이터베이스 프로그램에 자료형을 노출함으로써 여러 최적화를 적용할 수 있게 한다. 반면, 키-값 시스템은 데이터를 하나의 불투명한 컬렉션으로 취급하며, 레코드마다 서로 다른 필드를 가질 수 있다. 이는 상당한 유연성을 제공하며 객체 지향 프로그래밍과 같은 현대적 개념을 더 밀접하게 따른다. 대부분의 관계형 데이터베이스와 달리, 키-값 데이터베이스에서는 선택적 값이 자리 표시자(placeholder)나 입력 파라미터로 표현되지 않으므로, 동일한 데이터를 저장하는 데 훨씬 적은 메모리를 사용한다. 이는 특정 유형의 작업 부하에서 큰 성능 향상을 가져올 수 있다.

성능, 표준화 부족 및 기타 문제로 인해 키-값 시스템은 수년 동안 틈새 용도로 제한되었으나, 2010년 이후 클라우드 컴퓨팅으로의 급격한 이동은 광범위한 NoSQL 운동의 일환으로서 르네상스를 불러왔다. ArangoDB와 같은 일부 그래프 데이터베이스[3] 내부적으로 키-값 데이터베이스이기도 하며, 레코드 간의 관계(포인터) 개념을 주요 자료형으로 추가한다.

유형 및 예시

[편집]

키-값 데이터베이스는 궁극적 일관성부터 직렬화 성질에 이르는 다양한 일관성 모델을 사용할 수 있다. 일부는 키의 정렬을 지원한다.

일부는 데이터를 메모리(RAM)에 유지하는 반면, 다른 일부는 솔리드 스테이트 드라이브나 회전하는 하드 디스크 드라이브를 사용한다.[1]

모든 엔티티(레코드)는 키-값 쌍의 집합이다. 키는 정렬된 목록으로 지정된 여러 구성 요소로 이루어진다. 메이저 키(major key)는 레코드를 식별하며 키의 선두 구성 요소들로 이루어진다. 후속 구성 요소들은 마이너 키(minor key)라고 불린다. 이러한 조직은 파일 시스템의 디렉터리 경로 지정(예: /Major/minor1/minor2/)과 유사하다. 키-값 쌍의 "값" 부분은 단순히 임의의 길이를 가진 해석되지 않은 바이트 문자열이다.[4]

유닉스 시스템은 원래 켄 톰프슨이 작성한 1979년 라이브러리인 dbm(데이터베이스 매니저)을 제공한다. 이는 마이크로소프트 윈도우로도 포팅되어 Win32용 과 같은 프로그래밍 언어를 통해 제공된다. dbm은 단일 키(기본 키)를 사용하여 임의 데이터의 연관 배열을 관리한다. 현대적인 구현체로는 sdbm, GNU dbm, 버클리 DB 등이 있다. dbm은 NoSQL 개념보다 앞서 나왔고 현대적인 담론에서 드물게 언급되지만, 여전히 많은 소프트웨어에서 사용되고 있다.

최근의 키-값 데이터베이스 사례로는 ArangoDB와 같은 다른 데이터베이스 관리 시스템의 저장 엔진으로 사용되는 RocksDB가 있다. 다른 예로는 Aerospike, 아마존 다이나모DB, Memcached, 레디스, ScyllaDB 등이 있다.

같이 보기

[편집]

각주

[편집]
  1. 1 2 Corbellini, Alejandro; Mateos, Cristian; Zunino, Alejandro; Godoy, Daniela; Schiaffino, Silvia (2017년 1월 1일). Persisting big-data: The NoSQL landscape. Information Systems 63. 1–23쪽. doi:10.1016/j.is.2016.07.009. hdl:11336/58462. ISSN 0306-4379. 2025년 5월 25일에 확인함.
  2. Hecht, Robin; Jablonski, Stefan (2011). NoSQL evaluation: A use case oriented survey. 2011 International Conference on Cloud and Service Computing. 336–341쪽. doi:10.1109/CSC.2011.6138544.
  3. Storage Engines. ArangoDB. 2020년 11월 16일에 확인함.
  4. Oracle NoSQL Database.

외부 링크

[편집]