KR102367413B1 - 멀티-레벨 키-벨류 저장을 위한 시스템 및 그것의 동작 방법 - Google Patents

멀티-레벨 키-벨류 저장을 위한 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR102367413B1
KR102367413B1 KR1020160120312A KR20160120312A KR102367413B1 KR 102367413 B1 KR102367413 B1 KR 102367413B1 KR 1020160120312 A KR1020160120312 A KR 1020160120312A KR 20160120312 A KR20160120312 A KR 20160120312A KR 102367413 B1 KR102367413 B1 KR 102367413B1
Authority
KR
South Korea
Prior art keywords
key
value
namespace
store
memory
Prior art date
Application number
KR1020160120312A
Other languages
English (en)
Other versions
KR20170057826A (ko
Inventor
스티븐 최인석
안병영
기양석
Original Assignee
삼성전자주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 삼성전자주식회사 filed Critical 삼성전자주식회사
Publication of KR20170057826A publication Critical patent/KR20170057826A/ko
Application granted granted Critical
Publication of KR102367413B1 publication Critical patent/KR102367413B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0893Caches characterised by their organisation or structure
    • G06F12/0897Caches characterised by their organisation or structure with two or more cache hierarchy levels
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0871Allocation or management of cache space
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0866Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches for peripheral storage systems, e.g. disk cache
    • G06F12/0873Mapping of cache memory to specific storage devices or parts thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/2219Large Object storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/16General purpose computing application
    • G06F2212/163Server or database system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/601Reconfiguration of cache memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/60Details of cache memory
    • G06F2212/604Details relating to cache allocation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2216/00Indexing scheme relating to additional aspects of information retrieval not explicitly covered by G06F16/00 and subgroups
    • G06F2216/05Energy-efficient information retrieval
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

멀티-레벨 캐시 시스템은 서버, 서버에 프로세서, 서버에 메모리, 메모리에 설치되고, 제1 키-벨류(key-value) 쌍을 저장하기 위해 동작하는 키-벨류 캐시 시스템(key-value cache system), 제2 키-벨류 쌍을 저장하기 위해 동작하는 키-벨류 저장소(key-value store)를 포함하는 솔리드 스테이트 드라이브(Solid State Draive, SSD), 백엔드 데이터베이스(backend database)를 포함하는 저장 장치를 포함하되, 키-벨류 저장소는 메모리의 키-벨류 캐시 시스템에 대한 제2 레벨 캐시로서 동작한다.

Description

멀티-레벨 키-벨류 저장을 위한 시스템 및 그것의 동작 방법{SYSTEM FOR MULTI-LEVEL KEY-VALUE STORE AND OPERATING METHOD THEREOF }
본 발명은 데이터베이스(database)들에 관한 것으로, 좀 더 구체적으로는 솔리드 스테이트 드라이브(Solid State Drive, SSD)를 이용하여 대용량 데이터베이스들의 캐싱(caching)을 향상시킨 시스템에 관한 것이다.
빅 데이터(Big Data)의 시대이다. 우리는 클라우드 컴퓨팅(cloud computing) 및 데이터 센터들(centers)에 저장되고 처리되는 거대한 양의 데이터에 둘러싸여 있다. 빠른 데이터 검색 및 쌍방향 및 빠른 웹 서비스(web service)들, NoSQL 데이터베이스들(또는 키-벨류(key-value) 저장소들)은 일반적이다. 예를 들어, 페이스북(Facebook) 및 다른 SNS 제공자들은 수백, 수천 개의 이러한 서비스들을 효율적으로 사용한다. 특히, 멤캐시된(memcached) 데이터베이스 캐싱 소프트웨어(database caching software)는 그것의 빠른 액세스(access)들 및 쉬운 구현성에 의해 널리 알려져 있다.
기존의 단일 계층 캐싱과 백엔드(single-layer caching-with-backend) 데이터베이스 구조에 평균 성능, 비용, 및 에너지 갭(gap)들에 큰 갭들이 있다. 예를 들어, 백엔드 SQL 데이터베이스 쿼리(query)가 20 밀리초(milliseconds) 걸리는 반면에, 맴캐시된 소프트웨어의 평균 액세스 또는 서비스 시간은 10-20 마이크로(micro) 초이다(백엔드 SQL 데이터베이스 쿼리가 2000배 느리다). SQL 데이터베이스를 운영하기 위해 적절한 서버들은 $30,000.00 달러를 요할 수 있다. 상이한 서버들을 위한 전력 소비는 크게 다를 수 있다. 예로서, 큰 서버들이 1,500와트(watt)를 번(burn)할 수 있지만, 작은 서버들은 200와트를 번 할 수 있다. 서버의 메모리 용량을 증가시키는 것 또한 효율적이지 않는데, 메모리는 매우 비싸고 큰 전력을 요구한다. 큰 데이터베이스들의 성능을 향상시키고, 최소의 레이턴시(latency) 및 가격 감소를 유지하기 위한 두 가지 목표들의 균형을 위한 방법에 대한 필요성이 여전히 남아 있다.
본 발명의 목적은 데이터베이스들의 캐싱(caching)을 향상시키기 위한 시스템 및 그것의 저장 방법을 제공하는 데에 있다.
본 발명의 실시 예에 따른 멀티-레벨 캐시 시스템은 서버, 서버에 프로세서, 서버에 메모리, 메모리에 설치되고, 제1 키-벨류(key-value) 쌍을 저장하기 위해 동작하는 키-벨류 캐시 시스템(key-value cache system), 제2 키-벨류 쌍을 저장하기 위해 동작하는 키-벨류 저장소(key-value store)를 포함하는 솔리드 스테이트 드라이브(Solid State Draive, SSD), 백엔드 데이터베이스(backend database)를 포함하는 저장 장치를 포함하되, 키-벨류 저장소는 메모리의 키-벨류 캐시 시스템에 대한 제2 레벨 캐시로서 동작한다.
본 발명의 실시 예에 따른 시스템의 동작 방법은 타깃 벨류(target value)로 액세스(access)하기 위해 타깃 키(target key)를 포함하는 요청을 수신하는 단계, 타깃 키를 포함하는 키-벨류 쌍(key-value pair)이 키-벨류 캐시(key-value cache)에 존재하는지를 판단하는 단계, 타깃 키를 포함하는 키-벨류 쌍이 키-벨류 캐시에 존재하지 않는 경우, 타깃 키를 포함하는 키-벨류 쌍이 키-벨류 저장소(key-value store)에 존재하는지를 판단하는 단계, 및 키-벨류 쌍이 키-벨류 저장소에 존재하는 경우, 타깃 키를 이용하여 키-벨류 쌍으로부터 키-벨류에 액세스하는 단계를 포함한다.
본 발명의 실시 예에 따른 시스템의 동작 방법은 멀티-레벨 캐시 시스템(multi-level cache system)에 메모리에 키-벨류 캐시(key-value cache)의 제1 용량을 판단하는 단계, 멀티-레벨 캐시 시스템에 키-벨류 저장소(key-value store)의 제2 용량을 판단하는 단계, 제1 명칭 공간(namespace)에 대한 요청들의 제1 세트 및 제2 명칭 공간에 대한 요청들의 제2 세트를 판단하는 단계, 제1 명칭 공간에 대한 메모리의 제1 부분 및 제2 명칭 공간에 대한 메모리의 제2 부분을 계산하는 단계, 제1 명칭 공간에 대한 키-벨류 저장소의 제3 부분 및 제2 명칭 공간에 대한 키-벨류 저장소의 제4 부분을 계산하는 단계, 제1 명칭 공간에 대한 메모리의 제1 부분 및 제2 명칭 공간에 대한 메모리의 제2 부분을 할당하는 단계, 및 제1 명칭 공간에 대한 키-벨류 저장소의 제3 부분 및 제2 명칭 공간에 대한 키-벨류 저장소의 제4 부분을 할당하는 단계를 포함한다.
본 발명의 실시 예에 따른 시스템은 멀티-레벨 캐시 시스템을 이용함으로써, 성능이 향상되고, 레이턴시는 감소할 수 있다.
도 1은 본 발명의 실시 예에 따라 키-벨류 저장소와 함께 SSD 및 메모리를 이용하여 멀티-레벨 캐시 시스템을 구현하는 서버를 보여준다.
도 2는 도 1의 서버를 좀 더 자세히 보여주기 위한 블록도이다.
도 3은 SSD들 및 메모리를 포함하는 멀티-레벨 캐시 시스템의 구조를 보여주기 위한 블록도이다.
도 4는 일반적인 시스템의 두 개의 명칭 공간들의 이용 가능한 메모리 및 메모리 요건들의 예시를 보여준다.
도 5는 도 3의 멀티-레벨 캐시 시스템을 이용하여 도 4의 명칭 공간들에 대한 메모리 및 키-벨류 저장소의 예시적인 할당을 보여준다.
도 6은 도 1의 키-벨류 캐시 시스템, 도 3의 키-벨류 저장소, 및 도 1의 백엔드 데이터베이스 사이의 키-벨류 쌍들을 상승하고 강등하는 도 3의 멀티-레벨 캐시 시스템을 보여준다.
도 7은 도 3의 멀티-레벨 캐시 시스템의 타깃 키와 관련된 타길 벨류에 대한 요청을 처리는 도 3의 글루 로직을 보여준다.
도 8은 도 1의 SSD들을 상세하게 보여준다.
도 9는 도 1의 키-벨류 캐시 시스템 및 도 3의 멀티-레벨 캐시 시스템의 키-벨류 저장소의 시간에 따라 변하는 명칭 공간에 대한 요건들의 예시를 보여준다.
도 10은 본 발명의 실시 예에 따라, 도 3의 멀티-레벨 캐시 시스템의 키-벨류 저장소 및 도 1의 키-벨류 캐시 시스템의 용량을 계산하기 위해 도 3의 로직을 자세히 보여준다.
도 11은 본 발명의 실시 예에 따라 도 3의 멀티-레벨 캐시 시스템의 키-벨류 캐시 시스템 및 키-벨류 저장소의 용량들을 계산하는 적중률 예측기의 사용을 보여준다.
도 12는 도1의 키-벨류 캐시 시스템 및 멀티-캐시 시스템의 도 3의 키-벨류 저장소의 용량들을 계산함에 있어서, 도 1의 키-벨류 캐시 시스템의 키-벨류 쌍들의 개수 대 도 3의 키-벨류 저장소의 재사용 거리의 예시적인 그래프를 보여준다.
도 13a 및 13b는 본 발명의 실시 예에 따라, 도 7의 타깃 키와 관련된 타깃 벨류에 대한 요청을 처리하기 위해, 도 3의 멀티-레벨 캐시 시스템에 대한 예시적인 절차에 대한 순서도를 보여준다.
도 14a 및 14b는 본 발명의 실시 예에 따른 도 1의 키-벨류 캐시 시스템 및 도 3의 멀티-레벨 캐시 시스템의 도 3의 키-벨류 저장소를 구성하기 위한 도 3의 멀티-레벨 캐시 시스템에 대한 예시적인 절차의 순서도를 보여준다.
도 15a 및 15b는 본 발명의 실시 예에 따른 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 멀티-레벨 캐시 시스템의 도 3의 키-벨류 저장소의 용량들을 계산하기 위한 예시적인 절차의 순서도이다.
도 16은 사용자가 선택한 서비스의 품질과 관련된 도 15a 및 15b의 예시적인 절차의 세부 사항을 보여준다.
도 17은 본 발명의 실시 예에 따라, 도 3의 멀티-레벨 캐시 시스템에서 도 10의 키-벨류 캐시 적중률 및 도 10의 키-벨류 저장소 재사용 거리를 계산하기 위한 예시적인 절차의 순서도를 보여준다.
아래에서는, 본 발명의 기술 분야에서 통상의 지식을 가진 자가 본 발명을 용이하게 실시할 수 있을 정도로, 본 발명의 실시 예들이 명확하고 상세하게 기재될 것이다.
새로운 서버를 추가하는 것은 데이터베이스 쿼리들의 레이턴시의 잠재적인 작은 개선과 함께 상당한 비용을 수반한다. 맴캐시된 키-벨류 캐싱 소프트웨어로서 사용되는 메모리의 증가는 데이터 쿼리들의 레이턴시를 향상시키지만, 상당한 비용을 포함하고, 서버에 설치될 수 있는 메모리의 양에는 상한이 있다. 하지만, 키-벨류 저장소를 구현하기 위해, 솔리드 스테이트 드라이브(Solid State Drive, SSD)를 사용하는 것은 메모리 증가 또는 새로운 서버들과 관련된 낮은 비용 및 저전력 소비와 함께 데이터베이스 시스템의 용량을 상당히 증가시킬 수 있다. 예로서, SSD들은 테라바이트(terabyte)의 데이터를 추가하기 위해 20와트(watt)보다 적게 소비할 수 있다; 비슷한 용량으로 서버의 메모리를 증가시키는 것은 쉽게 10만 와트를 필요로 할 수 있다. 그리고 SSD는 메모리보다 액세스가 느린 경향이 있는 반면에, SSD들로의 쿼리들은 백엔드 데이터베이스로의 쿼리들보다 훨씬 빠른 약 60-150 마이크로초일 수 있다. 이와 같이, 혼합으로 SSD들을 도입하는 것은 데이터베이스 쿼리들의 전체 레이턴시를 감소시킬 수 있다.
도 1은 본 발명의 실시 예에 따라 키-벨류 저장소와 함께 SSD 및 메모리를 이용하여 멀티-레벨 캐시 시스템을 구현하는 서버를 보여준다. 도 1을 참조하면, 서버(105)는 프로세서(110) 및 메모리(115)를 포함할 수 있다. 프로세서(110)는 인텔(Intel)의 셀러론(Celeron) 및 제온(Xeon) 프로세서들과 같은 다양한 프로세서일 수 있고, 서버(105)는 복수의 프로세서를 포함할 수 있다. 메모리(115)는 플래시 메모리(flash memory), 또는 정적 랜덤 액세스 메모리(Random Access Memory, RAM), 전형적으론 동적 메모리(Dynamic RAM)과 같은 다양한 메모리일 수 있다.
서버(105)는 임의의 개수의 저장 장치들을 포함할 수 있다. 도 1을 참조하면, 서버(105)는 백엔드(backend) 데이터베이스(125)가 저장되는 저장 장치(120) 포함할 수 있다. 저장 장치(125)는 하드 디스크 드라이브들(hard disk drives) 및 플래시 스토리지(flash storage)와 같은 저장 장치일 수 있다. 서버(105)는 키-벨류 저장소로서 동작할 수 있는 SSD들(130, 및 135)을 포함할 수 있다. 도 1에서 두 개의 SSD들(130, 및 135)을 개시하고 있지만, 본 발명의 다른 실시 예에서 서버(105)는 임의의 개수의 SSD들 및 다른 유형의 스토리지를 포함할 수 있다.
서버(105)는 메모리(115)에 설치되어 동작하는 키-벨류 캐시 시스템(140)을 포함할 수 있다. 도 1에서, 키-벨류 캐시 시스템(140)은 일반적으로 키-벨류 캐시 시스템으로 사용되는 맴캐시로 도시되었지만, 키-벨류 캐시 시스템(140)은 레디스(redis)와 같은 다른 키-벨류 캐시 시스템으로 대체될 수 있다. 키-벨류 캐시 시스템(140)은 액세스 속도가 느린 백엔드 데이터베이스(125)로부터 달리 획득되어야 할 정보를 빠르게 액세스할 수 있다.
SSD들(130, 및 135)은 백엔드 데이터베이스(125)를 위한 키-벨류 저장소들로서 동작할 수 있다. 메모리(115)에 액세스하는 것보다는 느리지만, SSD들(130, 및 135)은 백엔드 데이터베이스(125)보다 더 빠르게 액세스하며, 더 빠른 응답을 할 수 있다. SSD들(130, 및 135)은 메모리(115)에 의해 제공될 수 있는 용량보다 충분히 더 많이 제공할 수 있다. 이러한 방법으로, 키-벨류 캐시 시스템(140) 및 SSD들(130, 및 135)의 키-벨류 저장소들은, 일반적인 메모리가 L1 및 L2 캐시들을 포함하는 것과 유사하게, 멀티-레벨 캐시로써 동작할 수 있다. 하나의 캐시(키-벨류 캐시 시스템(140))는 더 작은 용량을 갖는 반면에, 빠르다. 다른 캐시(SSD들(130, 및 135)의 키-벨류 저장소들)는 더 큰 용량을 갖는 반면에 느리다.
SSD들(130, 및 135)은 메모리(115)를 증가시키거나 새로운 서버(105)를 추가함으로써 요구되는 것보다 훨씬 더 낮은 전력 소비의 이익을 갖는다. SSD들(130, 및 135)은 더 낮은 전력 소비를 갖고, 동작의 비용은 감소된다.
일반적인 블록 기반 인터페이스를 사용하는 대신, SSD들(130, 및 135)은 키-벨류 인터페이스를 사용하도록 변경될 수 있다. 특정 어드레스에서 벨류를 요청하는 대신에, SSD들(130, 및 135)의 키-벨류 저장소들의 요청은 타깃 키(target key)를 포함할 수 있다. SSD들(130, 및 135)은 타깃 키에 대응하는 어드레스들을 결정하고, 대응하는 벨류에 액세스하기 위해 내부 매핑 정보를 사용할 수 있다. SSD들(130, 및 135)은 새로운 인터페이스를 관리하기 위해 변경된 펌웨어를 사용할 수 있다. SSD들(130, 및 135)은 도 8을 참조하여 더 상세히 설명된다.
도 2는 도 1의 서버(105)를 좀 더 자세히 보여주기 위한 블록도이다. 도 2를 참조하면, 기계 또는 기계들(105)은 메모리 컨트롤러(205) 및 클럭(clock)(210)을 포함하는 하나 이상의 프로세서(110)를 포함한다. 메모리 컨트롤러(205) 및 클럭(210)은 기계 또는 기계들(105)의 구성 요소들의 동작들을 조정하기 위해 사용될 수 있다. 프로세서들(110)은 메모리(115)와 연결될 수 있다. 메모리(115)는 랜덤 액세스 메모리(Random Access Memory, RAM), 읽기 전용 메모리(Read Only Memory, ROM), 또는 다른 상태의 기억 보존용 미디어(media)를 포함할 수 있다. 프로세서들(110)은 저장 장치들(130, 및 135) 및 네트워크 커넥터(network connector)(215)와 연결될 수 있다. 예로서, 네트워크 커넥터(215)는 이더넷(Ethernet) 커넥터 또는 무선 커넥터일 수 있다. 프로세서들(110)은 버스(220)와 연결될 수 있다. 버스(220)는 부착된 유저 인터페이스(225), 및 입/출력 엔진(230)을 이용하여 관리될 수 있는 입/출력 인터페이스포트들일 수 있다.
도 3은 도 1의 SSD들(130, 및 135) 및 메모리(115)를 포함하는 멀티-레벨 캐시 시스템의 구조를 보여주기 위한 블록도이다. 도 3을 참조하면, 메모리(115) 및 SSD들(130, 및 135)이 도시된다. 메모리(115)는 키 1(310) 및 벨류 1(315)의 키-벨류 쌍(305)을 포함하는 키-벨류 캐시 시스템(140)(예로서, 멤캐시)을 포함할 수 있다. SSD들(130, 및 135)은 키-벨류 저장소들(320, 325, 330 및 335)을 포함할 수 있다. 키-벨류 저장소(320)는 키 2(345), 및 벨류 2(350)의 키-벨류 쌍(340)을 포함한다. SSD들(130, 및 135) 각각은 하나 이상의 키-벨류 저장소를 포함할 수 있다. 키-벨류 저장소 각각은 상이한 명칭 공간(namespace)을 위한 것(즉, 상이한 데이터베이스를 위한 것)일 수 있다.
따라서, 네 개의 키-벨류 저장소들(320, 325, 330 및 335)이 도 3에 도시된 것처럼, 멀티-레벨 캐시 시스템에 의해 지지될 수 네 개의 상이한 명칭 공간(namespace)들이 존재할 수 있다. 도 3은 각각이 두 개의 키-벨류 저장소들을 포함하는 SSD들(130, 및 135)을 개시하지만, 본 발명의 다른 실시 예에서 각 SSD는 임의의 개수의 키-벨류 저장소들을 지원할 수 있다. 키-벨류 캐시 시스템(140), 키-벨류 저장소들(320, 325, 330 및 335), 및 백엔드 데이터베이스(125)는 함께 멀티-레벨 캐시 시스템을 구성한다. 도 3이 백엔드 데이터베이스(125) 외에 두 개의 캐시 레벨들(키-벨류 캐시 시스템(140), 및 키-벨류 저장소들(320, 325, 330 및 335))을 포함하는 멀티-레벨 캐시 시스템을 개시하지만, 본 발명의 실시 예는 임의의 개수의 캐시 레벨들을 포함하기 위해 확장될 수 있다.
멀티-레벨 캐시 매니저(manager)(355)는 멀티-레벨 캐시 관리에 책임을 갖는다. 좀 더 구체적으로, 멀티-레벨 캐시 매니저(355)는 멀티-레벨 캐시 계층을 정의할 책임이 있고, 캐시가 포괄적인지 또는 독점적인지, 언제 멀티-레벨 캐시의 하나의 레벨로부터 다른 레벨로 키-벨류 쌍을 상승(promote) 또는 강등(demote)하는지, 그리고, 언제 멀티-레벨 캐시의 레벨로부터 키-벨류 쌍을 제거할 지와 같은 멀티-레벨 캐시 계층의 레벨들의 특징들을 구성할 책임이 있다. 그 목적을 달성하기 위해, 멀티-레벨 캐시 매니저(355)는 멀티-레벨 캐시 시스템의 다양한 레벨들을 저장하는 메모리(115), 및 SSD들(130, 및 135)과 통신할 수 있다.
멀티-레벨 캐시 매니저(355)는 로직(logic)(360)을 포함할 수 있다. 로직(360)은 키-벨류 캐시 시스템(140)으로 할당하기 위한 메모리(115)의 양 및 키-벨류 저장소들(320, 325, 330, 및 335)로 할당하기 위한 SSD들(130, 및 135)의 양을 결정할 수 있다. 로직(360)은 도 10을 참조하여 더 자세히 설명된다.
글루 로직(glue logic)(365)은 멀티-레벨 캐시 시스템의 레벨들 사이의 통신을 구현할 수 있다. 예로서, 글루 로직(365)은 정보에 대한 요청들을 제출하고 요청들의 결과들을 반환하기 위해 메모리(115), 및 SSD들(130, 및135)과 통신할 수 있다. 글루 로직(365)은 도 7을 참조하여 더 자세히 설명된다.
도 4는 일반적인 시스템에 두 개의 명칭 공간들의 이용 가능한 메모리 및 메모리 요건들의 예시를 보여준다. 도 4에서, 메모리(115)의 용량을 나타내는 원통형 표현(cylindrical representation)의 길이로 메모리(115)가 도시된다.
실린더(cylinder)들(405, 및 410)은 두 개의 명칭 공간들의 각각에 대해 필요한 메모리를 나타낼 수 있다. 실린더들(405, 및 410)의 길이는 인-메모리(in-memory) 캐싱을 위해 필요한 메모리를 나타낼 수 있다. 이와 같이, 실린더(405)로 표현되는 명칭 공간은 실린더(410)로 표현되는 명칭 공간보다 더 많은 메모리를 요구할 수 있다. 실린더(405)는 메모리(115)보다 크고, 실린더(405)에 의해 표현되는 명칭 공간이 그 자체로 도 1의 서버(105)에 사용 가능한 것보다 많은 메모리를 요구한다는 것을 나타낸다. 실린더(410)에 의해 표현되는 명칭 공간은 부담을 추가한다.
그 자체로, 실린더(405)에 의해 표현되는 명칭 공간을 지원하는 메모리가 부족하기 때문에, 메모리(115)는 명칭 공간들에 의해 사용되는 모들 키-벨류 쌍들을 완전히 캐시할 수 없다. 이와 같이, 벨류들에 대한 많은 요청들은 백엔드 데이터베이스(125)로 전송되어야만 하고, 이는 넓은 화살표(415)에 의해 도시된다.
도 4와 대조적으로, 도 5는 도 3의 멀티-레벨 캐시 시스템을 이용하여 도 4의 명칭 공간들에 대한 메모리 및 키-벨류 저장소의 예시적인 할당을 보여준다. 명칭 공간들에 대해 요구되는 전체 공간은 도 4에서 도 5로 변하지 않는다. 메모리(115)는 제1 명칭 공간(실린더(505)로서 도시)으로 부분적으로 할당되고, 제2 명칭 공간(실린더(510)으로 도시)으로 부분적으로 할당된다. 하지만, 키-벨류 저장소들의 추가와 함께, 명칭 공간들에 대해 초과 요구되는 공간은 키-벨류 저장소들로 할당될 수 있다. 도 4와 함께, 도 5의 키-벨류 저장소들은 할당된 공간으로 표현되는 실린더의 길이와 함께, 실린더들로 도시된다. 이와 같이, 키-벨류 저장소(320)는 제1 명칭 공간에 의해 요구되는 초과 공간(실린더(515)로 도시)으로 할당될 수 있고, 키-벨류 저장소(325)는 제2 명칭 공간에 의해 요구되는 초과 공간(실린더(520)로 도시)으로 할당될 수 있다. 제2 레벨 캐시들로서 키-벨류 저장소들(320, 및 325)을 사용함으로써, 좁은 화살표(525)에 의해 도시된 바와 같이, 백엔드 데이터베이스(125)에 대한 트래픽(traffic)은 감소한다.
도 6은 도 1의 키-벨류 캐시 시스템(140), 도 3의 키-벨류 저장소(320), 및 도 1의 백엔드 데이터베이스(125) 사이의 키-벨류 쌍들을 상승 및 강등하는 도 3의 멀티-레벨 캐시 시스템을 보여준다. 도 6에서, 키 3(610) 및 벨류 3(615)를 포함하는 키 쌍(605)은 백엔드 데이터베이스(125)에서 키-벨류 저장소(320)로 상승될 수 있다(620). 유사하게. 키 쌍(340)은 키-벨류 저장소(320)에서 키-벨류 캐시 시스템(140)으로 상승될 수 있다(625). 또는 키 쌍(305)은 키-벨류 캐시 시스템(140)에서 키-벨류 저장소(320)로 강등될 수 있다(630). 그리고 키 쌍(340)은 키-벨류 저장소(320)에서 백엔드 데이터베이스(125)로 강등될 수 있다.
도 3을 참조하여 상술된 바와 같이, 멀티-레벨 캐시 매니저(355)는 상승 및 강등 정책들을 설정할 수 있다. 예로서, 키 쌍이 어떤 기간에서 어떤 임계 횟수만큼 액세스하는 경우, 도 3의 멀티-레벨 캐시 매니저(355)는 멀티-레벨 캐시의 하나의 레벨에서 더 높은 레벨로 키 쌍을 상승하기 위해 상승 정책을 설정할 수 있다. 키 쌍이 어떤 시간의 임계 값 내에 액세스 되지 않은 경우, 도 3의 멀티-레벨 캐시 매니저(355)는 멀티-레벨 캐시의 하나의 레벨에서 다른 레벨로 키 쌍을 강등하기 위한 강등 정책을 설정할 수 있다. 또는, 도 3의 키-레벨 캐시 매니저(355)는 캐시의 하나의 레벨이 가득 차있지만 새로운 키 쌍이 캐시에 필요할 경우, 키 쌍들을 제거하기 위한 기준에 기반하는 강등 정책들을 설정할 수 있다. 예로서, 도 3의 멀티-레벨 캐시 매니저(355)는 최근 사용 빈도(Least Recently Used, LRU), 또는 최소 사용 빈도(Least Frequently Used, LFU) 정책을 기반으로 강등 정책을 설정할 수 있다.
도 7은 도 3의 멀티-레벨 캐시 시스템의 타깃 키와 관련된 타깃 벨류에 대한 요청을 처리는 도 3의 글루 로직(365)을 보여준다. 도 7에서, 글루 로직(365)은 장치 드라이버(driver)(710)로부터 요청(705)을 수신할 수 있다. 요청(705)은 어플리케이션이 키에 대한 연관된 벨류를 원하는 키를 나타내는 타깃 키(715)를 포함할 수 있다. 글루 로직(365)은 요청(705)을 타깃 키(715)가 키 쌍에서 발견될 때까지, 키-벨류 캐시 시스템(140), 키-벨류 저장소(320), 및 백엔드 데이터베이스(125)로 차례로 패스할 수 있다. 좀 더 구체적으로, 글루 로직(365)은 요청(720)으로서 요청(705)을 키-벨류 캐시 시스템(140)으로 포워드(forward) 할 수 있고, 응답(back response)(725)을 수신할 수 있다. 응답(725)이 타깃 키(715)가 키-벨류 캐시 시스템(140)의 키 쌍에서 발견되지 않았음을 나타내는 경우, 글루 로직(365)은 요청(730)으로서 요청(705)을 키-벨류 저장소(320)으로 포워드할 수 있고, 응답(735)을 수신할 수 있다. 응답(735)이 타깃 키(715)가 키-벨류 저장소(320)의 키 쌍에서 발견되지 않았음을 나타내는 경우, 글루 로직(365)은 요청(740)으로써 요청(705)을 백엔드 데이터베이스(125)로 포워드할 수 있고, 응답(745)을 수신할 수 있다. 물론, 타깃 키(715)가 키-벨류 캐시 시스템(140) 또는 키-벨류 저장소(320)에서 발견되지 않는 경우, 응답(725 또는 735)은 타깃 벨류를 반환할 수 있고, 글루 로직(365)은 키-벨류 캐시 시스템(140)의 더 이상의 레벨들로 요청들을 전송할 필요가 없다.
도 8을 참조하여 후술한 바와 같이, 블록-장치 인터페이스 또는 파일 시스템 인터페이스와 같은 일반적인 인터페이스들을 사용하기보다는, 도 1의 SSD들(130, 및 135)은 키-벨류 인터페이스를 사용할 수 있다. 즉, 키-벨류 저장소(320)로부터 정보를 액세스하는 경우, 요청은 SSD에 있는 정보의 어드레스보다 키를 포함할 수 있다. 글루 로직(365)은 요청(705)을 키-벨류 저장소(320)에 적합한 신텍스(syntax)로 변환하기 위한 변환기(translator)(750)를 포함할 수 있다. 글루 로직(365)은 키-벨류 저장소(320)에 액세스하기 위해 사용될 수 있는 함수들의 라이브러리(library) (755)를 포함할 수 있다.
도 7은 본 발명의 일 실시 예를 나타내지만, 본 발명의 다른 실시 예들 또한 가능하다. 본 발명의 다른 실시 예에서, 요청(705)은 우선 키-벨류 캐시 시스템(140)으로 전송될 수 있고, 키-벨류 캐시 시스템(140)이 타깃 벨류를 제공할 수 없는 경우, 키-벨류 캐시 시스템(140)은 요청(705)을 글루 로직(365)으로(그리고 거기서 키-벨류 저장소(320)로) 전송할 수 있다. 본 발명의 다른 실시 예에서, 파일 시스템 혹은 블록 장치 요청을 수신하고, 그에 따라 변환하기 위한 SSD들(130, 및 135)을 남기고 변환기(750)는 생략될 수 있다.
도 8은 도 1의 SSD들을 상세하게 보여준다. 도 8에서, SSD(130)는 키-벨류 인터페이스를 사용하여 요청들을 수신할 수 있다. 이와 같이, 도 8은 타깃 키(715)를 수신하는 SSD(130)를 개시한다. SSD(130)는 타깃 어드레스가 발견될 수 있는 위치에 대응하는 SSD(130)의 어드레스로 타깃 키(715)를 매핑하기 위한 매핑(mapping)(805)을 사용할 수 있다. 매핑(805)은 임의의 원하는 방식으로 구현될 수 있다. 예를 들면, 매핑(805)은 타깃 키(715)에 해쉬(hash) 함수를 수행하여 타깃 벨류가 위치할 수 있는 어드레스를 생성할 수 있다. 또는, 매핑(805)은 타깃 키(715)를 SSD(130)의 어드레스로 매핑하는 룩업 테이블(lookup table)의 일부 유형을 포함할 수 있다. 그러나 매핑(805)이 구현될 수 있는 방법의 또 다른 예는 2016년 3월 4일에 출원된 미국공개특허공보 US 15/061,873에 구현될 수 있다. 다른 매핑들 또한 가능하다.
SSD(130)는 또한 다형성 SSD(polymorphic SSD)로 구현될 수 있다. 다형성 SSD들은 상이한 기능들을 제공하기 위해 재구성될 수 있다. SSD가 제공할 수 있는 상이한 기능들의 예시들은 인-스토리지 컴퓨팅(In-Storage Computing, ISC) 장치들, 키-벨류 저장소들, 하둡 분산 파일 시스템(Hadoop® Distributed File System, HDFS) 장치들, 오브젝트(object) 저장 장치들을 제공할 수 있다. (하둡은 미국 및 다른 나라들의 아파치 소프트웨어 재단(Apache Software Foundation)의 등록 상표이다.) SSD(130)의 펌웨어를 변경함으로써, SSD(130)는 상이하게 동작하도록 재구성될 수 있다. 특정 요청을 적절한 로직 영역으로 매핑하고 이에 따른 요청을 처리하는 SSD(130)와 함께, SSD(130)의 상이한 로직 영역들(상이한 로직 디스크들로 분할될 수 있는 하드 디스크 드라이브들과 매우 유사하게)에 대해 동시에 복수의 기능을 지원하기 위한 SSD(130)도 가능하다. 다형성을 지원하기 위해, SSD(130)는 다형성 장치 커널(kernel)(810)을 포함할 수 있다. 다형성이 SSD(130)에서 구현되는 방법은 2016년 2월 2일에 출원된 공동 출원중인 미국특허 가출원 번호 US 62/290,295에 개시되어 있다.
도 8에서, 키-벨류 저장소(320)는 키 쌍들(305, 및 340) 모두를 포함하는 것으로 개시되어 있지만, 도 3에서 키-벨류 저장소(320)는 오직 키 쌍(340)을 포함하는 것으로 개시된다(키 쌍(340)은 도 3의 키-벨류 캐시 시스템(140)에 포함된다). 이러한 대조적인 도면들은 멀티-레벨 캐시 시스템이 포괄적이고 독점적인 포함 정책들을 지원할 수 있는 것을 보여준다. 간단하게, 멀티 레벨 캐시 시스템의 하나 이상의 레벨 (도 1의 백엔드 데이터베이스(125)는 무시)이 동일한 키 쌍(예로서, 키 쌍(305))을 포함하는 경우, 멀티-레벨 캐시 시스템은 "포괄적(inclusive)"이고, 멀티-레벨 캐시 시스템의 단지 하나의 레벨이(도 1의 백엔드 데이터베이스(125) 이외) 어떤 주어진 키 쌍을 포함하는 경우, 멀티-레벨 캐시 시스템은 "독점적(exclusive)"이다. 포괄적인 멀티-레벨 캐시 시스템에서, 캐시의 모든 레벨이 특정 키 쌍을 저장할 필요는 없다. 예로서, 키 쌍은 도 1의 키-벨류 캐시 시스템(140)으로 상승되지 않고 키-벨류 저장소(320)로 상승될 수 있다. 또는, 도 1의 키-벨류 캐시 시스템(140) 및 키-벨류 저장소(320)에 저장된 키 쌍은 도 1의 키-벨류 캐시 시스템(140)에 여전히 존재하는 반면에, 키-벨류 저장소(320)로부터 제거될 수 있다. 포괄적인 멀티-레벨 캐시 시스템은 키 쌍의 중복을 허용(예로서, 하나보다 많은 캐시의 레벨은 동일한 키-벨류 쌍을 저장)하지만, 이러한 중복을 요청하지는 않는다.
도 9는 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 멀티-레벨 캐시 시스템의 키-벨류 저장소(320)의 시간에 따라 변하는 명칭 공간에 대한 요건들의 예시를 보여준다. 도 9에서, 시간은 왼쪽에서 오른쪽으로 흐르고, 로우(row)들(905, 및 910)은 각각 시간의 다양한 포인트(point)들에서 요구되는 메모리 및 키-벨류 저장 공간의 양을 나타낸다. 공간의 요구들은 연속적으로 변할 수 있지만, 단순화를 위해서, 도 9는 시간의 불연속 포인트들에서 이러한 요구들을 보여준다. 로우들(905, 및 910)은 메모리 공간 및 키-벨류 저장 공간의 요청들 사이의 연관성을 요구하지 않음에 유의해야 한다. 예로서, 시간(915)에서, 필요한 키-벨류 저장 공간이 비교적 높은 반면에, 필요한 메모리는 비교적 낮다. 반대로, 이러한 관계는 시간(920)에서 반전된다. 다른 시간에서, 필요한 메모리 및 키-벨류 저장 공간은 낮거나 높을 수 있다.
도 10은 본 발명의 실시 예에 따라, 도 3의 멀티-레벨 캐시 시스템의 키-벨류 저장소(320) 및 도 1의 키-벨류 캐시 시스템(140)의 용량을 계산하기 위해 도 3의 로직(360)을 자세히 보여준다. 도 10에서, 로직(360)은 수신 회로(1005), 정합 계산기(1010), 및 전송 회로(1015)를 포함할 수 있다. 수신 회로(1005) 및 전송 회로(1015)는 각각 로직(360)에서 정보를 수신할 수 있고, 로직(360)으로부터 정보를 전달할 수 있다. 정합 계산기(1010)는 수신된 정보를 기반으로 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320)에 대한 "최적의" 크기들을 계산할 수 있다.
수신 회로(1005)는, 다른 데이터 사이에서, 키-벨류 캐시 적중률(key-value cache hit rate)(1020) 및 재사용 거리(reuse distance)(1025)를 수신할 수 있다. 키-벨류 캐시 적중률(1020)은 타깃 키가 얼마나 자주 요청되는지에 관하여 타깃 키가 도 1의 키-벨류 캐시 시스템(140)에서 얼마나 자주 발견되는지에 대한 표시일 수 있다. 키-벨류 캐시 적중률(1020)이 전체 개수의 쿼리들(queries)에 대해 얼마나 많은 캐시 히트(hit)들이 발생하는지에 대한 백분율로서 표현되는 반면에, 키-벨류 캐시 적중률(1020)은 다른 포맷(format)들(예로서, 캐시 적중률의 개수와 관련된 캐시 미스들(miss)들의 개수의 비율(0의 값인 경우 이상적인 것으로 간주됨)로서)로 표현될 수 있다. 키-벨류 캐시 적중률(1020)은 도 1의 서버(105)내에 키-벨류 캐시 시스템(140)을 전적으로 기반으로 하여 또는 분산 데이터베이스 시스템에서 모든 키-벨류 캐시 시스템들(140)을 기반으로 하여 계산될 수 있다.
재사용 거리(1025)는 특정 데이텀이 캐시로부터 얼마나 자주 액세스되는 지에 대한 지시일 수 있다. 좀 더 구체적으로, 재사용 거리(1025)는 동일한 데이텀의 두 개의 액세스들 사이에서 발생되는 복수의 별개의 데이터 액세스들이다.
===재사용 거리(1025)의 예로서, 다음의 데이터 액세스 패턴을 고려할 수 있다(왼쪽에서 오른쪽으로의 순서임):
주소 A B C A B B A C
거리 2 2 0 1 2
표 1을 참조하면, 첫 번째 세 개의 데이터 액세스들은 이전에 액세스되지 않았기 때문에, 이러한 것들은 무한대의 재사용 거리를 갖는다. 데이터 B 및 C는 데이텀 A로의 두 개의 액세스들 사이에서 액세스되었기 때문에, 데이텀 A의 두 번째 액세스에 대한 재사용 거리는 2 이다. 유사하게, 데이터 C 및 A는 데이텀 B로의 두 개의 액세스들 사이에서 액세스되었기 때문에, 데이텀 B의 두 번째 액세스에 대한 재사용 거리는 2이다. 데이텀 B는 바로 이전에 액세스된 데이텀이기 때문에, 데이텀 B의 세 번째 액세스에 대한 재사용 거리는 0이다. 데이텀 B는 데이텀 A 의 두 번째 및 세 번째 액세스들 사이에서만 액세스되었기 때문에, 데이텀 A의 세 번째 데이터 액세스에 대한 재사용 거리는 1이다(데이텀 B가 해당 기간에 두 번 액세스되었다는 사실은 관련이 없다). 마지막으로, 데이터 A 및 B는 데이텀 C의 두 개의 액세스들 사이에서 각각 액세스되기 때문에, 데이텀 C의 두 번째 액세스에 대한 재사용 거리는 2이다(다시, 데이텀 A 및 B가 각각 해당 기간에 두 번 액세스되었다는 사실은 관련이 없다.).
이 예에서 알 수 있는 바와 같이, 특정 데이텀에 대한 재사용 거리는 숫자이다. 하지만, 재사용 거리는 상이한 데이터에 대해 다를 수 있고, 심지어 서로 다른 시간에 동일한 데이터에 대해서도 다를 수 있기 때문에, 시간이 지남에 따라 모든 데이터를 고려하여 재사용 거리는 벡터를 포함할 수 있다. 본 발명의 몇몇 실시 예들은 각각의 데이텀의 오직 마지막 액세스에 대한 재사용 거리(1025)를 활용할 수 있다. 본 발명의 다른 실시 예들은 시간에 따른 각각의 데이텀의 모든 액세스들에 대한 재사용 거리(1025)를 활용할 수 있다. 본 발명의 다른 실시 예들은 재사용 거리(1025)로써 재사용 거리 벡터로부터 가장 큰 값을 선택(그렇게 함으로써, 재사용 거리(1025)로써 벡터 보다 숫자를 사용)할 수 있다. 재사용 거리(1025)는 도 3의 키-벨류 저장소(320)에서 추적될 수 있고, 또는 재사용 거리(1025)는 키-벨류 저장소(320)에 대한 LRU 정보와 같은 다른 캐시 정보로부터 계산될 수 있다.
키-벨류 캐시 적중률(1020)이 도 1의 키-벨류 캐시 시스템(140)을 위해 계산될 수 있지만, 재사용 거리(1025)는 도 3의 키-벨류 저장소(320)를 위해 계산될 수 있다. 일반적으로, 키-벨류 캐시 적중률(1020)은 분산 데이터 시스템의 모든 서버들에서 상당히 일치하지만, 재사용 거리(1025)는 논의 대상의 서버에 따라 다를 수 있다. 이와 같이 본 발명의 일 실시 예에 따른 재사용 거리(1025)는 도 1의 서버(105)내에 도 3의 키-벨류 저장소(320)에 기반하여 계산될 수 있다. 본 발명의 다른 실시 예들은 서버(105)상의 모든 키-벨류 저장소들 또는 분산 데이터베이스 시스템에서 모든 키-벨류 저장소들에 기반하여 재사용 거리(1025)를 계산할 수 있다.
수신 회로(1005)는 또한 사용자가 선택한 서비스의 품질(1030)을 수신할 수 있다. 사용자가 선택한 서비스의 품질(1030)은 사용자가 개선하고자 하는 서비스의 특정 품질을 지정할 수 있다. 사용자가 개선하고자 하는 서비스의 예시적인 품질들은 시스템의 평균 레이턴시(latency)(쿼리(query)에 대한 응답이 생성되는 것이 평균적으로 얼마나 걸리는지) 또는 분산 데이터베이스 시스템의 모든 비용을 포함한다.
분산 데이터베이스 시스템의 각각의 구성(도 1의 키-벨류 캐시 시스템(140), 도 3의 키-벨류 저장소(320), 및 도 1의 저장 장치(120))은 비용 및 레이턴시를 갖는다. 상술된 바와 같이, 도 1의 메모리(115)는 일반적으로 액세스에 대해 가장 빠르지만, 많은 비용을 갖는다. 도 1의 SSD들(130, 및 135)은 일반적으로 도 1의 메모리(115)보다 느린 액세스를 갖지만, 비용은 상당히 적다. 도 1 의 저장 장치(120)는 종종 도 1의 SSD들(130, 및 135)보다 더 큰 저장 용량을 갖지만, 일반적으로 도 1의 메모리(115), 또는 SSD들(130, 및 135)보다 상당히 느린 액세스를 갖는다. 일반적으로, 레이턴시를 감소시키기 위해 시도하면 할수록, 모든 시스템의 비용은 더 커진다(예로서, 대부분의 사람은 제로(zero) 레이턴시에 가깝고, 비용이 없는 이상적인 시스템을 고려한다. 이러한 시스템은 현재 존재하지 않고, 그 설명은 비현실적이다.). 이와 같이, 최소의 레이턴시 및 비용은 모두 완벽히 만족될 수 없는 경쟁적인 목표들이다.
본 발명의 실시 예에 따른 멀티-레벨 캐시 시스템에서, 평균 레이턴시는 장치에 접근할 필요가 있는 가능성을 곱한 각 장치의 레이턴시를 합산하여 계산될 수 있다. i(식별자들)는 멀티-레벨 캐시 시스템의 ith(레벨)을 식별하고, 타깃 키에 대해 캐시가 액세스되는 순서로 넘버링된 것으로 가정한다. 이와 같이, 도 3의 멀티-레벨 캐시 시스템의 예시에서, 멀티-레벨 캐시 시스템은 두 개의 레벨들을 포함한다. 레벨 1은 도 1의 메모리(115)이고, 레벨 2는 도 1의 SSD(135)이다. Hi 및 Li는 각각 멀티-레벨 캐시 시스템의 특정 레벨에 대한 적중률 및 레이턴시를 나타낸다. 마지막으로, LDB는 도 1의 백엔드 데이터베이스(125)의 레이턴시를 나타낸다(더 정확하게, 도 1의 백엔드 데이터베이스(125)를 저장하는 도 1의 저장 장치(120)의 레이턴시를 나타낸다.). 멀티-레벨 캐시 시스템이 도 1의 백엔드 데이터베이스(125)에 더하여 두 개의 캐시 레벨들 만을 포함하는 경우, 멀티-레벨 캐시 시스템의 평균 레이턴시는 수학식 1과 같이 계산될 수 있다.
Figure 112016091197413-pat00001
수학식 1은 말로 설명하면, 타깃 키가 도 1의 키-벨류 캐시 시스템(140)에서 발견될 것에 대한 가능성 곱하기 도 1의 메모리(115)의 레이턴시, 이 것에 타깃 키가 도 1의 키-벨류 캐시 시스템(140)에서 발견되지 않았을 가능성 곱하기 타깃 키가 도 3의 키-벨류 저장소(320)에서 발견될 것에 대한 가능성 곱하기 도 1의 SSD(130)의 레이턴시 한 값을 더하고, 여기에 또, 타깃 키가 도 1의 키-벨류 캐시 시스템(140) 또는 도 3의 키-벨류 저장소(320)에서 발견되지 않았을 가능성 곱하기 도 1의 저장 장치(120)의 레이턴시 한 값을 더한 것으로 표현될 수 있다.
더 일반적으로, 전체 n 개의 캐시 레벨들을 갖는 멀티-레벨 캐시 시스템(도 1의 저장 장치(120)를 포함하지 않음)에서, 평균 레이턴시는 수학식 2와 같이 계산될 수 있다.
Figure 112016091197413-pat00002
본 발명의 실시 예에 따른 멀티-레벨 캐시 시스템에서, 총 소유 비용(total cost of ownership)은 그 레벨에서의 유닛들의 개수를 곱한 특정 레벨에 대한 하드웨어의 비용을 곱함으로써 (일반적으로)계산될 수 있다. 수학식 2에 표현된 바와 같이, UCi 및 Capi가 멀티-레벨 캐시 시스템의 ith 레벨에 유닛 비용 및 용량을 나타내고, UCDB 및 CapDB가 도 1의 저장 장치(120)의 유닛 비용 및 용량을 나타내는 경우, 총 소유 비용은 수학식 3과 같이 계산될 수 있다.
Figure 112016091197413-pat00003
총 소유 비용에 대한 이러한 계산은 추정된 것인데, 일반적으로 상이한 시간에 구입된 상이한 유닛들은 상이한 유닛 비용들을 갖고, 그리고 수학식 3은 다양한 구성 요소들에 전력을 공급하는데 필요한 전기의 비용을 고려하지 않는다. 하지만, 원한다면, 수학식 3은 이러한 변동을 고려하기 위해 변형될 수 있다. 이와 같이 수학식들은 단지 예시일 뿐이고, 본 발명의 다른 실시 예들은 다른 수학식들을 활용할 수 있다.
멀티-레벨 캐시 시스템의 레이턴시 및 비용을 정의하는 주어진 수학식들 및 주어진 키-벨류 캐시 적중률(1020), 재사용 거리(1025), 및 사용자가 선택한 서비스의 품질(1030), 정합 계산기(1010)는 도 1의 키-벨류 캐시 시스템(140), 및 도 3의 키-벨류 저장소(320)에 대해 "최적화" 크기들을 계산할 수 있다. "최적화" 라고 여겨지는 것은 사용자가 선택한 서비스의 품질에 의존함을 유의해야 한다. 예로서, 사용자가 일 밀리 세컨드(millisecond)의 레이턴시를 원하는 경우, 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320) 각각의 크기는 0.5 밀리세컨즈의 레이턴시를 원하던 시스템에 대한 각각의 크기들과 상이할 수 있다. 더 빠른 레이턴시 요청은 달성키 위해서는 상당히 더 많은 도 1의 메모리(115)를 요구할 것이며, 멀티-레벨 캐시 시스템의 전체 비용을 증가시킨다. 또는 사용자가 최적화 비용을 원하는 경우, 도 1의 SSD들(130, 및 135) 대 도 1의 메모리(115)의 감소된 비용 때문에, 시스템은 도 1의 키-벨류 캐시 시스템(140)에 보다는 도 3의 키-벨류 저장소(320)에 훨씬 더 많은 스토리지를 가질 수 있다.
정합 계산기(1010)는 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320)의 크기들을 본 발명의 실시 예에 따라 상이한 방법들로 “최적화”할 수 있다. 본 발명의 몇몇 실시 예들로서, 정합 계산기(1010)는 기준 카운트 와 재사용 거리(1025)를 비교하여 곡선을 계산할 수 있다. "기준 카운트"는 일반적으로 액세스된 특정 주소 및 키의 액세스 횟수를 나타낸다. 하지만, 정합 계산기(1010)가 상술된 곡선을 계산할 때, 곡선은 재사용 거리 대 특정 재사용 거리에 대한 주소들 또는 키들의 개수를 표시한다.
정합 계산기(1010)가 곡선을 일단 생성하면, 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320)에 대한 "최적화" 크기를 결정하기 위해, 정합 계산기(1010)는 곡선 아래의 영역을 계산하기 위해 적분 계산(integral calculus)을 사용할 수 있다. 본 발명의 다른 실시 예들에서, 정합 계산기(1010)는 "최적의" 솔루션에 단계적으로(stepwise) 이동하기 위한 선형 프로그래밍 기술들을 사용할 수 있다. 본 발명의 다른 실시 예들에서, 결과 시스템이 원하는 사용자가 선택한 서비스의 품질을 달성하는지(또는 향하여 이동하는지) 여부를 확인하기 위해 정합 계산기(1010)는 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320)에 제안된 크기들의 작은 변화들을 만들 수 있다. 또 다른 본 발명의 실시 예들로서, 정합 계산기(1010)는 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320)에 대한 크기들을 최적화하기 위해 기계 학습 기술들을 사용할 수 있다. 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320)에 대한 타깃 크기들을 계산하기 위한 또 다른 접근들 역시 가능하다.
예로서, 멀티-레벨 캐시 시스템의 평균 레이턴시가 1.1 밀리세컨즈라는 시나리오(scenario)를 고려한다. 사용자는 1.0 밀리세컨즈의 원하는 서비스의 품질을 선택할 수 있다. 멀티-레벨 캐시 시스템의 평균 레이턴시를 감소시키기 위해, 도 1 의 메모리(115)는 어느 정도 증가할 수 있고, 이는 메모리는 가장 작은 레이턴시를 가지며, 따라서 계산된 레이턴시에 전체적으로 가장 큰 영향을 미칠 것 같기 때문이다. 하지만, 도 3의 키-벨류 저장소(320)는 매우 작을 수 있고, 도 3의 키-벨류 저장소(320)의 크기의 증가는 멀티-레벨 캐시 시스템의 평균 레이턴시를 향상시킬 수 있다. 도 3의 키-벨류 저장소(320)의 크기의 증가의 비용은 도 1의 추가 메모리(115)의 추가의 비용보다 작을 수 있기 때문에, 도 3의 키-벨류 저장소(320)의 크기의 증가는 "최적화" 솔루션을 제공할 수 있다.
정합 계산기(1010)가 그것의 기능을 수행한 후, 정합 계산기(1010)는 타깃 키-벨류 캐시 크기(505) 및 타깃 키-벨류 저장소 크기(515)를 출력할 수 있다. 이러한 값들은 전송 회로(1015)에 의해 도 1의 서버(105)의 적절한 구성 요소들로 전달될 수 있다(또는, 로직(360)이 분산 데이터베이스 시스템의 다른 서버에 위치한 장비에 대한 계산들을 수행하는 경우, 다른 서버로 전달될 수 있다.). 적절한 구성 요소들은 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320)의 크기들을 조절하기 위해, 타깃 키-벨류 캐시 크기(505) 및 타깃 키-벨류 저장소 크기(515)를 사용할 수 있다.
정합 계산기(1010)는 키-벨류 저장소 만료 시간(expiration time)(1035)을 또한 계산할 수 있다. 키-벨류 저장소 만료 시간 (1035)이 큰 경우, 멀티-레벨 캐시 시스템에 제공될 수 있는 강등 정책(demotion policy)에도 불구하고, 일부 키-벨류 쌍들은 그들이 있어야 하는 것 보다 더 오래 도 3의 키-벨류 저장소(320)에 남아있을 수 있다. 이러한 도 3의 키-벨류 저장소(320)의 키-벨류 쌍들의 잔류가 반드시 피해를 주지는 않지만(비록 그것들의 존재가 다른 명칭 공간을 위한 키-벨류 저장소로 할당될 수 있는 공간을 차지할 수 있지만), 키-벨류 쌍들이 필요하지 않은 경우, 그들은 레이턴시에 무시해도 될 정도의 영향과 함께 키-벨류 저장소(320)로부터 제거될 수 있다.
정합 계산기(1010)는 키-벨류 쌍들이 여러 방법으로 도 3의 키-벨류 저장소(320)에 너무 오래 머물러있는지에 대해 확인할 수 있다. 본 발명의 몇몇 실시 예들로서, 정합 계산기(1010)는 몇몇 타깃 데이터에 대한 재사용 거리(1025)가 몇몇 임계치보다 일상적으로 높은지에 대해 확인할 수 있다. 타깃 데이터에 대한 재사용 거리(1025)가 몇몇 임계치보다 높은 경우, 타깃 데이터는 만료된 키-벨류 쌍의 일부일 수 있다. 본 발명의 다른 실시 예들로서, 정합 계산기(1010)는 다양한 데이터가 액세스된 이후로 얼마나 시간이 경과되었는지에 대해 알아볼 수 있다: 다시, 그것이 일부 임계치보다 더 길면, 타깃 데이터는 만료될 수 있다. 키-벨류 쌍들이 도 3의 키-벨류 저장소(320)에 너무 오래 존재하는 경우, 정합 계산기(1010)는 그것들 및 다른 키-벨류 쌍들을 도 3의 키-벨류 저장소(320)로부터 만료를 강제시키기 위해, 키-벨류 저장소 만료 시간(1035)을 설정할 수 있다. 예로서, 키-벨류 저장소 만료 시간(1035)은 도 3의 키-벨류 저장소(320)로부터 만료되는 마지막 초(second) 내에 액세스되지 않은 임의의 키-벨류 쌍들을 강제하기 위해 1초로 설정할 수 있다.
도 10은 키-벨류 캐시 적중률(1020) 및 재사용 거리(1025)를 수신하는 수신 회로(1005)를 보여주지만, 본 발명의 다른 실시 예들 또한 가능하다. 예로서, 수신 회로(1005)는 키-벨류 캐시 적중률(1020) 및 재사용 거리(1025)를 계산하기 위해 사용되는 기본적인 데이터를 수신할 수 있고, 통계 계산기(statistics calculator)(1040)는 기본적인 데이터로부터 이러한 통계를 계산할 수 있다. 본 발명의 다른 실시 예들은 두 개의 개념들을 혼합할 수 있다: 예로서, 수신 회로(1005)는 키-벨류 캐시 적중률(1020) 및 키-벨류 저장소에 대한 LRU 정보를 수신할 수 있고, 통계 계산기(1040)는 재사용 거리(1025)만을 계산할 수 있다. 본 발명의 몇몇 실시 예들은 통계 계산기(1040)를 포함하지 않을 수 있기 때문에, 통계 계산기(1040)는 파선으로 도시된다.
도 1의 키-벨류 캐시 시스템(140)를 이용하는 하나의 명칭 공간만이 존재하는 경우, 정합 계산기(1010)의 동작은 비교적 간단하다: 최악의 경우에는, 정합 계산기(1010)는 전체 솔루션들이 비교적 간단한, 많은 변수들을 갖는 수학식들을 풀이한다. 예로서, 사용자가 선택한 서비스의 품질(1030)은 특정 레이턴시 벨류이고, 시스템이 제공할 수 있는 가장 좋은 솔루션은 도 1의 키-벨류 캐시(140)에 모든 사용 가능한 메모리를 명칭 공간으로, 다음에 도 3의 키-벨류 저장소(320)에 모든 사용 가능한 스토리지로 할당하는 것이다. 이런 조합이 충분한 쿼리 속도를 제공하지 못하면, 시스템은 추가적인 메모리를 요구할 것이다.
하지만 시스템이 하나보다 많은 명칭 공간을 지원하는 경우, 상황은 더욱 복잡해진다. 예로서, 시스템이 도 1의 키-벨류 캐시(140)에 모든 사용 가능한 메모리를 하나의 명칭 공간으로 할당하는 경우, 두 번째 명칭 공간의 레이턴시는 불충분할 가능성이 있다. (이 결론은 또한 제1 명창공간이 사용자가 선택한 레이턴시를 만족시키기 위해 필요한 것보다 그것에 할당된 도 1의 키-벨류 캐시(140)의 더 많은 메모리를 가질 거라는 사실을 무시한다.) 이와 같이, 많은 명칭 공간들이 포함되는 경우, 시스템은 서로에 대한 명칭 공간들의 요구들을 균형 잡는 것을 필요로 할 수 있다.
동시에 명칭 공간들의 요구들을 처리하기 위해, 정합 계산기(1010)는 많은 수학식들을 동시에 최적화하기 위해 시도할 수 있다. 예로서, 정합 계산기는 다중 변수들과 함께 복수의 수학식들을 풀기 위해서 선형 프로그래밍 기술들을 사용할 수 있다. 또는, 정합 계산기(1010)는 다차원 곡선에서 공간(둘 이상의 차원)을 결정하기 위해 적분을 사용할 수 있다. 또는 정합 계산기(1010)는 많은 명칭 공간들을 동시에 최적화하기 위해 기계 학습 기술들을 사용할 수 있다.
각 명칭 공간은 명칭 공간에 할당될 수 있는 전체 비용과 명칭 공간에 대한 원하는 레이턴시와 같은 같은. 자신의 시스템 요구사항들을 특정할 수 있다. 각 명칭 공간은 정합 계산기(1010)가 다양한 명칭 공간들의 상대적 중요성을 결정 가능케 하는 가중치를 또한 특정할 수 있다.
멀티-레벨 캐시 시스템은 가중치들을 사용하여 공유/분할될 수 있다(예로서, 본원에서 참고로 인용되는, Choi, Inseok Stephen, Greedy Coordinate Descent CMP Multi-Level Cache Resizing(2014). 전력 효율 이득(Power efficiency gains, PEG) 또는 유틸리티(utility)는 알고리즘이 각 캐싱-레벨 용량의 할당을 결정할 수 있도록 제공된 가중치들을 기반으로 재계산될 수 있다.
정합 계산기(1010)는 모든 명칭 공간들에 대한 멀티-레벨 캐시 시스템을 최적화 하기 위한 시도로써, 상술된 바와 같은, 각 명칭 공간에 할당하기 위해 키-벨류 캐시 시스템(140)내 메모리의 양, 및 키-벨류 저장소들(320, 325, 330, 및/또는 335)내 공간의 양을 결정할 수 있다. 리소스들의 충돌이 있는 경우-즉, 모든 명칭 공간 요구들이 동시 만족될 수 없는 경우, 정합 계산기(1010)는 어떤 명칭 공간들 요구들이 첫 번째로 만족되어야 하는지 우선순위를 매기기 위해(따라서 중요성의 상대적 순서대로 명칭 공간들에 대해 원하는 서비스의 품질들을 적어도 제공하기 위해 시도하는 것) 가중치들을 사용할 수 있다 그리고, 명칭 공간 요구들이 시간에 따라 변하는 경우, 이에 따라 정합 계산기(1010)는 멀티-레벨 캐시 시스템의 레벨들의 할당을 다시 계산할 수 있다.
도 11은 본 발명의 실시 예에 따라 도 3의 멀티-레벨 캐시 시스템의 키-벨류 캐시 시스템 및 키-벨류 저장소의 용량들을 계산하는 적중률 예측기의 사용을 보여준다. 도 11에서, 적중률 예측기(1105)는 정합 계산기(1010)의 일부분일 수 있다. (정합 계산기(1010)는 상술된 다른 계산들을 수행하기 위해, 곡선 아래의 면적을 계산하기 위한 적분기(1110), 또는 도 10의 사용자가 선택한 서비스의 품질(1030)을 “최적화”하기 위한 선형 프로그래머(programmer)(1115)와 같은 다른 구성요소들을 또한 포함할 수 있다). 적중률 예측기(1105)는 도 1의 키-벨류 캐시 시스템(140)에 대해 제안된 크기에 덧붙여, 도 10의 키-벨류 캐시 적중률(1020) 및 도 10의 재사용 거리(1025)를 가지고서, 적중률이 도 1의 키-벨류 캐시 시스템에 대해 어떻게 될지 예측할 수 있다. 정합 계산기(1010)는 키-벨류 캐시 시스템(140)에 대해 제안된 크기에 변화를 줄 수 있고, 멀티-레벨 캐시 시스템이 키-벨류 캐시 시스템(140)의 상이한 크기들로 수행하는 방법을 참조할 수 있다. 도 10의 사용자가 선택한 서비스의 품질(1030)과 조합된 이러한 정보는 도 1의 키-벨류 캐시 시스템(140)에 대해 “최적화” 크기를 선택하기 위해 사용될 수 있다.
전술한 바와 같이, 도 10의 재사용 거리(1025)는 도 3의 키-벨류 저장소(320)에 대한 LRU 정보로부터 계산될 수 있다. 전처리(1120)는 LRU 정보를 가져갈 수 있고, 정합 계산기(1010)에서 사용하기 위해 도 10의 재사용 거리(1025)를 생성할 수 있다.
후처리(1130)는 정합 계산기(1010)에 의해 생성된 정보를 가지고 갈 수 있고(특히, 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320)에 대한 타깃 크기들), 제안된 멀리-레벨 캐시 시스템에 대한 가격(1135) 및 레이턴시(1140)를 계산할 수 있다. 후처리(1130)는 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320)에 대해 새로운 크기들이 주어진, 멀티-레벨 캐시 시스템을 “최적화”하기 위해 정합 계산기(1010)에 의해 사용되는 수학식들을 단순히 적용할 필요가 있다.
도 12는 도1의 키-벨류 캐시 시스템(140) 및 멀티-캐시 시스템의 도 3의 키-벨류 저장소(320)의 용량들을 계산함에 있어서, 도 1의 키-벨류 캐시 시스템(140)의 키-벨류 쌍들의 개수 대 도 3의 키-벨류 저장소(320)의 재사용 거리(1025)의 예시적인 그래프를 보여준다.
도 12에서, 도 1의 키-벨류 캐시 시스템(140)에 복수의 키-벨류 쌍들의 개수 대 도 10의 재사용 거리(1025)를 플로팅(plotting)하여, 곡선(1205)이 도시된다. 곡선(1205) 아래의 영역을 계산하기 위해 적분함으로써, 도 10의 정합 계산기(1010)는 도 1의 메모리(115)에서 도 1의 키-벨류 캐시 시스템(140)으로 할당을 조정하는 방법을 결정할 수 있다.
도 12에 도시된 상기 설명 및 실시 예에도 불구하고, 사실 방정식들에는 두 변수들이 있다. 하나는 도 1의 키-벨류 캐시 시스템(140) 또는 도 3의 키-벨류 저장소(320)인 멀티-레벨 캐시 시스템의 레벨의 용량이다. 다른 하나는 도 10의 재사용 거리(1025) 또는 도 10의 키-벨류 캐시 적중률(1020)이다. 이러한 변수들 중 하나는 의도된 목적에 의존하여, 다른 하나를 위해 해결될 수 있다. 예로서, 도 10의 재사용 거리(1025) 또는 도 10의 키-벨류 캐시 적중률(1020)을 변수로 취급하여, 곡선(1205) 아래의 공간을 적분하는 것은 캐시 시스템의 레벨에 대한 최적의 용량을 계산하기 위해 시도할 수 있다. 대신에, 용량을 변수로서 다루어, 도 10의 재사용 거리(1025) 또는 도 10의 키-벨류 캐시 적중률(1020)은 최적화될 수 있다.
도 10의 정합 계산기(1010)는 곡선(1205)의 왼쪽 아래의 영역(1210)을 적분할 수 있다. 곡선(1205)의 왼쪽 아래 영역(1210)은 얼마나 많은 도 1의 메모리(115)가 키-벨류 캐시 시스템(140)으로 할당되어야 하는지를 결정할 수 있다. 대신에, 도 10의 정합 계산기(1010)는 곡선(1205)의 오른쪽 아래 영역(1215)을 적분할 수 있다. 곡선(1205)의 오른쪽 아래 영역(1215)은 도 1의 메모리(115)의 초과 용량이 도 1의 키-벨류 캐시 시스템(140)으로 얼마나 할당되었는지 결정할 수 있다.
상기 설명이 도 1의 키-벨류 캐시 시스템(140)으로 할당되는 도 1의 메모리(115)의 양을 계산하는 것에 초점을 맞추고 있지만, 동일한 분석은 도 3의 키-벨류 저장소(320)로 할당하기 위한 도 1의 SSD(130)의 스토리지의 양을 결정하기 위해 적용될 수 있다. 유일한 차이점은 도 1의 키-벨류 캐시 시스템(140)의 키-벨류 쌍의 개수 대 도 10의 재사용 거리(1025)의 연관성을 플로팅하는 대신에, 곡선(1205)은 도 3의 키-벨류 저장소(320)의 키-벨류 쌍의 개수 대 도 10의 재사용 거리(1025)의 연관성을 플로팅할 수 있다.
도 13a 및 13b는 본 발명의 실시 예에 따라, 도 7의 타깃 키(715)와 관련된 타깃 벨류에 대한 요청을 처리하기 위해, 도 3의 멀티-레벨 캐시 시스템에 대한 예시적인 절차에 대한 순서도를 보여준다.
도 13a에서, 블록(1305)에서, 도 3의 글루 로직(365)은 도 7의 타깃 키(715)와 도 7의 요청(705)을 수신할 수 있다. 블록(1310)에서, 도 3의 글루 로직(365)은 도 7의 타깃 키(715)가 도 1의 키-벨류 캐시 시스템(140)에 있는가에 관해 도 1의 키-벨류 캐시 시스템(140)에 문의를 할 수 있다. 이는 도 7의 요청(720)을 도 1의 키-벨류 캐시 시스템(140)으로의 포워딩(forwarding) 및 도 7의 응답(725)의 수신을 포함할 수 있다. 도 7의 응답(725)이 도 7의 타깃 키(715)가 도 1의 키-벨류 캐시 시스템(140)에서 발견됨을 나타내는 경우, 블록(1315)에서, 도 3의 글루 로직(365)은 도 1의 키-벨류 캐시 시스템(140)으로부터 타깃 벨류로 액세스할 수 있다(사실, 이 액세스는 도 7의 긍정적 응답(725)을 전송하기 위해 도 1의 키-벨류 캐시 시스템(140)에 의해 수행되었을 것이다).
도 1의 키-벨류 캐시 시스템(140)이 도 3의 글루 로직(365)으로 도 7의 부정적 응답(725)을 전송하는 경우, 블록(1320)에서(도 13b) 도 3의 글루 로직(365)은 도 7의 타깃 키(715)가 도 3의 키-벨류 저장소(320)에 있는가에 관해 도 3의 키-벨류 저장소(320)에 의문을 제기할 수 있다. 이것은 도 7의 요청(730)을 도 3의 키-벨류 저장소(320)로 포워딩 및 도 7의 요청(735)의 수신을 포함할 수 있다. 도 7의 응답(735)이 도 7의 타깃 키(715)가 도 3의 키-벨류 저장소(320)에서 발견됨을 나타내는 경우, 블록(1325)에서 도 3의 글루 로직(365)은 도 3의 키-벨류 저장소(320)로부터 타깃 벨류로 액세스할 수 있다(사실, 이 액세스는 도 7의 긍정적 응답(725)을 전송하기 위해 도 3의 키-벨류 저장소(320)에 의해 수행되었을 것이다).
도 7의 타깃 키(715)가 도 3의 키-벨류 저장소(320)에서 발견되는 경우, 블록(1330)에서, 도 3의 글루 로직(365)은 도 3의 키-벨류 저장소(320)로부터 도 1의 키-벨류 캐시 시스템(140)으로 키-벨류 쌍을 상승할 수 있다. 블록 (1330)의 실행이 도 6을 참조하여 상술된 바와 같이, 상승 정책에 기반하여 키-벨류 쌍이 상승에 대한 자격이 있는지 여부에 의존하기 때문에, 블록(1330)은 파선으로 도시된다. 다음에, 블록(1335)에서, 도 3의 글루 로직(365)은 도 3의 키-벨류 저장소(320)로부터 키-벨류 쌍을 삭제할 수 있다. 물론, 블록(1335)은 오직 멀티-레벨 시스템이 배타적일 때만 필요하고, 멀티-레벨 캐시 시스템이 포괄적일 때에는, 키-벨류 쌍은 도 3의 키-벨류 저장소(320)에 남아있을 수 있다.
반면에, 도 3의 키-벨류 저장소(320)가 도 3의 글루 로직(365)으로 도 7의 부정적 응답(735)을 전송하는 경우, 블록(1340)에서, 도 3의 글루 로직(365)은 도 1의 백엔드 데이터베이스(125)로부터 타깃 벨류를 액세스할 수 있다. 이는 도 7의 요청(740)을 도 1의 백엔드 데이터베이스(125)로 포워딩할 수 있고, 도 7의 응답(745)을 수신할 수 있다. 다음에, 멀티-레벨 캐시가 배타적 또는 포괄적인지 여부에 기반하여 그리고 키 쌍이 상승에 대한 자격이 있는 경우, 블록(1345)에서, 글루 로직(365)은 멀티 레벨 캐시의 하나 이상의 레벨들에 키를 추가할 수 있다.
도 14a 및 14b는 본 발명의 실시 예에 따른 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 멀티-레벨 캐시 시스템의 도 3의 키-벨류 저장소(320)를 구성하기 위한 도 3의 멀티-레벨 캐시 시스템에 대한 예시적인 절차의 순서도를 보여준다.
도 14a에서, 블록(1405)에서, 도 3의 멀티-레벨 캐시 매니저(355)는 도 1의 키-벨류 캐시 시스템(140)의 용량(좀 더 구체적으로, 도 1의 메모리(115)의 용량)을 결정할 수 있다. 블록(1410)에서, 도 3의 멀티-레벨 캐시 매니저(355)는 도 3의 키-벨류 저장소들(320, 325, 330, 및 335)의 용량(좀 더 구체적으로, 도 1의 SSD들(130 및 135)의 용량)을 결정할 수 있다. 블록(1415)에서, 도 3의 멀티-레벨 캐시 매니저(355)는 도 1의 서버(105)를 포함하여 분산 데이터베이스 시스템을 활용하는 다양한 명칭 공간들의 요건들을 결정할 수 있다. 블록(1420)에서, 도 3의 멀티-레벨 캐시 매니저(355)는 각 명칭 공간에 대해 도 1의 키-벨류 캐시 시스템(140)에서 사용하기 위해 할당할 도 1의 메모리(115)의 양을 결정할 수 있다. 블록(1425)에서, 도 3의 멀티-레벨 캐시 매니저(355)는 각 명칭 공간에 도 1의 키-벨류 저장소들(320, 325, 330, 및 335)에서 사용하기 위해 할당될 도 1의 SSD들(130 및 135)의 양을 결정할 수 있다. 블록(1430)에서, 도 3의 멀티-레벨 캐시 매니저(355)는 각 명칭 공간에 대해 도 1의 메모리(115)의 할당을 수행할 수 있고, 블록(1435)에서, 도 3의 멀티-레벨 캐시 매니저(255)는 각 명칭 공간에 대해 도 1의 SSD들(130 및 135)의 할당을 수행할 수 있다.
블록(1440)(도 14b)에서, 도 3의 멀티-레벨 캐시 매니저(355)는 상승 정책을 수립할 수 있다. 블록(1445)에서, 도 3의 멀티-레벨 캐시 매니저(355)는 강등 정책을 수립할 수 있다. 블록(1450)에서, 도 3의 멀티-레벨 캐시 매니저(355)는 포괄 정책을 수립할 수 있다. 화살표(1455)로 나타낸 바와 같이, 해당되는 경우, 제어는 도 3의 멀티-레벨 캐시 매니저(355)가 도 1의 메모리(115) 및 SSD들(130 및 135)을 재분배하는 것을 가능하게 하기 위해서, 도 14a의 블록(1415)으로 되돌아갈 수 있다.
도 15a 및 15b는 본 발명의 실시 예에 따른 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 멀티-레벨 캐시 시스템의 도 3의 키-벨류 저장소(320)의 용량들을 계산하기 위한 예시적인 절차의 순서도이다.
도 15a에서, 블록(1505)에서, 도 3의 로직(360)은 도 10의 키-벨류 캐시 적중률(1020) 및 도 10의 재사용 거리(1025)를 수신할 수 있다. 블록(1510)에서, 도 3의 로직(360)은 도 10의 사용자가 선택한 서비스의 품질(1030)을 수신할 수 있다. 블록(1515)에서, 도 10의 사용자가 선택한 서비스의 품질(1030)을 “최적화”하는 도 10의 정합 계산기(1010)는 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320)에 대한 크기들을 계산할 수 있다.
이 시점에서, 상이한 접근들은 가능하다. 본 발명의 몇몇 실시 예에서, 블록(1520)에서, 도 3의 로직(360)은 도 1의 키-벨류 캐시 시스템(140)의 크기를 바꿀 수 있고(증가 또는 감소시킴으로써), 블록(1525)에서, 도 3의 로직(360)은 도 3의 키-벨류 저장소(320)의 크기를 (증가 또는 감소시킴으로써)변화시킬 수 있다. 그렇지 않으면, 본 발명의 다른 실시 예에 따라서, 블록(1530)에서, 도 3의 로직(360)은 도 1의 키-벨류 캐시 시스템(140) 및/또는 도 3의 키-벨류 저장소(320)에 대한 계산된 크기들을 출력할 수 있고, (도 3의 멀티-레벨 캐시 매니저(355)와 같은) 다른 구성 요소로 멀티-레벨 캐시 시스템의 구성의 조정을 남길 수 있다.
블록(1515) 이후에 행하여진 접근에도 불구하고, 블록(1535)(도 15b)에서, 도 10의 정합 계산기(1010)는 도 10의 키-벨류 저장소 만료 시간(1035)을 계산할 수 있다. 이 시점에서, 다시, 상이한 접근들이 가능하다. 본 발명의 몇몇 실시 예들에서, 블록(1540)에서, 도 3의 로직(360)은 도 10의 키-벨류 저장소 만료 시간(1035)에 대해 도 3의 키-벨류 저장소(320)를 지시할 수 있다. 그렇지 않으면, 본 발명의 다른 실시 예들에서, 블록(1545)에서, 도 3의 로직(360)은 도 10의 키-벨류 저장소 만료 시간(1035)을 출력할 수 있고, (도 3의 멀티-레벨 캐시 매니저(355)와 같은) 다른 구성 요소로 멀티-레벨 캐시 시스템의 구성의 조정을 남길 수 있다.
도 16은 사용자가 선택한 서비스의 품질과 관련된 도 15a 및 15b의 예시적인 절차의 세부 사항을 보여준다. 도 16에서, 본 발명의 몇몇 실시 예들에 따라, 블록(1605)에서, 로직(360)은 사용자가 선택한 레이턴시를 수신할 수 있고, 블록(1610)에서, 사용자가 선택한 레이턴시를 “최적화”하는 도 10의 정합 계산기(1010)는 도 1의 키-벨류 캐시 시스템(140) 및 도 3의 키-벨류 저장소(320)에 대한 크기들을 계산할 수 있다. 그렇지 않으면, 본 발명의 다른 실시 예들에 따라, 블록(1615)에서, 로직(360)은 사용자가 선택한 비용을 수신할 수 있고, 블록(1620)에서, 도 10의 정합 계산기(1010)는 사용자가 선택한 비용을 “최적화”하는 도 1의 키-벨류 캐시 시스템(140) 및 도3의 키-벨류 저장소(320)에 대한 크기들을 계산할 수 있다.
도 17은 본 발명의 실시 예에 따라, 도 3의 멀티-레벨 캐시 시스템에서 도 10의 키-벨류 캐시 적중률(1020) 및 도 10의 키-벨류 저장소 재사용 거리(1025)를 계산하기 위한 예시적인 절차의 순서도를 보여준다.
도 17에서, 블록(1705)에서, 도 10의 수신 회로(1005)는 도 1의 키-벨류 캐시 시스템(140)에 대한 데이터 및 도 3의 키-벨류 저장소(320)에 대한 데이터를 수신할 수 있다. 블록(1710)에서, 통계 계산기(1040)는 도 1의 키-벨류 캐시 시스템(140)에 대한 데이터로부터 키-벨류 캐시 적중률(1020)을 계산할 수 있다. 블록(1715)에서, 통계 계산기(1040)는 도 3의 키-벨류 저장소(320)에 대한 데이터로부터 키-벨류 저장소 재사용 거리(1025)를 계산할 수 있다.
도 13a 내지 17에서, 본 발명의 몇몇 실시 예들이 개시된다. 하지만, 당업자는 블록들의 순서를 변경함으로써, 블록들을 생략함으로써, 또는 도면들에 도시되지 않은 링크들을 포함함으로써 본 발명의 다른 실시 예들 또한 가능한 것을 알 수 있다. 순서도들의 모든 이러한 변형들은 명백한 설명 여부에 관계없이, 본 발명의 실시 예들로 간주된다.
다음의 설명은 본 발명의 특정 양상들이 구현될 수 있는 적합한 기계 또는 기계들의 간략한, 일반적인 설명을 제공하도록 의도된다. 기계 또는 기계들은 키보드(keyboard)들, 마우스들, 등과 같은 일반적인 입력 장치들뿐만 아니라, 가상 현실(virtual reality, VR) 환경, 생체 측정 피드백, 또는 다른 입력 신호들과의 상호작용하는 다른 기계들로부터의 입력에 의해 제어될 수 있다. 본원에서 사용되는 바와 같이, “기계”는 단일 기계, 가상 기계 또는 기계들, 가상 기계들 또는 함께 동작하는 장치들과 통신 연결되는 시스템을 광범위하게 포함하기 위한 용어이다. 예시적인 기계들은 개인용 컴퓨터들, 워크스테이션(workstation)들, 서버들, 휴대용 컴퓨터들, 핸드 헬드 장치(handheld device)등 뿐만 아니라, 자동차들, 기차들 기차들 등과 같은 대중 교통들 또는 개인 교통와 같은 교통 장치들을 포함한다.
기계 또는 기계들은 프로그램할 수 있는 또는 프로그램할 수 없는 로직 장치들 또는 어레이들과 같은 임베디드(embedded) 컨트롤러들, 응용 주문형 집적 회로(Application Specific Integrated Circuits, ASICs), 임베디드 컴퓨터들, 스마트 카드들 등을 포함할 수 있다. 기계 또는 기계들은 네트워크 인터페이스, 모뎀(modem) 또는 다른 통신 커플링과 같은, 하나 이상의 원격 장치들로의 하나 이상의 연결들을 활용할 수 있다. 기계들은 물리적 연결 및/또는 인트라넷(intranet), 인터넷(Internet), 근거리 통신망, 광역 통신망 등과 같은 논리 네트워크의 방법에 의해 상호 접속될 수 있다. 당업자는 네트워크 통신이 무선 주파수(radio frequency, RF), 위성, 마이크로파(microwave), 미국 전기 전자 학회(Institute of Electrical and Electronics Engineers, IEEE) 802.11, 블루투스®(Bluetooth®), 광, 적외선, 케이블, 레이저 등을 포함하는 다양한 유선 및/또는 무선 장거리 또는 단거리 케리어(carrier)들 및 프로토콜들을 활용하는 것을 이해할 수 있다.
본 발명의 실시 예는 업무들을 수행하거나 추상 데이터 유형들 및/또는 로우-레벨 하드웨어 컨텍스트들을 정의한 기계에서 기계 결과에 의해 액세스될 때 기능들, 과정들 데이터 구조들, 어플리케이션 프로그램들 등을 포함하는 관련된 데이터와 함께 또는 관련된 데이터를 참조하여 설명될 수 있다. 관련 데이터는 휘발성 및/또는 RAM, ROM등과 같은 불휘발성 메모리, 또는 다른 저장 장치들 및 하드-드라이브들, 플로피 디스크(floppy disk)들, 광 기억 장치, 테이프들, 플래시 메모리, 메모리 스틱들, 디지털 비디오 디스크들, 생물 디스크 등을 포함하는 그들의 관련 저장 매체에 저장될 수 있다. 관련 데이터는 물리적 및/또는 논리적 네트워크, 패킷(packet)들, 시리얼 데이터, 병렬 데이터, 전파 신호들의 형태를 포함하는 전송 환경들을 통해 전달될 수 있고, 압축된 또는 암호화된 포맷으로 사용될 수 있다. 관련 데이터는 분산 환경에서 사용될 수 있고, 머신 액세스를 위해 국부적 및/또는 원격으로 저장될 수 있다.
본 발명의 실시 예는 하나 이상의 프로세서들에 의해 실행 가능한 명령어들로 구성되는 불휘발성 머신 판독 가능한 매체를 포함할 수 있고, 명령어들은 기재된 바와 같이 본 발명의 요소들을 수행하기 위한 명령어들로 구성된다.
본 발명의 실시 예들은 제한 없이, 다음의 문장들로 확장될 수 있다.
문장 1. 본 발명의 실시 예는 멀티-레벨 캐시 시스템을 포함하고, 멀티-레벨 캐시 시스템은:
서버;
서버에 프로세서;
서버에 메모리;
메모리에 설치되고, 제1 키-벨류 쌍을 저장하기 위해 동작하는 키-벨류 캐시 시스템;
제2 키-벨류 쌍을 저장하기 위해 동작하는 키-벨류 저장소를 포함하는 솔리드 스테이트 드라이브(SSD);
백엔드 데이터베이스를 포함하는 제2 저장 장치를 포함하되,
키-벨류 저장 동작은 메모리의 키-벨류 캐시 시스템에 대한 제2 레벨 캐시로서 동작한다.
문장 2. 문장 1에 따른 멀티-레벨 캐시 시스템을 포함하는 본 발명의 실시 예는 멀티-레벨 캐시 매니저를 포함한다.
문장 3. 본 발명의 실시 예는 문장 2에 따른 멀티-레벨 캐시 시스템을 포함하고,
키-벨류 캐시 시스템은 제1 명칭 공간 및 제2 명칭 공간과 함께 사용되고,
멀티-레벨 캐시 매니저는 얼마나 많은 양의 메모리가 제1 명칭 공간 및 제2 명칭 공간에 대한 키-벨류 캐시 시스템에 의해 사용되어야 하는지 동적으로 할당하기 위해 동작한다.
문장 4. 본 발명의 실시 예는 문장 3에 따른 멀티-레벨 캐시 시스템을 포함하고, 멀티-레벨 캐시 매니저는 얼마나 많은 SSD가 제1 명칭 공간 및 제2 명칭 공간을 위한 키-벨류 저장소로서 사용되는지 동적으로 할당하기 위해 더 동작한다.
문장 5. 본 발명의 실시 예는 문장 2에 따른 멀티-레벨 캐시 시스템을 포함하고, 멀티-레벨 캐시 매니저는 백엔드 데이터베이스에서 키-벨류 저장소로 제2 키-벨류 쌍을 상승시키기 위한 시기 및 제2 키-벨류 쌍을 키-벨류 저장소에서 키-벨류 캐시 시스템으로 상승하기 위한 시기를 결정하기 위해 동작한다.
문장 6. 본 발명의 실시 예는 문장 2에 따른 멀티-레벨 캐시 시스템을 포함하고, 멀티-레벨 캐시 매니저는 제 키-벨류 캐시 시스템에서 키-벨류 저장소로1 키-벨류 쌍을 상승 및 키-벨류 저장소에서 백엔드 데이터베이스로 제2 키-벨류 쌍을 강등하기 위한 시기를 결정하기 위해 동작한다.
문장 7. 본 발명의 실시 예는 타깃 키와 관련된 타깃 벨류에 대한 요청을 수신하기 위한 글루 로직을 더 포함하는 문장 1에 따른 멀티-레벨 캐시 시스템을 포함한다.
문장 8. 본 발명의 실시 예는 문장 7에 따른 멀티-레벨 캐시 시스템을 포함하고, 글루 로직은 장치 드라이버로부터 요청을 수신하기 위해 동작한다.
문장 9. 본 발명의 실시 예는 문장 7에 따른 멀티-레벨 캐시 시스템을 포함하고, 글루 로직은 키-벨류 저장소와 관련된 신텍스를 이용하여 요청을 변환하기 위한 변환기를 포함한다.
문장 10. 본 발명의 실시 예는 문장 7에 따른 멀티-레벨 캐시 시스템을 포함하고, 글루 로직은 키-벨류 저장소에 액세스하기 위한 함수들의 라이브러리를 포함한다.
문장 11. 본 발명의 실시 예는 문장 7에 따른 멀티-레벨 캐시 시스템을 포함하고, 글루 로직은 타깃 키와 관련된 타깃 벨류에 대한 요청을 수신하고, 키-벨류 캐시 시스템에 대한 요청을 지시하도록 동작한다.
문장 12. 본 발명의 실시 예는 문장 11에 따른 멀티-레벨 캐시 시스템을 포함하고, 글루 로직은 키-벨류 캐시 시스템이 요청을 만족시키기 못하는 경우, 키-벨류 저장소로 요청을 지시하도록 더 동작한다.
문장 13. 본 발명의 실시 예는 문장 12에 따른 멀티-레벨 캐시 시스템을 포함하고, 글루 로직은 키-벨류 저장소가 요청을 만족시키기 못하는 경우, 요청을 백엔드 데이터베이스에 대한 요청을 지시하도록 더 동작한다.
문장 14. 본 발명의 실시 예는 문장 7에 따른 멀티-레벨 캐시 시스템을 더 포함하고, 글루 로직은 제2 키-벨류 쌍에 대한 만료 날짜를 설정하도록 동작한다.
문장 15. 본 발명의 실시 예는 문장 1에 따른 멀티-레벨 캐시 시스템을 더 포함하고, 키-벨류 캐시 시스템은 맴캐시된 소프트웨어를 포함한다.
문장 16. 본 발명의 실시 예는 문장 1에 따른 멀티-레벨 캐시 시스템을 더 포함하고, 키-벨류 저장소는 키 및 벨류 인터페이스를 포함하고, 타킷 키를 제공하자마자 곧 키-벨류 저장소는 타깃 벨류를 반환할 수 있다.
문장 17. 본 발명의 실시 예는 문장 16에 따른 멀티-레벨 캐시 시스템을 포함하고, SSD는 타깃 벨류를 저장하여 타깃 키 및 SSD의 어드레스 사이의 매핑을 포함한다.
문장 18. 본 발명의 실시 예는 문장 1에 따른 멀티-레벨 캐시 시스템을 포함하고, SSD는 다형성 장치 커널을 포함한다.
문장 19. 본 발명의 실시 예는 문장 18에 따른 멀티-레벨 캐시 시스템을 포함하고, 다형성 장치 커널은 키-벨류 저장소에 대한 인터페이스를 동적으로 변경할 수 있다.
문장 20. 본 발명의 실시 예는 문장 1에 따른 멀티-레벨 캐시 시스템을 포함하고, 키-벨류 저장소는 키-벨류 캐시 시스템에 저장된 제1 키-벨류 쌍을 포함할 수 있다.
문장 21. 본 발명의 실시 예는 문장 1에 따른 멀티-레벨 캐시 시스템을 포함하고, 키-벨류 저장소는 키-벨류 캐시 시스템에 저장된 제1 키-벨류 쌍을 제외할 수 있다.
문장 22. 본 발명의 실시 예는 문장 1에 따른 멀티-레벨 캐시 시스템을 포함하고, 멀티-레벨 캐시 시스템은
분산 백엔드 데이터베이스를 포함하는 백엑드 데이터베이스; 및
분산 백엔드 데이터베이스의 일부를 포함하는 제2 저장 장치를 포함한다.
문장 23. 본 발명의 실시 예에 따른 방법은:
타깃 벨류에 액세스하기 위해 타깃 키를 포함하는 요청을 수신하는 단계;
타깃 키를 포함하는 키-벨류 쌍이 키-벨류 캐시에 존재하는지에 대해 판단하는 단계;
타깃 키를 포함하는 키-벨류 쌍이 키-벨류 캐시에 존재하지 않는 경우, 타깃 키를 포함하는 키-벨류 쌍이 키-벨류 저장소에 존재하는지에 대해 판단하는 단계; 및
키-벨류 쌍이 키-벨류 저장소에 존재하는 경우, 타깃 키를 이용하여 타깃 ?벨류 쌍으로부터 타깃 벨류에 액세스하는 단계를 포함한다.
문장 24. 본 발명의 실시 예는 키-벨류 쌍이 키-벨류 캐시에 존재하지 않는 경우, 키-벨류 캐시에 타깃 키를 이용하여 키-벨류 쌍으로부터 타깃 벨류에 액세스하는 단계를 더 포함하는 문장 23에 따른 방법을 포함한다.
문장 25. 본 발명의 실시 예는 타깃 키를 포함하는 타깃-벨류 쌍이 키-벨류 저장소에 존재하지 않는 경우, 타깃 키를 이용하에 백엔드 데이터베이스로부터 키-벨류에 액세스하는 단계를 더 포함하는 문장 23에 따른 방법을 포함한다.
문장 26. 본 발명의 실시 예는 키-벨류 쌍으로써 타깃 키 및 타깃 벨류를 타깃 벨류 캐시 및 타깃-벨류 저장소 중 적어도 하나로 추가하는 단계를 더 포함하는 문장 25에 따른 방법을 포함한다.
문장 27. 본 발명의 실시 예는 키-벨류 쌍으로써 타깃 키 및 타깃 벨류를 키-벨류 캐시에 추가하는 단계를 더 포함하는 문장 23에 따른 방법을 포함한다.
문장 28. 본 발명의 실시 예는 키-벨류 저장소로부터 키-벨류 쌍을 삭제하는 단계를 더 포함하는 문장 27에 따른 방법을 포함한다.
문장 29. 본 발명의 실시 예에 따른 방법은
멀티-레벨 캐시 시스템에 메모리에 키-벨류 캐시의 제1 용량을 판단하는 단계;
멀티-레벨 캐시 시스템에 키-벨류 저장소의 제2 용량을 판단하는 단계;
제1 명칭 공간에 대한 요청들의 제1 세트 및 제2 명칭 공간에 대한 요청들의 제2 세트를 판단하는 단계;
제1 명칭 공간에 대한 메모리의 제1 부분 및 제2 명칭 공간에 대한 메모리의 제2 부분을 계산하는 단계;
제1 명칭 공간에 대한 키-벨류 저장소의 제3 부분 및 제2 명치 공간에 대한 키-벨류 저장소의 제4 부분을 계산하는 단계;
제1 명칭 공간에 대한 메모리의 제1 부분 및 제2 명칭 공간에 대한 메모리의 제2 부분을 할당하는 단계; 및
제1 명칭 공간에 대한 키-벨류 저장소의 제3 부분 및 제2 명칭 공간에 대한 키-벨류 저장소의 제4 부분을 할당하는 단계를 포함한다.
문장 30. 본 발명의 실시 예는
제1 명칭 공간에 대한 요청들의 제1 세트 및 제2 명칭 공간에 대한 요청들의 제2 세트를 주기적으로 재판단하는 단계;
제1 명칭 공간에 대한 메모리의 제1 부분 및 제2 명칭 공간에 대한 메모리의 제2 부분을 주기적으로 재계산하는 단계;
제1 명칭 공간에 대한 키-벨류 저장소의 제3 부분 및 제2 명칭 공간에 대한 키-벨류 저장소의 제4 공간을 주기적으로 재계산하는 단계;
제1 명칭 공간에 대한 메모리의 제1 부분 및 제2 명칭 공간에 대한 메모리의 제2 부분을 주기적으로 재할당하는 단계; 및
제1 명칭 공간에 대한 키-벨류 저장소의 제3 부분 및 제2 명칭 공간에 대한 키-벨류 저장소의 제4 부분을 주기적으로 재할당하는 단계를 더 포함하는 문장 29에 따른 방법을 포함한다.
문장 31. 본 발명의 실시 예는 백엔드 데이터베이스로부터 키-벨류 저장소로 제1 키-벨류 쌍을 상승하고, 키-벨류 저장소로부터 키-벨류 캐시로 제2 키-벨류 쌍을 상승하기 위한 상승 정책을 설정하는 단계를 더 포함하는 문장 29에 따른 방법을 포함한다.
문장 32. 본 발명의 실시 예는 키-벨류 캐시로부터 키-벨류 저장소로 제1 키-벨류 쌍을 강등하고, 키-벨류 저장소로부터 벡엔드 데이터베이스로 제2 키-벨류 쌍을 강등하기 위한 강등 정책을 설정하는 단계를 더 포함하는 문장 29에 따른 방법을 포함한다.
문장 33. 본 발명의 실시 예는 키-벨류 캐시 및 키-벨류 저장소를 위한 포괄 정책을 설정하는 단계를 더 포함하는 문장 29에 따른 방법을 포함한다.
문장 34. 본 발명의 실시 예에 따른 로직은
사용자가 선택한 서비스의 품질을 수신하기 위한 수신 회로;
타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하기 위한 정합 계산기; 및
타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 전송하기 위한 전송회로를 포함한다.
문장 35. 본 발명의 실시 예는 문장 34에 따른 로직을 포함하고, 수신 회로는 사용자가 선택한 서비스의 품질, 키-벨류 캐시 적중률, 및 키-벨류 저장소 재사용 거리를 수신하기 위해 동작한다.
문장 36. 발명의 실시 예는 문장 34에 따른 로직을 포함하고,
수신 회로는 키-벨류 캐시에 대한 제1 데이터 및 키-벨류 저장소에 대한 제2 데이터를 수신하기 위해 동작하고,
로직은 제1 데이터로부터 키-벨류 캐시 적줄률 및 제2 데이터로부터 키-벨류 저장소 재사용 거리를 계산하기 위한 통계 계산기를 더 포함한다.
문장 37. 발명의 실시 예는 문장 34에 따른 로직을 포함하고,
정합 계산기는 타깃 키-벨류 캐시 크기, 타깃 키-벨류 저장소 크기, 및 키-벨류 저장소 만료 시간을 계산하기 위해 동작하고,
전송 회로는 타깃 키-벨류 캐시 크기, 타깃 키-벨류 저장소 크기, 및 키-벨류 저장소 만료 시간을 전송하기 위해 동작한다.
문장 38. 본 발명의 실시 예는 문장 34에 따른 로직을 포함하고, 사용자가 선택한 서비스의 품질은 원하는 레이턴시 및 원하는 비용의 세트로부터 도출된다.
문장 39. 본 발명의 실시 예는 문장 34에 따른 로직을 포함하고, 정합 계산기는 사용자가 선택한 서비스의 품질을 최적화하기 위해, 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하기 위해 동작한다.
문장 40. 본 발명의 실시 예는 문장 39에 따른 로직을 포함하고, 정합 계산기는 선행 프로그래밍 기술들을 이용하여 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하기 위해 사용된다.
문장 41. 본 발명의 실시 예는 문장 39에 따른 로직을 포함하고, 정합 계산기는 적분학을 이용하여 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하기 위해 동작한다.
문장 42. 본 발명의 실시 예는 문장 39에 따른 로직을 포함하고, 정합 계산기는 기계 학습 기술들을 이용하여 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하기 위해 동작한다.
문장 43. 본 발명의 실시 예는 문장 34에 따른 로직을 포함하고, 정합 계산기는 장치에 히트의 확률에 의해 곱해진 각 장치의 레이턴시의 함수로서 레이턴시를 계산하기 위해 동작한다.
문장 44, 본 발명의 실시 예는 문장 34에 따른 로직을 포함하고, 정합 계산기는 장치의 용량에 의해 곱해진 각 장치에 대한 비용의 함수로써 비용을 계산하기 위해 동작한다.
문장 45. 본 발명의 실시 예는 문장 34에 따른 로직을 포함하고,
타깃 키-벨류 캐시 크기는 맴캐시된 소프트웨어 크기이고,
키-벨류 캐시 적중률은 맴캐시된 소프트웨어 적중률이다.
문장 46. 본 발명의 실시 예에 따른 방법은
키-벨류 저장소에 대한 키-벨류 캐시 적중률 및 재사용 거리를 수신하는 단계;
사용자가 선택한 서비스의 품질을 수신하는 단계; 및
키-벨류 캐시 적중률 및 재사용 거리를 기반으로 사용자가 선택한 서비스의 품질을 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하는 단계를 포함한다.
문장 47. 본 발명의 실시 예는 문장 46에 따른 방법을 포함하고, 키-벨류 저장소에 대한 키-벨류 캐시 적중률 및 재사용 거리를 수신하는 단계는
키-벨류 캐시에 대한 제1 데이터 및 키-벨류 저장소에 대한 제2 데이터를 수신하는 단계;
제1 데이터로부터 키-벨류 캐시 적중률을 계산하는 단계; 및
제2 데이터로부터 키-벨류 저장소 재사용 거리를 계산하는 단계를 포함한다.
문장 48. 본 발명의 실시 예는
키-벨류 캐시의 크기를 타깃 키-벨류 캐시 크기로 변환하는 단계; 및
키-벨류 저장소의 크기를 타깃 키-벨류 저장소 크기로 변화하는 단계를 더 포함하는 문장 46에 따른 방법을 포함한다.
문장 49. 본 발명의 실시 예는 키-벨류 캐시의 크기 및 키-벨류 저장소의 크기 중 적어도 하나를 증가시키는 단계를 더 포함하는 문장 46에 따른 방법을 포함한다.
문장 50. 본 발명의 실시 예는 키-벨류 캐시의 크기 및 키-벨류 저장소의 크기 중 적어도 하나를 감소시키는 단계를 더 포함하는 문장 46에 따른 방법을 포함한다.
문장 51. 본 발명의 실시 예는 문장 46에 따른 방법을 포함하고
키-벨류 저장소에 대한 키-벨류 캐시 적중률 및 재사용 거리를 수신하는 단계는 맴캐시된 소프트웨어 적중률 및 키-벨류 저장소에 대한 재사용 거리를 수신하는 단계를 포함하고,
키-벨류 캐시 적중률 및 재사용 거리를 기반으로 사용자가 선택한 서비스의 품질을 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하는 단계는 맴캐시된 소프트웨어 적중률 및 재사용 거리를 기반으로 사용자가 선택한 서비스의 품질을 만족시키기 위해 타깃 맴캐시된 소프트웨어 크기 및 타깃 키-벨류 저장소 크기를 계산하는 단계를 포함한다.
문장 52. 본 발명의 실시 예는 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 출력하는 단계를 더 포함하는 문장 46에 따른 방법을 포함한다.
문장 53. 분 발명의 실시 예는 타깃 키-벨류 저장소 만료 시간을 계산하는 단계를 더 포함하는 문장 46에 따른 방법을 포함한다.
문장 54. 본 발명의 실시 예는 타깃 키-벨류 저장소 만료 시간보다 더 긴 액세스 없이 키-벨류 저장소에 있는 데이터를 만료하기 위한 타깃 키-벨류 저장소 만료 시간을 사용하기 위해 키-벨류 저장소를 지시하는 단계를 더 포함하는 문장 53에 따른 방법을 포함한다.
문장 55. 본 발명의 실시 예는 타깃 키-벨류 저장소 만료 시간을 출력하는 단계를 더 포함하는 문장 53에 따른 방법을 포함한다.
문장 56. 본 발명의 실시 예는 문장 46에 따른 방법을 포함하고,
사용자가 선택한 서비스의 품질을 수신하는 단계는 사용자가 원하는 레이턴시를 수신하는 단계를 포함하고,
키-벨류 캐시 적중률 및 재사용 거리를 기반으로 사용자가 선택한 서비스의 품질을 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하는 단계는 사용자가 원하는 레이턴시를 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하는 단계를 포함한다.
문장 57. 본 발명의 실시 예는 문장 46에 따른 방법을 포함하고,
사용자가 선택한 서비스의 품질을 수신하는 단계는 사용자가 원하는 비용을 수신하는 단계를 포함하고,
키-벨류 캐시 적중률 및 재사용 거리를 기반으로 사용자가 선택한 서비스의 품질을 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하는 단계는 사용자가 원하는 비용을 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하는 단계를 포함한다.
문장 58. 본 발명의 실시 예는 저장된 구체적인 저장 매체로 구성되는 제품을 포함하고, 구체적인 저장 매체는 그것에 대해 저장된 비일시적인 명령들을 갖고, 기계에 의해 실행되는 경우, 그 결과는:
키-벨류 저장소를 위한 키-벨류 캐시 적중률 및 재사용 거리를 수신하는 단계;
사용자가 선택한 서비스의 품질을 수신하는 단계; 및
키-벨류 캐시 적중률 및 재사용 거리를 기반으로 하는 사용자가 선택한 서비스의 품질을 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소의 크기를 계산하는 단계이다.
문장 59. 본 발명의 실시 예는 문장 58에 따른 제품을 포함하고, 키-벨류 저장소를 위한 키-벨류 캐시 적중률 및 재사용 거리를 수신하는 단계는
키-벨류 캐시에 대한 제1 데이터 및 키-벨류 저장소에 대한 제2 데이터를 수신하는 단계;
제2 데이터로부터 키-벨류 캐시 적중률을 계산하는 단계; 및
제2 데이터로부터 키-벨류 저장소 재사용 거리를 계산하는 단계를 포함한다.
문장 60. 본 발명의 실시 예는 문장 58에 따른 제품을 포함하고, 구체적인 저장 매체는 그것에 대해 저장된 비일시적인 명령들을 더 포함하고, 기계에 의해 실행되는 경우, 그 결과는:
키-벨류 캐시의 크기를 타깃 키-벨류 캐시 크기로 변환하는 단계; 및
키-벨류 저장소의 크기를 타깃 키-벨류 저장소 크기로 변환하는 단계 이다.
문장 61. 본 발명의 실시 예는 문장 58에 따른 제품을 포함하고, 구체적인 저장 매체는 그것에 대해 저장된 비일시적인 명령들을 더 포함하고, 기계에 의해 실행되는 경우, 그 결과는 키-벨류 개시의 크기 및 키-벨류 저장소의 크기 중 적어도 하나가 감소하는 단계이다.
문장 63. 본 발명의 실시 예는 문장 58에 따른 제품을 포함하고,
키-벨류 저장소를 위한 키-벨류 캐시 적중률 및 재사용 거리를 수신하는 단계는 맴캐시된 소프트웨어 적중률 및 키-벨류 저장소에 대한 재사용 거리를 수신하는 단계를 포함하고,
키-벨류 캐시 적중률 및 재사용 거리를 기반으로 하는 사용자가 선택한 서비스의 품질을 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소의 크기를 계산하는 단계는 맴캐시된 소프트웨어 적중률 및 재사용 거리를 기반으로 사용자가 선택한 서비스의 품질을 만족하기 위해 타깃 맴캐시된 소프트웨어 크기 및 타깃 키-벨류 저장소 크기를 계산하는 단계를 포함한다.
문장 64. 본 발명의 실시 예는 문장 58에 따른 제품을 포함하고, 구체적인 저장 매체는 그것에 대해 저장된 비일시적인 명령들을 더 포함하고, 기계에 의해 실행되는 경우, 그 결과는 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 출력하는 단계이다.
문장 65. 본 발명의 실시 예는 문장 58에 따른 제품을 포함하고, 구체적인 저장 매체는 그것에 대해 저장된 비일시적인 명령들을 더 포함하고, 기계에 의해 실행되는 경우, 그 결과는 타깃 키-벨류 저장소 만료 시간을 계산하는 단계이다.
문장 66. 본 발명의 실시 예는 문장 65에 따른 제품을 포함하고, 구체적인 저장 매체는 그것에 대해 저장된 비일시적인 명령들을 더 포함하고, 기계에 의해 실행되는 경우, 그 결과는 타깃-키 벨류 저장소 만료 시간보다 긴 액세스 없이 키-벨류 저장소에 있는 데이터를 만료시키기 위해 타깃 키-벨류 저장소 만료 시간을 이용하여 키-벨류 저장소를 지시하는 단계이다.
문장 67. 본 발명의 실시 예는 문장 65에 따른 제품을 포함하고, 구체적인 저장 매체는 그것에 대해 저장된 비일시적인 명령들을 더 포함하고, 기계에 의해 실행되는 경우, 그 결과는 타깃 키-벨류 저장소 만료 시간을 출력하는 단계이다.
문장 68. 본 발명의 실시 예는 문장 58에 따른 제품을 포함하고,
사용자가 선택한 서비스의 품질을 수신하는 단계는 사용자가 원하는 레이턴시를 수신하는 단계를 포함하고,
키-벨류 캐시 적중률 및 재사용 거리를 기반으로 하는 사용자가 선택한 서비스의 품질을 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소의 크기를 계산하는 단계는 사용자가 원하는 레이턴시를 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하는 단계를 포함한다.
문장 69. 본 발명의 실시 예는 문장 58에 따른 제품을 포함하고,
사용자가 선택한 서비스의 품질을 수신하는 단계는 사용자가 원하는 비용을 수신하는 단계를 포함하고,
키-벨류 캐시 적중률 및 재사용 거리를 기반으로 하는 사용자가 선택한 서비스의 품질을 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소의 크기를 계산하는 단계는 사용자가 원하는 비용을 만족시키기 위해 타깃 키-벨류 캐시 크기 및 타깃 키-벨류 저장소 크기를 계산하는 단계를 포함한다.
105: 서버
110: 프로세서
115: 메모리
120: 저장 장치
125: 백엔드 데이터베이스
130, 135: SSD
140: 키-벨류 캐시 시스템
205: 메모리 컨트롤러
210: 클록
215: 네트워크 센터
225: 사용자 인터페이스
230: I/O 엔진

