순서 키-값 저장소
Ordered Key-Value StoreOKVS(Ordered Key-Value Store)는 다중 모델 데이터베이스를 지원할 수 있는 데이터 스토리지 패러다임의 한 유형입니다.OKVS는 바이트와 바이트의 순서 매핑입니다.OKVS를 사용하면 전체 스캔을 수행할 필요 없이 상위 수준의 추상화를 구축할 수 있기 때문에 Key-Value Store보다 강력한 패러다임입니다.OKVS는 키와 값의 쌍을 키 사전순으로 정렬합니다.OKVS 시스템은 다양한 기능과 성능의 균형을 제공합니다.대부분은 다른 프로세스에 삽입하기 위해 네트워크인터페이스가 없는 라이브러리로 출하됩니다.대부분의 OKVS는 ACID 보증을 지원합니다.일부 OKVS는 분산 데이터베이스입니다.주문된 Key-Value Store는 NewSQL 데이터베이스 시스템을 포함한 많은 최신 데이터베이스 시스템에 도입되었습니다.
역사
Ordered Key-Value Store의 기원은 1979년 Ken Thompson의 dbm 연구 결과에서 비롯되었습니다.이후 1991년 Berkeley DB는 키를 정렬할 수 있는 B-Tree 백엔드를 특징으로 하여 출시되었습니다.버클리 DB는 속도가 매우 빠르며 다양한 상용 [1]제품에 진출했다고 한다.2.[2]7까지 파이썬 표준 라이브러리에 포함되어 있었다.2009년에는 거래와 발주 키를 모두 지원하는 교토 내각으로 대체된 도쿄 내각이 발표되었습니다.2011년에는 OpenLDAP에서 버클리 DB를 대체하기 위해 LMDB가 생성되었습니다.2012년 페이스북이 RocksDB로 포크한 구글의 LevelDB도 있다.2014년 버클리 DB의 후계자인 WiredTiger가 MongoDB에 인수되어 2019년부터 MongoDB 데이터베이스의 프라이머리 백엔드가 되었습니다.
OKVS 패러다임의 다른 주목할 만한 구현은 Sophia와 SQLite3 LSM [4]확장입니다[3].OKVS 패러다임의 또 다른 주목할 만한 용도는 RocksDB에 기반한 ArangoDB라고[5] 불리는 다중 모델 데이터베이스 시스템입니다.
일부 NewSQL 데이터베이스는 정렬된 키 값 저장소에서 지원됩니다.속성 그래프 데이터베이스인 JanusGraph는 Berkeley DB 백엔드와 Foundation을 모두 갖추고 있습니다.DB 백엔드
주요 개념
사전 부호화
기본 데이터 유형(문자열, 정수, 플로트)을 인코딩하는 알고리즘과 이러한 데이터 유형의 구성을 "자연적" 순서를 유지하는 튜플, 목록 또는 벡터와 같은 정렬된 컨테이너 내에 있습니다.즉, 바이트를 직접 조작하지 않고도 Ordered Key-Value Store에서 작업할 수 있습니다.FoundationDB에서는 이를 태플 [6]레이어라고 부릅니다.
범위 쿼리
서브스페이스
주요 구성
핵심 공간을 구축하여 보다 높은 수준의 추상화를 구축할 수 있습니다.아이디어는 최상위 키 공간의 정렬된 특성을 활용하는 키를 구성하는 것입니다.키 공간의 정렬된 특성을 활용하면 특정 패턴을 가진 키 범위를 쿼리할 수 있습니다.
디노멀라이제이션
와 같이 복수의 서브스페이스에서 같은 데이터를 반복하는 비정규화는 일반적인 방법입니다.이를 통해 쿼리 속도를 높일 수 있는 보조 표현(인덱스라고도 함)을 생성할 수 있습니다.
고급 추상화
상위 주문 키 값 저장소에 다음과 같은 추상화 또는 데이터베이스가 구축되었습니다.
- Timeseries 데이터베이스,[7]
- Row 스토어 데이터베이스라고도 불리는 Record [8]Database는 RDBMS라고 불리는 것과 동일하게 동작합니다.
- Triple Store 또는 Quad Store로도 알려져 있지만 Generic Tuple [9][10]Store로도 알려져 있는 Tuple Store는
- MongoDB API를 모방한 문서 데이터베이스,[11]
- 전체[12] 텍스트 검색
- 지리 정보[13] 시스템
- 속성[14] 그래프
- 버전[15] 데이터
이러한 추상화는 모두 동일한 OKVS 데이터베이스와 공존할 수 있으며 ACID가 지원되면 트랜잭션시스템이 제공하는 보증으로 작업이 이루어집니다.
기능 매트릭스
| OKVS | 면허증. | 트랜잭션 | 분산 | 인메모리 | 다중 스레드 | 다중 프로세스 |
|---|---|---|---|---|---|---|
| 버클리 DB | AGPL | 네. | 아니요. | 아니요. | 네. | 네. |
| 와이어드 타이거 | GPL | 네. | 아니요. | 네. | 네. | 아니요. |
| 레벨 DB | 아파치 | 아니요. | 아니요. | 아니요. | 아니요. | |
| 교토 캐비닛 | GPL | 네. | 아니요. | 아니요. | 아니요. | |
| Rocks | 아파치 | 네. | 아니요. | 아니요. | 네. | 아니요. |
| SQLite LSM 확장 | 퍼블릭 도메인 | 네(네스트) | 아니요. | 네. | ○(싱글 라이터) | ○(싱글 라이터) |
| TiKV | 아파치 | 네. | 네. | 아니요. | 네. | 네. |
| 토대DB | 아파치 | 네. | 네. | 네. | 네. | 네. |
「 」를 참조해 주세요.
레퍼런스
- ^ "BerkeleyDB & other distributed high performance key/value databases - High Scalability -". highscalability.com. Retrieved 2020-01-16.
- ^ "11.11. bsddb — Interface to Berkeley DB library — Python 2.7.17 documentation". docs.python.org. Retrieved 2020-01-16.
- ^ "sophia - modern transactional key-value/row storage library". sophia.systems. Retrieved 2020-01-16.
- ^ "LSM Key/Value Storage in SQLite3".
- ^ "Comparing new RocksDB and MMFiles storage engines". ArangoDB. Retrieved 2020-01-16.
- ^ "Python API — FoundationDB 6.2". apple.github.io. Retrieved 2020-01-19.
- ^ "How FoundationDB Powers Snowflake Metadata Forward Snowflake Blog". Snowflake. 2018-04-19. Retrieved 2020-01-17.
- ^ A record-oriented store built on FoundationDB., FoundationDB, 2020-01-16, retrieved 2020-01-17
- ^ "Generic Tuple Store Database". srfi.schemers.org. Retrieved 2020-01-17.
- ^ "Generic Tuple Store".
- ^ A document data model on FoundationDB, implementing MongoDB® wire protocol: FoundationDB/fdb-document-layer, FoundationDB, 2019-12-09, retrieved 2020-01-17
- ^ meilisearch/MeiliSearch, MeiliSearch, 2021-06-19, retrieved 2021-06-19
- ^ "6.1. GeoMesa Index Structure — GeoMesa 1.3.1 Manuals". www.geomesa.org. Retrieved 2020-01-19.
- ^ "The JanusGraph FoundationDB Storage Adapter - Ted Wilmes, Expero Inc". www.youtube.com. Retrieved 2020-01-17.
- ^ "Lightning Talk: Entity Store: A FoundationDB Layer for Versioned... - Stephen Pimentel, - YouTube". www.youtube.com. Retrieved 2020-01-17.