Claims (10)

  1. 서버;
    상기 서버에 연결되는 프로세서;
    상기 서버에 연결되는 메모리;
    상기 메모리에 설치되고, 제1 키-벨류(key-value) 쌍을 저장하기 위해 동작하고, 제1 명칭 공간(namespace) 및 제2 명칭 공간과 함께 사용되는 키-벨류 캐시 시스템(key-value cache system);
    제2 키-벨류 쌍을 저장하기 위해 동작하는 키-벨류 저장소(key-value store)를 포함하는 솔리드 스테이트 드라이브(Solid State Drive, SSD);
    상기 제1 명칭 공간 및 상기 제2 명칭 공간에 대해, 상기 키-벨류 캐시 시스템에 의해 사용될 상기 메모리의 양을 동적으로 할당하는 멀티-레벨 캐시 매니저(multi-level cache system); 그리고
    백엔드 데이터베이스(backend database)를 포함하는 제2 저장 장치를 포함하고,
    상기 키-벨류 저장소는 상기 메모리의 상기 키-벨류 캐시 시스템에 대한 제2 레벨 캐시로서 동작하고, 그리고
    상기 키-벨류 캐시 시스템 및 상기 키-벨류 저장소는 상기 백엔드 데이터베이스에 대해 멀티-레벨 캐시 역할을 하는 멀티-레벨 캐시 시스템(multi-level cache system).
  2. 제 1 항에 있어서,
    상기 멀티-레벨 캐시 매니저는, 상기 제1 명칭 공간 및 상기 제2 명칭 공간에 대해 상기 키-벨류 저장소에 의해 사용되는 상기 솔리드 스테이트 드라이브의 양을 동적으로 할당하도록 더 동작하는 멀티-레벨 캐시 시스템.
  3. 제 1 항에 있어서,
    상기 서버에 연결되고, 타깃 키(target key)와 관련된 타깃 벨류(target value)에 대한 요청을 수신하는 글루 로직(glue logic)을 더 포함하는 멀티-레벨 캐시 시스템.
  4. 제 3 항에 있어서,
    상기 글루 로직은, 상기 요청을 상기 요청에 사용된 제1 신텍스(syntax)에서 상기 키-벨류 저장소에 대응하는 제2 신텍스로 변환하는 변환기를 포함하는 멀티-레벨 캐시 시스템.
  5. 제 3 항에 있어서,
    상기 글루 로직은 상기 키-벨류 저장소에 액세스(access)하기 위해 함수들의 라이브러리(library)를 포함하는 멀티-레벨 캐시 시스템.
  6. 멀티-레벨 캐시 시스템의 동작 방법에 있어서:
    키-벨류 저장소 및 메모리에 저장된 키-벨류 캐시에 대하여, 포괄적인 포함 정책 및 독점적인 포함 정책 중 하나를 선택하는 단계;
    상기 키-벨류 캐시 및 상기 키-벨류 저장소에 대하여 상기 선택된 정책을 지원하는 단계;
    제1 명칭 공간에 대한 요건들의 제1 세트 및 제2 명칭 공간에 대한 요건들의 제2 세트를 판단하는 단계;
    상기 제1 명칭 공간에 대한 상기 메모리의 제1 부분 및 상기 제2 명칭 공간에 대한 상기 메모리의 제2 부분을 계산하는 단계;
    상기 제1 명칭 공간에 대한 상기 키-벨류 저장소의 제3 부분 및 상기 제2 명칭 공간에 대한 상기 키-벨류 저장소의 제4 부분을 계산하는 단계;
    상기 제1 명칭 공간에 대한 상기 메모리의 상기 제1 부분 및 상기 제2 명칭 공간에 대한 상기 메모리의 상기 제2 부분을 할당하는 단계;
    상기 제1 명칭 공간에 대한 상기 키-벨류 저장소의 상기 제3 부분 및 상기 제2 명칭 공간에 대한 상기 키-벨류 저장소의 상기 제4 부분을 할당하는 단계;
    타깃 벨류에 액세스하기 위해 타깃 키를 포함하는 요청을 수신하는 단계;
    상기 타깃 키를 포함하는 키-벨류 쌍이 키-벨류 캐시에 존재하는지를 판단하는 단계;
    상기 키-벨류 캐시에 존재하지 않는 상기 타깃 키의 적어도 일부분에 기초하여, 상기 타깃 키를 포함하는 상기 키-벨류 쌍이 키-벨류 저장소에 존재하는지를 판단하는 단계; 그리고
    상기 키-벨류 저장소에 존재하지만 상기 키-벨류 캐시에 존재하지 않는 상기 타깃 키의 적어도 일부분에 기초하여, 상기 타깃 키를 이용하여 상기 키-벨류 저장소의 상기 키-벨류 쌍으로부터 상기 타깃 벨류에 액세스하는 단계를 포함하고,
    상기 키-벨류 저장소는 상기 메모리의 키-벨류 캐시 시스템에 대해 제2 레벨 캐시로서 동작하고, 그리고
    상기 키-벨류 캐시 및 상기 키-벨류 저장소는, 상기 키-벨류 캐시 또는 상기 키-벨류 저장소를 포함하지 않는 저장 장치의 백엔드 데이터베이스에 대해 멀티-레벨 캐시로서 동작하는 동작 방법.
  7. 제 6 항에 있어서,
    상기 키-벨류 캐시에 존재하는 상기 타깃 키의 일부분에 기초하여, 상기 타깃 키를 이용하여 상기 키-벨류 캐시의 상기 키-벨류 쌍으로부터 상기 타깃 벨류에 액세스하는 단계를 더 포함하는 동작 방법.
  8. 멀티-레벨 캐시 시스템의 동작 방법에 있어서,
    키-벨류 캐시 및 키-벨류 저장소에 대한 포괄적인 포함 정책 및 독점적인 포함 정책 중 하나를 선택하는 단계;
    상기 키-벨류 캐시 및 상기 키-벨류 저장소에 대한 상기 선택된 정책을 지원하는 단계;
    상기 멀티-레벨 캐시 시스템의 메모리에 있는 키-벨류 캐시의 제1 용량을 판단하는 단계;
    상기 멀티-레벨 캐시 시스템의 키-벨류 저장소에 있는 제2 용량을 판단하는 단계;
    제1 명칭 공간에 대한 요건들의 제1 세트 및 제2 명칭 공간에 대한 요건들의 제2 세트를 판단하는 단계;
    상기 제1 명칭 공간에 대한 상기 메모리의 제1 부분 및 상기 제2 명칭 공간에 대한 상기 메모리의 제2 부분을 계산하는 단계;
    상기 제1 명칭 공간에 대한 상기 키-벨류 저장소의 제3 부분 및 상기 제2 명칭 공간에 대한 상기 키-벨류 저장소의 제4 부분을 계산하는 단계;
    상기 제1 명칭 공간에 대한 상기 메모리의 상기 제1 부분 및 상기 제2 명칭 공간에 대한 상기 메모리의 상기 제2 부분을 할당하는 단계; 그리고
    상기 제1 명칭 공간에 대한 상기 키-벨류 저장소의 상기 제3 부분 및 상기 제2 명칭 공간에 대한 상기 키-벨류 저장소의 상기 제4 부분을 할당하는 단계를 포함하는 동작 방법.
  9. 제 8 항에 있어서,
    상기 제1 명칭 공간에 대한 상기 요건들의 상기 제1 세트 및 상기 제2 명칭 공간에 대한 상기 요건들의 상기 제2 세트를 주기적으로 재판단하는 단계;
    상기 제1 명칭 공간에 대한 상기 메모리의 상기 제1 부분 및 상기 제2 명칭 공간에 대한 상기 메모리의 상기 제2 부분을 주기적으로 재계산하는 단계;
    상기 제1 명칭 공간에 대한 상기 키-벨류 저장소의 상기 제3 부분 및 상기 제2 명칭 공간에 대한 상기 키-벨류 저장소의 상기 제4 부분을 주기적으로 재계산하는 단계;
    상기 제1 명칭 공간에 대한 상기 메모리의 상기 제1 부분 및 상기 제2 명칭 공간에 대한 상기 메모리의 상기 제2 부분을 주기적이고 동적으로 재할당하는 단계; 그리고
    상기 제1 명칭 공간에 대한 상기 키-벨류 저장소의 상기 제3 부분 및 상기 제2 명칭 공간에 대한 상기 키-벨류 저장소의 상기 제4 부분을 주기적이고 동적으로 재할당하는 단계를 더 포함하는 동작 방법.
  10. 제 8 항에 있어서,
    백엔드 데이터베이스로부터 상기 키-벨류 저장소로 제1 키-벨류 쌍을 상승하고, 상기 키-벨류 저장소로부터 상기 키-벨류 캐시로 제2 키-벨류 쌍을 상승하기 위한 상승 정책을 설정하는 단계를 더 포함하는 동작 방법.
KR1020160120312A 2015-11-17 2016-09-20 멀티-레벨 키-벨류 저장을 위한 시스템 및 그것의 동작 방법 KR102367413B1 (ko)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201562256578P 2015-11-17 2015-11-17
US62/256,578 2015-11-17
US201662279661P 2016-01-15 2016-01-15
US62/279,661 2016-01-15
US15/096,267 2016-04-11
US15/096,267 US10289722B2 (en) 2015-11-17 2016-04-11 System and methods for multi-level key-value store

Publications (2)

Publication Number Publication Date
KR20170057826A KR20170057826A (ko) 2017-05-25
KR102367413B1 true KR102367413B1 (ko) 2022-02-24

Family

ID=58690587

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020160120312A KR102367413B1 (ko) 2015-11-17 2016-09-20 멀티-레벨 키-벨류 저장을 위한 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US10289722B2 (ko)
KR (1) KR102367413B1 (ko)

Families Citing this family (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6211949B2 (ja) * 2014-02-12 2017-10-11 株式会社東芝 データベース装置
US11301422B2 (en) * 2016-02-23 2022-04-12 Samsung Electronics Co., Ltd. System and methods for providing fast cacheable access to a key-value device through a filesystem interface
US10460120B1 (en) 2016-03-30 2019-10-29 Amazon Technologies, Inc. Policy mediated hierarchical structures in key value stores
US10303669B1 (en) * 2016-03-30 2019-05-28 Amazon Technologies, Inc. Simulating hierarchical structures in key value stores
US10769064B1 (en) * 2017-12-20 2020-09-08 Pliops Ltd Method for retrieving key value pairs and groups of key value pairs
US10860249B2 (en) * 2017-12-25 2020-12-08 Pliops Ltd. Solid state disk (SSD) controller and database
KR102516246B1 (ko) * 2018-10-29 2023-03-30 마이크론 테크놀로지, 인크. Slc 캐시 할당
CN112394874B (zh) * 2019-08-13 2024-08-20 华为技术有限公司 一种键值kv的存储方法、装置及存储设备
US11269780B2 (en) 2019-09-17 2022-03-08 Micron Technology, Inc. Mapping non-typed memory access to typed memory access
US10963396B1 (en) * 2019-09-17 2021-03-30 Micron Technology, Inc. Memory system for binding data to a memory namespace
US11494311B2 (en) 2019-09-17 2022-11-08 Micron Technology, Inc. Page table hooks to memory types
CN110955682A (zh) * 2019-11-22 2020-04-03 北京金山云网络技术有限公司 缓存数据的删除、数据缓存及缓存数据的读取方法及装置
KR20210077467A (ko) 2019-12-17 2021-06-25 에스케이하이닉스 주식회사 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템
JP7536483B2 (ja) 2020-03-17 2024-08-20 キオクシア株式会社 メモリシステムおよび制御方法
CN112507199B (zh) * 2020-12-22 2022-02-25 北京百度网讯科技有限公司 用于对搜索系统进行优化的方法和装置
JP2023104400A (ja) 2022-01-17 2023-07-28 富士通株式会社 データ管理方法およびデータ管理プログラム
WO2024167433A1 (ru) * 2023-02-10 2024-08-15 Общество С Ограниченной Ответственностью "Сэлвери" Способ хранения дополнительного элемента информации, подчиненного единому объекту информации

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072656A1 (en) 2010-06-11 2012-03-22 Shrikar Archak Multi-tier caching

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8010337B2 (en) 2004-09-22 2011-08-30 Microsoft Corporation Predicting database system performance
US7831634B2 (en) 2005-04-29 2010-11-09 Sap Ag Initializing a cache region using a generated cache region configuration structure
US20080046628A1 (en) 2006-08-21 2008-02-21 Mikal Hunsaker Multi-bus type management messaging method and apparatus
US8583938B2 (en) * 2006-09-20 2013-11-12 Kam Fu Chan From polymorphic executable to polymorphic operating system
US8996563B2 (en) * 2010-04-06 2015-03-31 Tokutek, Inc. High-performance streaming dictionary
US9075710B2 (en) * 2012-04-17 2015-07-07 SanDisk Technologies, Inc. Non-volatile key-value store
US9311376B2 (en) 2012-05-02 2016-04-12 Microsoft Technology Licensing, Llc Performance service level agreements in multi-tenant database systems
US9086882B2 (en) 2012-08-07 2015-07-21 International Business Machines Corporation DRAM energy use optimization using application information
US9405686B2 (en) 2013-03-13 2016-08-02 Cloud Physics, Inc Cache allocation system and method using a sampled cache utility curve in constant space
US9519575B2 (en) * 2013-04-25 2016-12-13 Sandisk Technologies Llc Conditional iteration for a non-volatile device
US9183151B2 (en) 2013-08-30 2015-11-10 Vmware, Inc. Thread cache allocation
US10891264B2 (en) * 2015-04-30 2021-01-12 Vmware, Inc. Distributed, scalable key-value store

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120072656A1 (en) 2010-06-11 2012-03-22 Shrikar Archak Multi-tier caching

Also Published As

Publication number Publication date
KR20170057826A (ko) 2017-05-25
US10289722B2 (en) 2019-05-14
US20170139610A1 (en) 2017-05-18

Similar Documents

Publication Publication Date Title
KR102367413B1 (ko) 멀티-레벨 키-벨류 저장을 위한 시스템 및 그것의 동작 방법
KR102431871B1 (ko) 멀티-레벨 키-벨류 저장을 위한 로직 및 그것의 동작 방법
TWI684099B (zh) 剖析快取替代
JP4631301B2 (ja) 記憶装置のキャッシュ管理方法
US9946462B1 (en) Address mapping table compression
US9639459B2 (en) I/O latency and IOPs performance in thin provisioned volumes
US10091126B2 (en) Cloud system, control method thereof, management server and control method thereof
US11093410B2 (en) Cache management method, storage system and computer program product
EP4020153A1 (en) Cache space management method and device
Fukuda et al. Caching memcached at reconfigurable network interface
US20180329825A1 (en) Optimizing the management of cache memory
US10558571B2 (en) Second level database file cache for row instantiation
JP2007249468A (ja) Cpu割当方法、cpu割当プログラム、cpu割当装置、および、データベース管理システム
US10223256B1 (en) Off-heap memory management
US11762770B2 (en) Cache memory management
US20220414031A1 (en) Managed nand flash memory region control against endurance hacking
CN113728601A (zh) 优化压缩数据的存储和获取
CN109582649A (zh) 一种元数据存储方法、装置、设备及可读存储介质
CN103763133B (zh) 一种实现访问控制的方法、设备与系统
JP2003099384A (ja) 負荷分散システム、負荷分散システムのホストコンピュータ、及び負荷分散プログラム
KR20240072930A (ko) 연산 장치들의 동작을 위한 시스템들, 방법들 및 장치들
CN109408412B (zh) 内存预取控制方法、装置及设备
KR101942663B1 (ko) 가상 메모리 주소 변환 효율화를 위한 연속성 활용 주소 변환 방법 및 시스템
JP2022172400A (ja) アクセス処理の方法、機器、記憶媒体及びプログラム
US11687443B2 (en) Tiered persistent memory allocation

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant