TWI702506B - 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法 - Google Patents
用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法 Download PDFInfo
- Publication number
- TWI702506B TWI702506B TW107104242A TW107104242A TWI702506B TW I702506 B TWI702506 B TW I702506B TW 107104242 A TW107104242 A TW 107104242A TW 107104242 A TW107104242 A TW 107104242A TW I702506 B TWI702506 B TW I702506B
- Authority
- TW
- Taiwan
- Prior art keywords
- kvset
- key
- node
- value
- compression
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
在本文中闡述用於收集且使用合併樹廢棄項目指標之系統及技術。針對一KVS樹中之一節點建立一kvset。在此處,作為該節點建立之一部分,計算該kvset之一kvset指標集。將該kvset新增至該節點。基於該kvset指標集中之一指標而針對一壓縮操作選擇該節點。對該節點執行該壓縮操作。
Description
本文中所闡述之實施例一般而言係關於一種鍵值資料儲存器,且更具體而言係關於實施合併樹廢棄項目指標及使用。
資料結構係准許各種方式來與儲存於其中之資料相互作用之資料組織。資料結構可經設計以准許(諸如)在一個二進制搜尋樹中高效率搜尋資料,准許(諸如)利用一經連結清單高效率儲存稀疏資料,或准許(諸如)利用一B樹高效率儲存可搜尋資料以及其他。
鍵值資料結構接受一鍵值對且經組態以回應於對鍵之查詢。鍵值資料結構可包含諸如字典(例如,映射、雜湊映射等)之結構,其中鍵儲存於連結(或含有)各別值之一清單中。雖然此等結構可用於記憶體中(例如,與儲存區相反之主要記憶體或系統狀態記憶體中),但此等結構在持久儲存區中(例如,磁碟上)之儲存表示可係低效率的。因此,已引入一類基於日誌之儲存結構。一實例係日誌結構化合併樹(LSM樹)。
已存在各種LSM樹實施方案,但諸多LSM樹實施方案符合其中將鍵值對接受至一經鍵排序之記憶體中結構中之一設計。當彼記憶體中結構填滿時,資料分配在子節點當中。該分配使得子節點中之鍵在子節點自身內以及子節點之間經定序。舉例而言,在具有三個子節點之一第一樹層級
處,一最左邊子節點內之最大鍵小於來自中間子節點之一最小鍵且中間子節點中之最大鍵小於來自最右邊子節點之最小鍵。此結構准許對資料結構中之鍵以及鍵範圍兩者之一高效率搜尋。
100:KVS樹/樹
105:第一根/節點/KVS樹
110:節點/第二根
115:鍵值集
120:鍵值集
125:鍵值集
205:KVS樹/樹
210:KVS樹
215:寫入操作/寫入/寫入請求
220:寫入操作
225:儲存子系統
230:串流映射電路
235:電子硬體實施之控制器/控制器
240:可存取串流ID表
245:選定串流ID表
250:操作/裝置寫入/寫入命令
255:操作
260:裝置/儲存裝置/經組態儲存裝置/多串流儲存裝置
265:裝置/儲存裝置/經組態儲存裝置
270:抹除區塊
300:方法
305:操作
310:操作
315:操作
405:標頭
410:主要鍵區塊/鍵區塊
415:擴展鍵區塊/鍵區塊
417:擴展標頭
420:標頭
425:值
430:值
435:值
440:標頭
445:值
450:自由空間
505:標頭
510:布隆過濾器
515:鍵結構
520:鍵結構/根節點
525:標頭
530:鍵結構
540:標頭
545:儲存區
605:節點/根節點
610:節點/父節點
615:節點/葉節點
705:鍵值對
710:記憶體/主要記憶體
715:最新鍵值集/鍵值集
720:最舊鍵值集/鍵值集
725:攝取
730:根節點
735:新鍵值集
800:方法
805:操作
810:操作
815:操作
820:操作
825:操作
1000:方法
1005:操作
1010:操作
1015:操作
1020:操作
1025:操作
1200:方法
1205:操作
1210:操作
1215:操作
1220:操作
1225:操作
1305:部分
1310:部分
1315:部分
1320:根節點
1325:節點
1330:節點
1335:節點
1400:方法
1405:操作
1410:操作
1415:操作
1505:鍵值對
1510:鍵值對
1515:鍵值對
1600:方法
1605:操作
1610:操作
1615:操作
1620:操作
1625:操作
1705:KVS
1710:KVS
1715:KVS M
1800:方法
1805:操作
1810:操作
1900:方法
1905:操作
1910:操作
1915:操作
1920:操作
2000:方法
2005:操作
2010:操作
2015:操作
2200:方法
2205:操作
2210:操作
2215:操作
2220:操作
2225:决定
2230:决定
2235:结果
2240:决定
2245:操作
2250:决定
2255:操作
2260:结果
2600:機器
2602:硬體處理器
2604:主要記憶體
2606:靜態記憶體
2608:交互連結
2610:顯示單元
2612:文數字輸入裝置/輸入裝置
2614:使用者介面導覽裝置
2616:儲存裝置
2618:信號產生裝置
2620:網路介面裝置
2621:感測器
2622:機器可讀媒體
2624:資料結構或指令
2626:通信網路
2628:輸出控制器
I:識別證
L0:樹層級
L1:樹層級/第一層級
L2:樹層級/第二層級
L3:樹層級/第三層級
M:新KVS
N:識別證
O:識別證
X:識別證/新鍵值集
Y:新鍵值集
Z:新鍵值集
~:字元
在圖式(其未必按比例繪製)中,相似編號可在不同視圖中闡述類似組件。具有不同字母後綴之相似編號可表示類似組件之不同例項。圖式一般以實例方式而非以限制方式圖解說明本文件中所論述之各種實施例。
圖1圖解說明根據一實施例之一KVS樹之一實例。
圖2係根據一實施例之圖解說明至一多串流儲存裝置之一寫入之一實例之一方塊圖。
圖3圖解說明根據一實施例之用以促進寫入至一多串流儲存裝置之一方法之一實例。
圖4係根據一實施例之圖解說明用於鍵及值之一儲存組織之一實例之一方塊圖。
圖5係根據一實施例之圖解說明鍵區塊及值區塊之一組態之一實例之一方塊圖。
圖6圖解說明根據一實施例之一KB樹之一實例。
圖7係根據一實施例之圖解說明KVS樹攝取之一方塊圖。
圖8圖解說明根據一實施例之用於KVS樹攝取之一方法之一實例。
圖9係根據一實施例之圖解說明鍵壓縮之一方塊圖。
圖10圖解說明根據一實施例之用於鍵壓縮之一方法之一實例。
圖11係根據一實施例之圖解說明鍵值壓縮之一方塊圖。
圖12圖解說明根據一實施例之用於鍵值壓縮之一方法之一實例。
圖13圖解說明根據一實施例之一溢寫值及其與一樹之關係之一實例。
圖14圖解說明根據一實施例之用於一溢寫值函數之一方法之一實例。
圖15係根據一實施例之圖解說明溢寫壓縮之一方塊圖。
圖16圖解說明根據一實施例之用於溢寫壓縮之一方法之一實例。
圖17係根據一實施例之圖解說明上升壓縮(hoist compaction)之一方塊圖。
圖18圖解說明根據一實施例之用於上升壓縮之一方法之一實例。
圖19圖解說明根據一實施例之用於執行對一KVS樹之維護之一方法之一實例。
圖20圖解說明根據一實施例之用於修改KVS樹操作之一方法之一實例。
圖21係根據一實施例之圖解說明一鍵搜尋之一方塊圖。
圖22圖解說明根據一實施例之用於執行一鍵搜尋之一方法之一實例。
圖23係根據一實施例之圖解說明一鍵掃描之一方塊圖。
圖24係根據一實施例之圖解說明一鍵掃描之一方塊圖。
圖25係根據一實施例之圖解說明一首碼掃描之一方塊圖。
圖26係圖解說明一機器之一實例之一方塊圖,可在該機器上實施一或多個實施例。
LSM樹已成為一受歡迎資料儲存結構,其中預期高容量寫入而且預期對資料之高效率存取。為支援此等特徵,LSM樹之若干部分針對上面保持有該等部分之媒體經調諧且一背景程序一般解決使資料在不同部分之間移動(例如,自記憶體中部分至磁碟上部分)。在本文中,記憶體中係指一隨機存取且位元組可定址裝置(例如,靜態隨機存取記憶體(SRAM)或動態隨機存取記憶體(DRAM)),且磁碟上係指一區塊可定址裝置(例如,硬碟機、光碟、數位多功能光碟或固態磁碟機(SSD),諸如一基於快閃記憶體之裝置),其亦稱為一媒體裝置或一儲存裝置。LSM樹利用由記憶體中裝置提供之準備就緒存取來按鍵將傳入資料排序,以提供對對應值之準備就緒存取。當將資料合併至磁碟上部分上時,常駐磁碟上資料與新資料合併且在區塊中往回寫入至磁碟。
雖然LSM樹已成為為若干個資料庫與容量儲存(例如,雲端儲存)設計之基礎之一受歡迎結構,但其具有某些缺點。首先,恆定合併新資料與舊資料以使內部結構保持按鍵排序會引起顯著寫入放大率。寫入放大率係由一給定儲存技術強加的最小資料寫入次數之一增加。舉例而言,為儲存資料,將資料寫入至磁碟至少一次。此可(舉例而言)藉由僅僅將最新資料片附加至已經寫入資料之端上而完成。然而,此結構緩慢進行搜尋(例如,其隨資料量而線性生長),且可在改變或刪除資料時引起低效率。LSM樹增加寫入放大率,此乃因其自磁碟讀取將與新資料合併之資料且然後將彼資料往回重新寫入至磁碟。寫入放大率問題可在包含儲存裝置活動(諸如重組硬碟機或SSD之廢棄項目收集)時加劇。SSD上之寫入放大率可係尤其致命的,此乃因此等裝置可隨著若干次寫入而「耗損」。亦即,SSD具有以寫入為單位而量測之一有限壽命。因此,關於SSD之寫入放大
率使得縮短基礎硬體之可用壽命。
關於LSM樹之一第二問題包含可在執行合併時消耗之大量空間。LSM樹確保按鍵將磁碟上部分排序。若常駐於磁碟上之資料量係大的,則可消耗大量暫時或拼湊空間來執行合併。此可藉由將磁碟上部分劃分成非重疊結構以准許對資料子集之合併來得到稍微緩解,但可難以達成結構額外負荷與效能之間的一平衡。
關於LSM樹之一第三問題包含可能有限之寫入吞吐量。此問題起源於LSM資料之全部之基本上始終經排序之本質。因此,壓倒記憶體中部分之大容量寫入必須等待直至用一可能耗時合併操作清除記憶體中部分為止。為解決此問題,已提議一寫入緩衝器(WB)樹,其中操縱較小資料插入以在此情景中避免合併問題。具體而言,一WB樹對傳入鍵進行雜湊以散佈資料,且將鍵雜湊與值組合儲存於較小攝入集中。此等集可基於鍵雜湊值而在各種時間處合併或寫入至子節點。此避免LSM樹之昂貴合併操作同時在查找一特定鍵時為高效率能的。然而,藉由鍵雜湊進行排序之WB樹致使昂貴整樹掃描定位未直接由一鍵雜湊參照之值,諸如發生在對一鍵範圍進行搜尋時。
為解決上文所述問題,在本文中闡述一KVS樹及對應操作。KVS樹係一樹資料結構,該樹資料結構包含基於一鍵之一預定導出而非樹之內容而在父節點與子節點之間具有連接之節點。該等節點包含鍵值集(kvset)之時間上經定序序列。該等kvset含有在一經鍵排序結構中之鍵值對。Kvset一旦經寫入便亦係不可變的。KVS樹達成WB樹之寫入吞吐量同時藉由維護節點中之kvset而對WB樹搜尋進行改良以提供對kvset之高效率搜尋,該等kvset包含經排序鍵以及(在一實例中)鍵指標(諸如布隆過濾器、最小
鍵及最大鍵等)。在諸多實例中,KVS樹可藉由將鍵與值分隔且合併較小kvset集合而對LSM樹之暫時儲存問題進行改良。另外,所闡述KVS樹可透過對kvset之各種維護操作而減小寫入放大率。此外,當節點中之kvset係不可變的時,SSD上之問題(諸如寫入耗損)可由資料結構管理,從而減少裝置自身之廢棄項目收集活動。此具有如下額外益處:釋放內部裝置資源(例如,匯流排頻寬、處理循環等)從而引起更佳外部驅動效能(例如,讀取或寫入速度)。在下文闡述KVS樹及其上之操作之額外細節及實例性實施方案。
圖1圖解說明根據一實施例之一KVS樹100之一實例。KVS樹100係經組織為一樹之一鍵值資料結構。作為一鍵值資料結構,值與參照該等值之對應鍵一起儲存於樹100中。具體而言,鍵項目用於含有鍵及額外資訊兩者,諸如對值之一參照,然而,除非另有規定,否則鍵項目為了簡單而僅僅稱為鍵。鍵自身具有在樹100內之一總定序。因此,鍵可在彼此當中進行排序。鍵亦可劃分成子鍵。一般而言,子鍵係一鍵之非重疊部分。在一實例中,鍵之總定序基於在多個鍵之間比較相似子鍵(例如,比較一鍵之一第一子鍵與另一鍵之該第一子鍵)。在一實例中,一鍵首碼係一鍵之一開始部分。該鍵首碼可由一或多個子鍵構成(在使用該等子鍵時)。
樹100包含一或多個節點,諸如節點110。節點110包含一時間上經定序之不可變鍵值集(kvset)序列。如所圖解說明,kvset 115包含一「N」識別證以指示其係序列中之最新者,而kvset 120包含一「O」識別證以指示其係序列中之最舊者。Kvset 125包含一「I」識別證以指示其係序列中之中間者。通篇使用此等識別證來給kvset加標籤,然而,另一識別證(諸如一「X」)表示一特定kvset而非其在一序列中之位置(例如,新的、中間
的、舊的等),除非其係一字元「~」,在該情形中其僅僅係一匿名kvset。如下文更詳細地闡釋,較舊鍵值項目出現在樹100中較低處。因此,使值上升一樹層級(諸如自L2至L1)會在接收方節點中之最舊位置中產生一新kvset。
節點110亦包含節點之一kvset中之一鍵值對至節點110之任何一個子節點之一確定性映射。如本文中所使用,該確定性映射意味:給定一鍵值對,一外部實體可在不知曉樹100之內容之情況下追蹤穿過樹100之可能子節點之一路徑。此(舉例而言)與一B樹相當不同,舉例而言,在B樹中,樹之內容將判定一給定鍵之值將落在何處以便維護樹之經搜尋最佳化結構。替代地,在此處,該確定性映射提供一規則,使得(舉例而言)給定一鍵值對,某人可計算此對將映射的L3處之子節點,即使最大樹層級(例如,樹深度)僅在L1處。在一實例中,該確定性映射包含鍵之一部分之一雜湊之一部分。因此,可對一子鍵進行雜湊以到達一映射集。可針對樹之任一給定層級使用此集之一部分。在一實例中,該鍵之該部分係整個鍵。沒有理由可不使用整個鍵。
在一實例中,該雜湊包含多個非重疊部分,該多個非重疊部分包含該雜湊之該部分。在一實例中,該多個非重疊部分中之每一者對應於樹之一層級。在一實例中,由節點之一層級依據該多個非重疊部分判定該雜湊之該部分。在一實例中,該節點之一最大子節點數目由該雜湊之該部分之一大小定義。在一實例中,該雜湊之該部分之該大小係一位元數目。此等實例可藉由採用產生8個位元的一鍵之一雜湊來圖解說明。可將此八個位元劃分成如下三個集:前兩個位元;第三個至第六個位元(產生四個位元);及第七個及第八個位元。子節點可係基於一位元集之指標,使得第
一層級(例如,L1)處之子節點具有兩個位元名稱,第二層級(例如,L2)上之子節點具有四個位元名稱,且第三層級(例如,L3)上之子節點具有兩個位元名稱。下文關於圖13及圖14包含一經展開論述。
Kvset係組織在樹100之節點中之鍵與值儲存器。Kvset之不可變性意味:kvset一旦經放置在一節點中便不改變。然而,可刪除一kvset,可將其內容中之某些或所有內容新增至一新kvset等。在一實例中,kvset之不可變性亦擴展至含納於kvset內之任何控制或後設資料。此一般係可能的,此乃因後設資料所應用至之內容係不變的且因此後設資料在彼時通常亦將係靜態的。
亦注意,KVS樹100不需要遍及樹100之鍵之間的唯一性,但一kvset具有一鍵之僅一者。亦即,一給定kvset中之每一鍵不同於該kvset之其他鍵。此最後陳述對於一特定kvset成立,且因此在(舉例而言)一kvset經版本化時可不適用。Kvset版本化對於形成資料之一快照可係有幫助的。在一經版本化kvset之情況下,藉由kvset識別(ID)與版本之一組合來判定kvset中之一鍵之唯一性。然而,兩個不同kvset(例如,kvset 115及kvset 120)可各自包含相同鍵。
在一實例中,該kvset包含一鍵樹以儲存該kvset之鍵值對之鍵項目。各種資料結構可用於高效率地儲存且擷取諸如二進制搜尋樹、B樹等鍵樹(其甚至可並非一樹)中之唯一鍵。在一實例中,該等鍵儲存於該鍵樹之葉節點中。在一實例中,該鍵樹之任一子樹中之一最大鍵在一最右邊子節點之一最右邊項目中。在一實例中,該鍵樹之一第一節點之一最右邊緣連結至該鍵樹之一子節點。在一實例中,生根於該鍵樹之該子節點處之一子樹中之所有鍵大於該鍵樹之該第一節點中之所有鍵。此最後幾個實例圖解說
明一KB樹之特徵,如下文關於圖6所論述。
在一實例中,該kvset之鍵項目儲存於包含一主要鍵區塊及零個或更多個擴展鍵區塊之一鍵區塊集中。在一實例中,該鍵區塊集之成員對應於一儲存媒體(諸如一SSD、硬碟機等)之媒體區塊。在一實例中,每一鍵區塊包含用以將其識別為一鍵區塊之一標頭。在一實例中,該主要鍵區塊包含該kvset之該一或多個擴展鍵區塊之一媒體區塊識別清單。
在一實例中,該主要鍵區塊包含該kvset之一鍵樹之一標頭。該標頭可包含若干個值以使與該等鍵或一般而言該kvset相互作用更容易。在一實例中,該主要鍵區塊或該標頭包含該kvset之一鍵樹中之一最低鍵之一複本。在此處,該最低鍵藉由該樹之一預設定排序次序(例如,樹100中之鍵之總定序)來判定。在一實例中,該主要鍵區塊包含該kvset之一鍵樹中之一最高鍵之一複本,該最高鍵藉由該樹之一預設定排序次序來判定。在一實例中,該主要鍵區塊包含該kvset之一鍵樹之一媒體區塊識別清單。在一實例中,該主要鍵區塊包含該kvset之一布隆過濾器之一布隆過濾器標頭。在一實例中,該主要鍵區塊包含該kvset之一布隆過濾器之一媒體區塊識別清單。
在一實例中,該kvset之值儲存於一值區塊集中。在此處,該值區塊集之成員對應於該儲存媒體之媒體區塊。在一實例中,每一值區塊包含用以將其識別為一值區塊之一標頭。在一實例中,一值區塊包含一或多個值之儲存區段,在該一或多個值之間不具有間隔。因此,一第一值之位元在該儲存媒體上運行成一第二值之位元,在其之間不具有一防護、容器或其他定界符。在一實例中,該主要鍵區塊包含該值區塊集中之值區塊之一媒體區塊識別清單。因此,該主要鍵區塊管理對值區塊之儲存參照。
在一實例中,該主要鍵區塊包含該kvset之一指標集。在一實例中,該指標集包含儲存於該kvset中之鍵之一總數目。在一實例中,該指標集包含儲存於該kvset中之具有標記刪除(tombstone)值之鍵之一數目。如本文中所使用,一標記刪除係指示已刪除與鍵對應之值之一資料標記(data marker)。一般而言,一標記刪除將駐存於鍵項目中且針對此鍵值對將不消耗值區塊空間。標記刪除之目的係將值之刪除加標誌同時避免清除來自樹100之值之可能昂貴操作。因此,當某人使用一時間上經定序搜尋遇到標記刪除時,某人知曉對應值經刪除,即使鍵值對之一過期版本駐存於樹100內之一較舊位置處。
在一實例中,儲存於該主要鍵區塊中之該指標集包含儲存於該kvset中之鍵之所有鍵長度之一總和。在一實例中,該指標集包含儲存於該kvset中之鍵之所有值長度之一總和。此最後兩個指標給出由該kvset消耗之儲存區之一大致(或精確)量。在一實例中,該指標集包含該kvset之值區塊中之未經參照資料(例如,未經參照值)之一量。此最後指標給出對可在一維護操作中收回之空間之一估計。下文關於圖4及圖5論述鍵區塊及值區塊之額外細節。
在一實例中,樹100包含在至少一個機器可讀媒體之一第一電腦可讀媒體中之一第一根105及在至少一個電腦可讀媒體之一第二電腦可讀媒體中之一第二根110。在一實例中,該第二根係該第一根之僅有子根。在一實例中,該第一電腦可讀媒體係可位元組定址的且其中該第二電腦可讀媒體係可區塊定址的。此在圖1中經圖解說明,其中節點105在MEM樹層級中以暗示其記憶體中位置,而節點110在L0處以暗示其在樹100之根磁盤上元件中。
上文論述證明一KVS樹100之各種組織屬性。下文關於圖7至圖25論述用以與樹100相互作用之操作,諸如樹維護(例如,最佳化、廢棄項目收集等)、搜尋等。在繼續進行至此等主題之前,圖2及圖3圖解說明利用KVS樹100之結構來實施多串流儲存裝置之一有效使用之一技術。
包括快閃記憶體之儲存裝置或SSD可更高效率地操作且在將具有一類似壽命之資料分組在快閃抹除區塊中之情況下具有更大耐久性(例如,將不「耗損」)。包括其他非揮發性媒體之儲存裝置亦可受益於將具有一類似壽命之資料分組,諸如疊瓦式磁記錄(SMR)硬碟機(HDD)。在此上下文中,若在相同時間或在一相對小時間間隔內刪除資料,則資料具有一類似壽命。用於刪除一儲存裝置上之資料之方法可包含對儲存裝置上之資料進行明確地解除分配、邏輯上覆寫或實體上覆寫。
由於一儲存裝置可一般不知曉將儲存於其內之各種資料之壽命,因此該儲存裝置可為識別與資料相關聯之一邏輯壽命群組之資料存取命令(例如,讀取或寫入)提供一介面。舉例而言,工業標準SCSI及所提議NVMe儲存裝置介面規定寫入命令,該等寫入命令包括將寫入至一儲存裝置之資料及與資料對應的稱為一串流之一壽命群組之一數字串流識別項(串流ID)。支援複數個串流之一儲存裝置係一多串流儲存裝置。
溫度係用以將資料分類之一穩定性值,藉此該值對應於將在任一給定時間間隔中刪除資料之一相對概率。舉例而言,可預期在一分鐘內刪除(或改變)HOT資料,但可預期COLD資料持續一小時。在一實例中,一有限穩定性值集可用於規定此一分類。在一實例中,該穩定性值集可係{熱,溫,冷},其中在一給定時間間隔中,經分類為熱之資料比經分類為溫之資料具有經刪除之一更高概率,經分類為溫之資料又比經分類為冷之
資料具有經刪除之一更高概率。
圖2及圖3解決基於一給定穩定性值以及關於一或多個KVS樹之資料之一或多個屬性而將不同串流ID指派給不同寫入。因此,繼續先前實例,對於一給定儲存裝置,一第一串流識別項集可與經識別為熱之資料之寫入命令一起使用,一第二串流識別項集可與經識別為溫之資料之寫入命令一起使用,且一第三串流識別項集可與經識別為冷之資料之寫入命令一起使用,其中一串流識別項在此三個集中之至多一者中。
為了便於論述圖2及圖3之多串流儲存裝置系統及技術而提供以下術語:DID係一儲存裝置之一唯一裝置識別項。
SID係一給定儲存裝置上之一串流之一串流識別項。
TEMPSET係一有限溫度值集。
TEMP係TEMPSET之一元素。
FID係一KVS樹集合之一唯一森林識別項。
TID係一KVS樹之一唯一樹識別項。KVS樹100具有一TID。
LNUM係一給定KVS樹中之一層級數,其中為了方便,將KVS樹之根節點視為在樹層級0處,將根節點之子節點(若存在)視為在樹層級1處,依此類推。因此,如所圖解說明,KVS樹100包含樹層級L0(包含節點110)至L3。
NNUM係一給定KVS樹中之一給定層級處之一給定節點之一數目,其中為了方便,NNUM可係在範圍零至(NodeCount(LNUM)-1)中之一數目,其中NodeCount(LNUM)係一樹層級處之總節點數目LNUM,使得KVS樹100中之每一節點由元組(LNUM,NNUM)唯一地識別。如圖1中所
圖解說明,在節點110處開始且自頂部至底部、自左至右而進展之節點元組之完整列出將係:L0(根):(0,0)
L1:(1,0)、(1,1)、(1,2)、(1,3)、(1,4)
L2:(2,0)、(2,1)、(2,2)、(2,3)
L3:(3,0)、(3,1)、(3,2)、(3,3)
KVSETID係一唯一kvset識別項。
WTYPE係如下文所論述之值KBLOCK或VBLOCK。
WLAST係如下文所論述之一布林值(TRUE或FALSE)。
圖2係圖解說明根據一實施例之至一多串流儲存裝置(例如,裝置260或265)之一寫入之一實例之一方塊圖。圖2圖解說明多個KVS樹,KVS樹205及KVS樹210。如所圖解說明,每一樹分別執行一寫入操作215及220。此等寫入操作由一儲存子系統225處置。該儲存子系統可係諸如用於裝置260之一裝置驅動程式,可係用以管理多個裝置(例如,裝置260及裝置265)(諸如存在於作業系統中之彼等、網路附接儲存裝置等)之一儲存產品。儲存子系統225將分別在操作250及255中及時完成至儲存裝置之寫入。串流映射電路230將一串流ID提供至一給定寫入215以在裝置寫入250中使用。
在KVS樹205中,kvset之不可變性致使一次寫入或刪除全部kvset。因此,包括一kvset之資料具有一類似壽命。可使用諸如抹除編碼或RAID之技術將包括一新kvset之資料寫入至一單個儲存裝置或寫入至數個儲存裝置(例如,裝置260及裝置265)。此外,由於kvset之大小可大於任何給定裝置寫入250,因此寫入kvset可涉及將多個寫入命令引導至一給定儲存
裝置260。為促進串流映射電路230之操作,可提供以下各項中之一或多者以用於針對每一此類寫入命令250選擇一串流ID:
A)經寫入之kvset之KVSETID;
B)儲存裝置之DID;
C)KVS樹所屬之森林之FID;
D)KVS樹之TID;
E)含有kvset之KVS樹中之節點之LNUM;
F)含有kvset之KVS樹中之節點之NNUM;
G)若寫入命令係用於DID上之KVSETID之一鍵區塊則WTYPE係KBLOCK,或若寫入命令係用於DID上之KVSETID之一值區塊則WTYPE係VBLOCK
H)若寫入命令對於DID上之一KVSETID係最後的則WLAST為TRUE,且否則為FALSE
在一實例中,對於每一此類寫入命令,稱為一串流映射元組之元組(DID,FID,TID,LNUM,NNUM,KVSETID,WTYP,WLAST)可發送至串流映射電路230。串流映射電路230可然後以將與寫入命令250一起使用的儲存子系統225之串流ID做出回應。
串流映射電路230可包含一電子硬體實施之控制器235、可存取串流ID(A-SID)表240及一選定串流ID(S-SID)表245。控制器235經配置以接受一串流映射元組作為輸入且以串流ID做出回應。在一實例中,控制器235經組態至儲存複數個KVS樹205及210之複數個儲存裝置260及265。控制器235經配置以獲得(例如,藉由組態、查詢等)可存取裝置之一組態。控制器235亦經配置以組態穩定性值集TEMPSET,且針對TEMPSET中之
每一值TEMP而組態一給定儲存裝置上之串流之一分率、數目或該數目之其他決定性因子以供藉由彼值分類之資料使用。
在一實例中,控制器235經配置以獲得(例如,經由組態、訊息等接收,自組態裝置、韌體等擷取)一溫度指派方法。在此實例中,該溫度指派方法將用於將穩定性值指派給寫入請求215。在一實例中,一串流映射元組可包含DID、FID、TID、LNUM、NNUM、KVSETID、WTYPE或WLAST中之任何一或多者且用作由控制器235執行以自TEMPSET選擇一穩定性值TEMP之溫度指派方法之輸入。在一實例中,一KVS樹範疇係特定於寫入KVS樹組件(例如,kvset)之一寫入之一參數集合。在一實例中,該KVS樹範疇包含FID、TID、LNUM、NNUM或KVSETID中之一或多者。因此,在此實例中,串流映射元組可包含KVS樹範疇之組件以及裝置特定或寫入特定組件,諸如DID、WLAST或WTYPE。在一實例中,一穩定性或溫度範疇元組TSCOPE自串流映射元組導出。下文係可用於建立TSCOPE之實例性構成KVS樹範疇組件:A)經計算為(FID,TID,LNUM)之TSCOPE;B)經計算為(LNUM)之TSCOPE;C)經計算為(TID)之TSCOPE;D)經計算為(TID,LNUM)之TSCOPE;或E)經計算為(TID,LNUM,NNUM)之TSCOPE。
在一實例中,控制器235可實施一靜態溫度指派方法。該靜態溫度指派方法可(舉例而言)自一組態檔案、資料庫、KVS樹後設資料或KVS樹105 TID或其他資料庫中之後設資料(包含儲存於KVS樹TID中之後設資料)讀取選定TEMP。在此實例中,此等資料源包含自TSCOPE至一穩定性
值之映射。在一實例中,可對映射進行快取(例如,基於控制器235之啟動或在稍後操作期間動態地)以在寫入請求到達時加速穩定性值之指派。
在一實例中,控制器235可實施一動態溫度指派方法。該動態溫度指派方法可基於將kvset寫入至TSCOPE之一頻率而計算選定TEMP。舉例而言,控制器235針對一給定TSCOPE執行溫度指派方法之頻率可經量測且在TEMPSET中之TEMPS周圍叢集化。因此,此一計算可(舉例而言)定義一頻率範圍集及自每一頻率範圍至一穩定性值之一映射,使得TEMP之值由含有將kvset寫入至TSCOPE之頻率之頻率範圍判定。
控制器235經配置以獲得(例如,經由組態、訊息等接收,自組態裝置、韌體等擷取)一串流指派方法。該串流指派方法將消耗寫入215之KVS樹205態樣以及穩定性值(例如,來自溫度指派)以產生串流ID。在一實例中,控制器235可在串流指派方法中使用串流映射元組(例如,包含KVS樹範疇)來選擇串流ID。在一實例中,可在由控制器235執行以選擇串流ID之串流指派方法中使用DID、FID、TID、LNUM、NNUM、KVSETID、WTYPE或WLAST中之任何一或多者連同穩定性值。在一實例中,一串流範疇元組SSCOPE自串流映射元組導出。下文係可用於建立SSCOPE之實例性構成KVS樹範疇組件:
A)經計算為(FID,TID,LNUM,NNUM)之SSCOPE
B)經計算為(KVSETID)之SSCOPE
C)經計算為(TID)之SSCOPE
D)經計算為(TID,LNUM)之SSCOPE
E)經計算為(TID,LNUM,NNUM)之SSCOPE
F)經計算為(LNUM)之SSCOPE
控制器235可經配置以在接受輸入之前初始化A-SID表240及S-SID表245。A-SID表240係可儲存元組(DID,TEMP,SID)之項目且可擷取具有DID及TEMP之規定值之此等項目之一資料結構(表、字典等)。記號A-SID(DID,TEMP)係指A-SID表240(若存在)中具有DID及TEMP之規定值之所有項目。在一實例中,A-SID表240可針對每一經組態儲存裝置260及265以及TEMPSET中之溫度值經初始化。A-SID表240初始化可如下繼續進行:對於每一經組態儲存裝置DID,控制器235可經配置以:A)獲得可用於DID上之串流數目,稱為SCOUNT;B)針對DID上之SCOUNT串流中之每一者獲得一唯一SID;及C)針對TEMPSET中之每一值TEMP:a)根據TEMP之經組態決定性因子計算多少SCOUNT串流將用於由TEMP分類之資料,稱為TCOUNT;及b)為尚未輸入於A-SID表240中之DID選擇TCOUNT SID,且針對DID之每一選定TCOUNT SID,在A-SID表240中建立(DID,TEMP,SID)之一個項目(例如,列)。
因此,一旦經初始化,A-SID表240便針對TEMPSET中之每一經組態儲存裝置DID及值TEMP包含經指派一唯一SID之一項目。用於獲得可用於一經組態儲存裝置260之串流數目且每一串流之一可用SID之技術因儲存裝置介面而不同,然而,此等串流係可經由多串流儲存裝置之介面容易地存取的。
S-SID表245維持已在使用中(例如,已為一給定寫入之一部分)之一串流記錄。S-SID表245係可儲存元組(DID,TEMP,SSCOPE,SID,Timestamp)之項目且可擷取或刪除具有DID、TEMP及視情況SSCOPE之
規定值之此等項目的一資料結構(表、字典等)。記號S-SID(DID,TEMP)係指S-SID表245(若存在)中具有DID及TEMP之規定值之所有項目。與A-SID表240一樣,S-SID表245可由控制器235初始化。在一實例中,控制器235經配置以針對每一經組態儲存裝置260及265以及TEMPSET中之溫度值初始化S-SID表245。
如上文所述,S-SID表245中之項目表示用於寫入操作之當前或已經經指派串流。因此,一般而言,S-SID表245在初始化之後係空的,項目在指派串流ID時由控制器235建立。
在一實例中,控制器235可實施一靜態串流指派方法。該靜態串流指派方法針對一給定DID、TEMP及SSCOPE選擇相同串流ID。在一實例中,該靜態串流指派方法可判定S-SID(DID,TEMP)是否具有針對SSCOPE之一項目。若不存在符合項目,則該靜態串流指派方法自A-SID(DID,TEMP)選擇一串流ID SID且在S-SID表245中建立針對(DID,TEMP,SSCOPE,SID,timestamp)之一項目,其中時間戳記(timestamp)係在選擇之後之當前時間。在一實例中,自A-SID(DID,TEMP)之選擇係隨機的,或為一循環程序之結果。一旦找到或建立來自S-SID表245之項目,便使串流ID SID返回至儲存子系統225。在一實例中,若WLAST為真,則刪除S-SID表245中針對(DID,TEMP,SSCOPE)之項目。此最後實例證明使WLAST發信號通知對於樹205而非對於儲存子系統225將為已知之一kvset或類似者之一寫入215之完成的有用性。
在一實例中,控制器235可實施一最近最少使用(LRU)之串流指派方法。該LRU串流指派方法在一相對小時間間隔內針對一給定DID、TEMP及SSCOPE選擇相同串流ID。在一實例中,該LRU指派方法判定S-
SID(DID,TEMP)是否具有針對SSCOPE之一項目。若存在該項目,則該LRU指派方法選擇此項目中之串流ID且將S-SID表245中之此項目中之時間戳記設定至當前時間。
若SSCOPE項目不在S-SID(DID,TEMP)中,則該LRU串流指派方法判定項目S-SID(DID,TEMP)數目是否等於項目A-SID(DID,TEMP)數目。若此為真,則該LRU指派方法自S-SID(DID,TEMP)中具有最舊時間戳記之項目選擇串流ID SID。在此處,用新項目(DID,TEMP,SSCOPE,SID,timestamp)替換S-SID表245中之項目,其中時間戳記(timestamp)係在選擇之後之當前時間。
若存在少於A-SID(DID,TEMP)項目之S-SSID(DID,TEMP)項目,則該方法自A-SID(DID,TEMP)選擇一串流ID SID,使得S-SID(DID,TEMP)中不存在具有選定串流ID之項目且在S-SID表245中建立針對(DID,TEMP,SSCOPE,SID,timestamp)之一項目,其中時間戳記(timestamp)係在選擇之後之當前時間。
一旦找到或建立來自S-SID表245之項目,便使串流ID SID返回至儲存子系統225。在一實例中,若WLAST為真,則刪除S-SID表245中針對(DID,TEMP,SSCOPE)之項目。
在操作中,控制器235經組態以為經接收作為寫入請求215之一部分之一給定串流映射元組指派一穩定性值。一旦判定該穩定性值,控制器235便經配置以指派SID。溫度指派方法及串流指派方法可各自參照且更新A-SID表240及S-SID表245。在一實例中,控制器235亦經配置以將SID提供給一請求者,諸如儲存子系統225。
基於KVS樹範疇而使用串流ID准許相似資料共置在多串流儲存裝置
260上之抹除區塊270中。此減少裝置上之廢棄項目收集且因此可增加裝置效能及壽命。此益處可擴展至多個KVS樹。KVS樹可用於一森林或小樹林中,(藉由一FID辨識)藉此使用數個KVS樹來實施一單個結構,諸如一檔案系統。舉例而言,一個KVS樹可使用區塊編號作為鍵且使用區塊中之位元作為一值,而一第二KVS樹可使用檔案路徑作為鍵且使用一區塊編號清單作為該值。在此實例中,由路徑參照之一給定檔案之kvset與保存區塊編號之kvset很可能具有類似壽命。
上文所闡述之結構及技術提供實施KVS樹及諸如快閃儲存裝置之儲存裝置之系統中之若干個優點。在一實例中,實施儲存於一或多個儲存裝置上之數個KVS樹之一運算系統可使用KVS樹之知識來更高效率地選擇多串流儲存裝置中之串流。舉例而言,該系統可經組態使得經執行用於KVS樹之同步寫入操作(例如,攝取或壓縮)數目係基於任一給定儲存裝置上為指派給藉由此等寫入操作而寫入之kvset資料之溫度分類預留之串流之數目而限定的。此係可能的,此乃因在一kvset內,彼資料之壽命預期在kvset全部經寫入及刪除時係相同的。如別處所述,可將鍵與值分隔。因此,鍵寫入將具有在執行下文所論述之鍵壓縮時可能短於值壽命之相同壽命。另外,樹層級在實驗上似乎係資料壽命、較舊資料及因此較大(例如,較深)樹層級(具有比較高樹層級處之較年輕資料長之一壽命)之一強烈指示。
以下情景可進一步闡明串流映射電路230限定寫入之操作,考量到:
A)溫度值{熱,冷},其中一給定儲存裝置上之H串流用於經分類為熱之資料,且一給定儲存裝置上之C串流用於經分類為冷之資料。
B)組態有經計算為(LNUM)之TSCOPE之一溫度指派方法,藉此
給寫入至任一KVS樹中之L0之資料指派熱之一溫度值,且給寫入至任一KVS樹中之L1或更大層級之資料指派冷之一溫度值。
C)組態有經計算為(TID,LNUM)之SSCOPE之一LRU串流指派方法。
在此情形中,所有KVS樹之同步攝取及壓縮操作(產生一寫入之操作)之總數目遵循此等條件:所有KVS樹之同步攝取操作至多係H,此乃因用於所有攝取操作之資料經寫入至一KVS樹中之層級0且因此將經分類為熱,且所有KVS樹之同步壓縮操作至多係C,此乃因用於所有溢寫壓縮及大多數其他壓縮操作之資料經寫入至層級1或更大層級且因此將經分類為冷。
其他此類限定係可能的且可取決於KVS樹及控制器235之特定實施細節而係有利的。舉例而言,給定如上文而組態之控制器235,攝取操作數目係H之一分率(例如,二分之一)及壓縮操作數目係C之一分率(例如,四分之三)可係有利的,此乃因具有經計算為(TID,LNUM)之SSCOPE之LRU串流指派可不利用一串流映射元組中之WLAST來在接收到TID中之一給定KVSET之最後寫入之後旋即移除不需要S-SID表245項目,從而產生一次優SID選擇。
儘管上文在KVS樹之上下文中闡述串流映射電路230之操作,但諸如LSM樹實施方案之其他結構可同樣地受益於本文中所呈現之概念。諸多LSM樹變體儲存鍵值對及標記刪除集合,藉此一給定集合可藉由一攝取操作或廢棄項目收集操作(通常稱為一壓縮或合併操作)來建立,且然後在稍後完全經刪除而作為一隨後攝取操作或廢棄項目收集操作之結果。因此,包括此一集合之資料具有一類似壽命,如包括一KVS樹中之一kvset之資
料。因此,類似於上文之串流映射元組之一元組可針對大多數其他LSM樹變體經定義,其中由一給定LSM樹變體中之一攝取操作或廢棄項目收集操作建立之鍵值對或標記刪除集合之一唯一識別項替換可KVSETID。串流映射電路230可然後如所闡述而用於為儲存包括此一鍵值對與標記刪除集合之資料之該複數個寫入命令選擇串流識別項。
圖3圖解說明根據一實施例之用以促進寫入至一多串流儲存裝置之一方法300之一實例。方法300之操作用諸如在本申請案全篇(包含關於圖26之下文)所闡述之電子硬體(例如,電路)來實施。方法300提供若干個實例以實施上文關於圖2之論述。
在操作305處,接收對一多串流儲存裝置之一KVS樹寫入請求之通知。在一實例中,該通知包含與該寫入請求中之資料對應之一KVS樹範疇。在一實例中,該KVS樹範疇包含以下各項中之至少一者:與該資料之一kvset對應之一kvset ID;與對應於該資料的KVS樹之一節點對應之一節點ID;與對應於該資料之一樹層級對應之一層級ID;該KVS樹之一樹ID;與該KVS樹所屬之森林對應之一森林ID;或與該資料對應之一類型。在一實例中,該類型係一鍵區塊類型或一值區塊類型。
在一實例中,該通知包含該多串流裝置之一裝置ID。在一實例中,該通知包含與用以將由該kvset ID識別之一kvset寫入至該多串流儲存裝置之一寫入請求序列中之一最後寫入請求對應之一WLAST旗標。
在操作310處,基於該KVS樹範疇及該寫入請求之一穩定性值而將一串流識別項(ID)指派給該寫入請求。在一實例中,指派該穩定性值包含:針對對應於一樹層級之一層級ID維持穩定性值指派之一頻率集,該頻率集之每一成員對應於一唯一層級ID;自該頻率集擷取與該KVS樹範疇中之
一層級ID對應之一頻率;及基於該頻率而自穩定性值至頻率範圍之一映射選擇一穩定性值。
在一實例中,基於該KVS樹範疇及該寫入請求之該穩定性值而將該串流ID指派給該寫入請求包含依據該KVS樹範疇建立一串流範疇值。在一實例中,該串流範疇值包含該資料之一層級ID。在一實例中,該串流範疇值包含該資料之一樹ID。在一實例中,該串流範疇值包含該資料之一層級ID。在一實例中,該串流範疇值包含該資料之一節點ID。在一實例中,該串流範疇值包含該資料之一kvset ID。
在一實例中,基於該KVS樹範疇及該寫入請求之該穩定性值而將該串流ID指派給該寫入請求亦包含使用該串流範疇值在一選定串流資料結構中執行一查找。在一實例中,在該選定串流資料結構中執行該查找包含:未能在該選定串流資料結構中找到該串流範疇值;使用該穩定性值對一可用串流資料結構執行一查找;接收包含一串流ID的該查找之一結果;及將一項目新增至該選定串流資料結構,該項目包含該串流ID、該串流範疇值及在新增該項目時之一時間之一時間戳記。在一實例中,該可用串流資料結構之多個項目對應於該穩定性值,且其中該查找之該結果係來自該多個項目之一項目之一循環或隨機選擇中之至少一者。在一實例中,該可用串流資料結構可藉由以下方式而初始化:獲得可自該多串流儲存裝置獲得之一串流數目;獲得可自該多串流儲存裝置獲得之所有串流之一串流ID,每一串流ID係唯一的;將串流ID新增至穩定性值群組;及在該可用串流資料結構中針對每一串流ID建立一記錄,該記錄包含該串流ID、該多串流儲存裝置之一裝置ID及與該串流ID之一穩定性值群組對應之一穩定性值。
在一實例中,在該選定串流資料結構中執行該查找包含:未能在該選定串流資料結構中找到該串流範疇值;基於該選定串流資料結構之內容而定位來自該選定串流資料結構或一可用串流資料結構之一串流ID;及將一項目建立至該選定串流資料結構,該項目包含該串流ID、該串流範疇值及在新增該項目時之一時間之一時間戳記。在一實例中,基於該選定串流資料結構之內容而定位來自該選定串流資料結構或一可用串流資料結構之該串流ID包含:比較來自該選定串流資料結構之一第一項目數目與來自該可用串流資料結構之一第二項目數目以判定該第一項目數目與該第二項目數目係相等的;定位來自該選定串流資料結構之與該穩定性值對應之一項目群組;及傳回該項目群組中具有最舊時間戳記之一項目之一串流ID。在一實例中,基於該選定串流資料結構之內容而定位來自該選定串流資料結構或一可用串流資料結構之該串流ID包含:比較來自該選定串流資料結構之一第一項目數目與來自該可用串流資料結構之一第二項目數目以判定該第一項目數目與該第二項目數目係不相等的;使用該選定串流資料結構之項目中之該穩定性值及串流ID對該可用串流資料結構執行一查找;接收包含未在該選定串流資料結構之該等項目中之一串流ID的該查找之一結果;及將一項目新增至該選定串流資料結構,該項目包含該串流ID、該串流範疇值及在新增該項目時之一時間之一時間戳記。
在一實例中,基於該KVS樹範疇及該寫入請求之該穩定性值而將該串流ID指派給該寫入請求亦包含傳回來自該選定串流資料結構之與該串流範疇對應之一串流ID。在一實例中,傳回來自該選定串流資料結構之與該串流範疇對應之該串流ID包含更新該選定串流資料結構中與該串流ID對應之一項目之一時間戳記。在一實例中,該寫入請求包含一WLAST旗
標,且其中傳回來自該選定串流資料結構之與該串流範疇對應之該串流ID包含自該選定串流資料結構移除與該串流ID對應之一項目。
在一實例中,方法300可經擴展以包含自該選定串流資料結構移除具有超過一臨限值之一時間戳記之項目。
在操作315處,傳回該串流ID以管理至該寫入請求之串流指派,其中該串流指派修改該多串流儲存裝置之一寫入操作。
在一實例中,方法300可視情況經擴展以包含基於該KVS樹範疇而指派該穩定性值。在一實例中,該穩定性值係一預定義穩定性值集中之一者。在一實例中,該預定義穩定性值集包含HOT、WARM及COLD,其中HOT指示該多串流儲存裝置上之該資料之一最低預期壽命,且COLD指示該多串流儲存裝置上之該資料之一最高預期壽命。
在一實例中,指派該穩定性值包含使用該KVS樹範疇之一部分定位來自一資料結構之該穩定性值。在一實例中,該KVS樹範疇之該部分包含該資料之一層級ID。在一實例中,該KVS樹範疇之該部分包含該資料之一類型。
在一實例中,該KVS樹範疇之該部分包含該資料之一樹ID。在一實例中,該KVS樹範疇之該部分包含該資料之一層級ID。在一實例中,該KVS樹範疇之該部分包含該資料之一節點ID。
圖4係根據一實施例之圖解說明用於鍵及值之一儲存組織之一實例之一方塊圖。一kvset可使用鍵區塊來儲存以保存鍵(視需要連同標記刪除)且使用值區塊來儲存以保存值。針對一給定kvset,該等鍵區塊亦可含有指標及其他資訊(諸如布隆過濾器)以用於高效率地定位一單個鍵、定位一鍵範圍或產生包含鍵標記刪除之kvset中之所有鍵之總定序且用於獲得與彼
等鍵相關聯之值(若存在)。
在圖4中表示一單個kvset。該等鍵區塊包含一主要鍵區塊410(包含標頭405)及一擴展鍵區塊415(包含一擴展標頭417)。該等值區塊分別包含標頭420及440以及值425、430、435及445。第二值區塊亦包含自由空間450。
Kvset之一樹表示經圖解說明以橫跨鍵區塊410及415。在此圖解說明中,葉節點含有對值425、430、435及445之值參照(VID)及具有標記刪除之兩個鍵。此圖解說明:在一實例中,標記刪除不具有在一值區塊中之一對應值,即使其可稱為一類型之鍵值對。
對該等值區塊之圖解說明證明每一值區塊可具有一標頭及在不進行劃定之情況下彼此相鄰之值。對諸如值425之一值之值區塊中之特定位元之參照一般(舉例而言)以一位移且擴展格式儲存於對應鍵項目中。
圖5係根據一實施例之圖解說明鍵區塊及值區塊之一組態之一實例之一方塊圖。圖5之鍵區塊與值區塊組織圖解說明擴展鍵區塊及值區塊之一般簡單本質。具體而言,每一者一般係一簡單儲存容器,該簡單儲存容器具有用以識別其類型(例如,鍵區塊或值區塊)之一標頭及可能一大小、在儲存區上之位置或其他後設資料。在一實例中,值區塊包含具有指示其係一值區塊之一魔術數字(magic number)之一標頭540及用以儲存值位元之儲存區545。鍵擴展區塊包含指示其係一擴展區塊之一標頭525且儲存鍵結構530之一部分,諸如一KB樹、B樹或類似者。
主要鍵區塊除簡單儲存鍵結構之外亦為諸多kvset後設資料提供一位置。主要鍵區塊包含鍵結構520之一根。主要鍵區塊亦可包含一標頭505、布隆過濾器510或鍵結構515之一部分。
對主要鍵區塊之組件之參照包含在標頭505、諸如布隆過濾器510之區塊或根節點520中。諸如kvset大小、值區塊位址、壓縮效能或使用之指標亦可含納在標頭505中。
布隆過濾器510在建立kvset時經計算且提供一準備就緒機制以在不對鍵結構執行一搜尋之情況下確定一鍵是否不在kvset中。此進步允許如下文所述之掃描操作之更大效率。
圖6圖解說明根據一實施例之一KB樹600之一實例。將在一kvset之鍵區塊中使用之一實例性鍵結構係KB樹。KB樹600具有與B+樹之結構類似性。在一實例中,KB樹600具有4096位元組節點(例如,節點605、610及615)。KB樹之所有鍵駐存於葉節點(例如,節點615)中。內部節點(例如,節點610)具有選定葉節點鍵之複本以導覽樹600。一鍵查找之結果係一值參照,其可係(在一實例中)對一值區塊ID、一位移及一長度。
KB樹600具有以下性質:
A)生根於一邊緣鍵K之子節點處之子樹中之所有鍵小於或等於K。
B)任一樹或子樹中之最大鍵係最右邊葉節點中之最右邊項目。
C)給定具有指向子節點R之一最右邊邊緣之一節點N,生根於節點R處之子樹中之所有鍵大於節點N中之所有鍵。
可經由一個二進制搜尋在根節點605中之鍵當中搜尋KB樹600以找到適當「邊緣」鍵。可遵循至邊緣鍵之子節點之連結。然後重複此程序直至在一葉節點615中找到一匹配或未找到匹配為止。
由於kvset一旦經建立且不改變,因此建立KB樹600可不同於隨時間而變之其他樹結構。可以一自下而上方式建立KB樹600。在一實例中,首
先建立葉節點615,後續接著其父節點610,依此類推直至留下一個節點(根節點605)為止。在一實例中,建立以一單個空葉節點(當前節點)開始。將每一新鍵新增至當前節點。在當前節點變滿時,建立一新葉節點且其成為當前節點。當新增最後鍵時,所有葉節點係完整的。此時,使用來自每一葉節點之最大鍵作為輸入串流,以一類似方式建立下一向上層級處之節點(亦即,葉節點之父節點)。當耗盡彼等鍵時,彼層級係完整的。重複此程序直至最近建立之層級由一單個節點(根節點605)組成為止。
若在建立期間當前鍵區塊變滿,則可將新節點寫入至一擴展鍵區塊。在一實例中,自一第一鍵區塊跨越至一第二鍵區塊之一邊緣包含對第二鍵區塊之一參照。
圖7係根據一實施例之圖解說明KVS樹攝取之一方塊圖。在一KVS樹中,將一新kvset寫入至根節點730之程序稱為一攝取。鍵值對705(包含標記刪除)累積在KVS樹之記憶體710中,且經組織至自最新kvset715至最舊kvset720而定序之若干kvset中。在一實例中,kvset 715可係可變的以同時接受鍵值對。此係KVS樹中之僅有可變kvset變體。
攝取725將主要記憶體710中之最舊kvset 720中之鍵值對及標記刪除寫入至KVS樹之根節點730中之一新(且最新)kvset 735,且然後自主要記憶體710刪除彼kvset 720。
圖8圖解說明根據一實施例之用於KVS樹攝取之一方法800之一實例。方法800之操作用諸如在本申請案全篇(包含關於圖26之下文)所闡述之電子硬體(例如,電路)來實施。
在操作805處,接收一鍵值集(kvset)以儲存於一鍵值資料結構中。在此處,該鍵值資料結構經組織為一樹且該kvset包含唯一鍵至值之一映
射。該kvset之鍵及值係不可變的且樹之節點具有一時間上經定序之kvset序列。
在一實例中,當將一kvset寫入至至少一個儲存媒體時,該kvset係不可變的。在一實例中,其中該kvset之鍵項目儲存於包含一主要鍵區塊及零個或更多個擴展鍵區塊之一鍵區塊集中。在此處,該鍵區塊集之成員對應於至少一個儲存媒體之媒體區塊,其中每一鍵區塊包含用以將其識別為一鍵區塊之一標頭。
在一實例中,該主要鍵區塊包含該kvset之該一或多個擴展鍵區塊之一媒體區塊識別清單。在一實例中,該主要鍵區塊包含該值區塊集中之值區塊之一媒體區塊識別清單。在一實例中,該主要鍵區塊包含該kvset之一鍵樹中之一最低鍵之一複本,該最低鍵藉由該樹之一預設定排序次序來判定。在一實例中,該主要鍵區塊包含該kvset之一鍵樹中之一最高鍵之一複本,該最高鍵藉由該樹之一預設定排序次序來判定。在一實例中,該主要鍵區塊包含該kvset之一鍵樹之一標頭。在一實例中,該主要鍵區塊包含該kvset之一鍵樹之一媒體區塊識別清單。在一實例中,該主要鍵區塊包含該kvset之一布隆過濾器之一布隆過濾器標頭。在一實例中,該主要鍵區塊包含該kvset之一布隆過濾器之一媒體區塊識別清單。
在一實例中,將值儲存於一值區塊集中。在此處,該值區塊集之成員對應於該至少一個儲存媒體之媒體區塊,其中每一值區塊包含用以將其識別為一值區塊之一標頭。在一實例中,一值區塊包含在值之間不具有間隔之一或多個值之儲存區段。
在一實例中,該主要鍵區塊包含該kvset之一指標集。在一實例中,該指標集包含儲存於該kvset中之鍵之一總數目。在一實例中,該指標集
包含儲存於該kvset中之具有標記刪除值之鍵之一數目。在一實例中,該指標集包含儲存於該kvset中之鍵之所有鍵長度之一總和。在一實例中,該指標集包含儲存於該kvset中之鍵之所有值長度之一總和。在一實例中,該指標集包含該kvset之值區塊中之未經參照資料之一量。
在操作810處,將該kvset寫入至該樹之一根節點之一kvset序列。
方法800可經擴展以包含操作815至825。
在操作815處,接收一鍵及一對應值以儲存於該鍵值資料結構中。
在操作820處,將該鍵及該值放置在一初步kvset中,該初步kvset係可變的。在一實例中,寫入至該初步根節點之一速率超過一臨限值。在此實例中,方法800可經擴展以抑制對鍵值資料結構之寫入請求。
在操作825處,在達到一指標時將該kvset寫入至該鍵值資料結構。在一實例中,該指標係一初步根節點之一大小。在一實例中,該指標係一經過時間。
一旦已發生攝取,便可採用各種維護操作來維護KVS樹。舉例而言,若一鍵在一個時間以一第一值寫入且在一稍後時間以一第二值寫入,則移除第一鍵值對將釋放空間或減少搜尋時間。為解決此等問題中之某些問題,KVS樹可使用壓縮。下文關於圖9至圖18論述數個壓縮操作之細節。所圖解說明壓縮操作係廢棄項目收集之形式,此乃因其可在合併期間移除已淘汰資料,諸如鍵或鍵值對。
壓縮發生在各種觸發條件下,諸如當一節點中之kvset滿足規定或經計算準則時。此壓縮準則之實例包含該等kvset之總大小或該等kvset中之廢棄項目量。kvset中之廢棄項目之一個實例係(舉例而言)因一較新kvset中之一鍵值對或標記刪除或已違反一存留時間約束之一鍵值對以及其他原
因而被淘汰的一個kvset中之鍵值對或標記刪除。Kvset中之廢棄項目之另一實例係由鍵壓縮產生的值區塊中之未經參照資料(未經參照值)。
一般而言,一壓縮操作之輸入係在滿足壓縮準則時一節點中之kvset中之某些或所有kvset。此等kvset稱為一合併集且包括兩個或兩個以上kvset之一時間上連續序列。
由於一般在攝取新資料時觸發壓縮,因此方法800可經擴展以支援壓縮,然而,亦可在(舉例而言)存在自由處理資源或其他便利情景以執行維護時觸發以下操作。
因此,可壓縮KVS樹。在一實例中,回應於一觸發而執行壓縮。在一實例中,該觸發係一時間週期之一期滿。
在一實例中,該觸發係節點之一指標。在一實例中,該指標係節點之kvset之一總大小。在一實例中,該指標係節點之一kvset數目。在一實例中,該指標係節點之未經參照值之一總大小。在一實例中,該指標係未經參照值之一數目。
圖9係根據一實施例之圖解說明鍵壓縮之一方塊圖。鍵壓縮自合併集讀取鍵及標記刪除而非值,移除所有已淘汰鍵或標記刪除,將所得鍵及標記刪除寫入至一或多個新kvset中(例如,藉由寫入至新鍵區塊中),自節點刪除鍵儲存器而非值。該等新kvset在內容及節點中kvset自最新至最舊之邏輯定序內之放置之兩個方面原子地替換且邏輯上等效於合併集。
如所圖解說明,kvset KVS3(最新)、KVS2及KVS1(最舊)經歷節點之鍵壓縮。當合併此等kvset之鍵儲存器時,發生鍵A及B上之衝突。由於新kvset(KVS4(下文所圖解說明))可僅含有每一經合併鍵之一者,因此解決該等衝突以支持最近(如所圖解說明之最左邊)鍵,從而分別參考鍵A及
B之值ID 10及值ID 11。鍵C不具有衝突且因此將包含於新kvset中。因此,將係新kvset(KVS4)之一部分之鍵項目在頂部節點中經加陰影。
出於說明性目的,KVS4經繪製以橫跨節點中之KVS1、KVS2及KVS3,且值項目在節點中之一類似位置中經繪製。此等位置之目的證明在一鍵壓縮中不改變值,而是僅改變鍵。如下文所闡釋,此藉由減少在任一給定節點中搜尋之kvset數目而提供一更高效率搜尋且亦可提供用以指導維護操作之有價值見解。亦注意,以短劃線來圖解說明值20及30,從而表示其存留於節點中但不再由一鍵項目參照,此乃因在壓縮中移除了其各別鍵項目。
鍵壓縮係非阻斷的,此乃因在壓縮期間可將一新kvset(例如,KVS5)放置在KVS3或KVS4之最新位置中(例如,在左邊),因為按照定義,所新增kvset將邏輯上比由鍵壓縮產生之kvset(例如,KVS4)新。
圖10圖解說明根據一實施例之用於鍵壓縮之一方法1000之一實例。方法1000之操作用諸如在本申請案全篇(包含關於圖26之下文)所闡述之電子硬體(例如,電路)來實施。
在操作1005處,選擇來自節點之一kvset序列之一kvset子集。在一實例中,該kvset子集係連續kvset且包含一最舊kvset。
在操作1010處,定位一衝突鍵集。該衝突鍵集之成員包含該節點之該kvset序列中之至少兩個kvset中之鍵項目。
在操作1015處,將該衝突鍵集之每一成員之一最近鍵項目新增至一新kvset。在其中節點不具有子節點且其中kvset子集包含最舊kvset之一實例中,將該衝突鍵集之每一成員之該最近鍵項目寫入至該新kvset且將未在該衝突鍵集中的該kvset子集之成員中之每一鍵之項目寫入至該新kvset
包含省略包含一標記刪除之任何鍵項目。在其中節點不具有子節點且其中kvset子集包含最舊kvset之一實例中,將該衝突鍵集之每一成員之該最近鍵項目寫入至該新kvset且將未在該衝突鍵集中的該kvset子集之成員中之每一鍵之項目寫入至該新kvset包含省略期滿之任何鍵項目。
在操作1020處,將未在該衝突鍵集中的該kvset子集之成員中之每一鍵之項目新增至該新kvset。在一實例中,操作1020及1015可同時操作以將項目新增至該新kvset。
在操作1025處,藉由寫入該新kvset且移除(例如,刪除、加刪除標誌等)該kvset子集而用該新kvset替換該kvset子集。
圖11係根據一實施例之圖解說明鍵值壓縮之一方塊圖。鍵值壓縮在其值處理方面不同於鍵壓縮。鍵值壓縮自合併集讀取鍵值對及標記刪除,移除已淘汰鍵值對或標記刪除,將所得鍵值對及標記刪除寫入至同一節點中之一或多個新kvset,且自節點刪除包括該合併集之kvset。該等新kvset在內容及節點中kvset自最新至最舊之邏輯定序內之放置之兩個方面原子地替換且邏輯上等效於合併集。
如所圖解說明,kvset KVS3、KVS2及KVS1包括合併集。經加陰影鍵項目及值將保持在合併中且放置在新KVS4中,將新KVS4寫入至節點以替換KVS3、KVS2及KVS1。再次,如上文關於鍵壓縮所圖解說明,解決鍵A及B之鍵衝突以支持最近項目。鍵值壓縮與鍵壓縮之不同之處在於未經參照值之移除。因此,在此處,KVS4經圖解說明以僅消耗保存其當前鍵及值所需要之空間。
在實務上,舉例而言,當鍵及值單獨地儲存於鍵區塊及值區塊中時,KVS4包含新鍵區塊(與鍵壓縮之結果相同)及新值區塊(與鍵壓縮之結
果不同)兩者。再次,然而,鍵值壓縮不阻止在正執行鍵值壓縮時將額外kvset寫入至節點,此乃因所新增kvset將邏輯上比KVS4(鍵值壓縮之結果)新。因此,在節點之最舊位置中(例如,在右邊)圖解說明KVS4。
圖12圖解說明根據一實施例之用於鍵值壓縮之一方法1200之一實例。方法1200之操作用諸如在本申請案全篇(包含關於圖26之下文)所闡述之電子硬體(例如,電路)來實施。
在操作1205處,選擇來自節點之一kvset序列之一kvset子集(例如,一合併集)。在一實例中,該kvset子集係連續kvset且包含一最舊kvset。
在操作1210處,定位一衝突鍵集。該衝突鍵集之成員包含該節點之該kvset序列中之至少兩個kvset中之鍵項目。
在操作1215處,將該衝突鍵集之每一成員之一最近鍵項目及對應值新增至一新kvset。在其中節點不具有子節點且其中合併集含有最舊kvset之一實例中,將該衝突鍵集之每一成員之該最近鍵項目寫入至該新kvset且將未在該衝突鍵集中的該kvset子集之成員中之每一鍵之項目寫入至該新kvset包含省略包含一標記刪除之任何鍵項目。在其中節點不具有子節點且其中合併集含有最舊kvset之一實例中,將該衝突鍵集之每一成員之該最近鍵項目寫入至該新kvset且將未在該衝突鍵集中的該kvset子集之成員中之每一鍵之項目寫入至該新kvset包含省略期滿之任何鍵項目。
在操作1220處,將未在該衝突鍵集中的該kvset子集之成員中之每一鍵之項目及值新增至該新kvset。
在操作1225處,藉由寫入該新kvset(例如,寫入至儲存區)且移除該kvset子集而用該新kvset替換該kvset子集。
下文關於圖15至圖18所論述之溢寫及上升壓縮係一種形式之鍵值壓
縮,其中合成kvset分別放置在一子節點或一父節點中。由於每一者遍歷樹且KVS樹實行父節點與子節點之間的一確定性映射,因此在論述此等其他壓縮操作之前在此處呈現此確定性映射之一簡要論述。
圖13圖解說明根據一實施例之一溢寫值及其與一樹之關係之一實例。該確定性映射確保:給定一鍵,某人可在不顧及KVS樹之內容之情況下知曉一鍵值對將映射至哪一子節點。一溢寫函數接受一鍵且產生與KVS樹之確定性映射對應之一溢寫值。在一實例中,該溢寫函數接受鍵及一當前樹層級兩者且產生彼樹層級處之鍵之一父節點或一子節點所特有之一溢寫值。
藉由闡釋方式,一簡單確定性映射(圖13中未圖解說明)可包含(舉例而言)一按字母順序之映射,其中對於由字母表字元構成之鍵,每一樹層級針對字母表之每一字母包含一子節點,且映射又使用該等鍵之字元;諸如第一字元判定L1子節點,第二字元判定L2子節點,依此類推。雖然簡單且滿足KVS樹之確定性映射,但本技術在剛度、樹中之不良平衡及對樹扇之控制之一缺乏方面存在一些困難。
一較佳技術係對鍵執行一雜湊且為每一樹層級映射指定雜湊之若干部分。此確保鍵在其遍歷樹時均勻地散佈(採用一充足雜湊技術)且藉由針對任一給定樹層級選擇雜湊部分之大小而控制扇出。此外,由於雜湊技術一般允許組態合成雜湊之大小,因此可確保充足數目個位元(舉例而言),從而避免關於上文所論述之簡單技術之一問題,其中一短語(諸如「該」)僅具有足以用於一個三層級樹之字元。
圖13圖解說明具有分別與樹之L1、L2及L3對應之部分1305、1310及1315之鍵雜湊之一結果。關於給定樹雜湊,樹之一遍歷沿著短劃線及節
點繼續前進。具體而言,在根節點1320處開始,部分1305將遍歷引導至節點1325。接下來,部分1310將遍歷引導至節點1330。當部分1315指向在樹之最深層級處之節點1335時遍歷完成,此基於所圖解說明鍵雜湊之大小及分派而係可能的。
在一實例中,對於一給定鍵K,鍵K(或鍵K之一子鍵)之一雜湊稱為鍵K之溢寫值。應注意,兩個不同鍵可具有相同溢寫值。當採用子鍵來產生溢寫值時,出現此情況以達成如下文所論述之首碼掃描或標記刪除通常係合意的。
在一實例中,對於一給定KVS樹,一給定鍵K之溢寫值係一常數,且溢寫值之二進制表示包括B個位元。在此實例中,一溢寫值中之B個位元經編號為0至(B-1)。而且在此實例中,KVS樹經組態使得樹層級L處之節點全部具有相同數目個子節點,且此子節點數目係大於或等於2的2之一整數冪。在此組態中,可如下文所圖解說明而使用用於鍵分配之一鍵K之溢寫值之位元。
對於在KVS樹中之一層級L處之一節點,使2^E(L)係經組態以用於該節點之子節點數目,其中2^E(L)>=2。然後,對於KVS樹中之一給定節點及一給定鍵K,鍵K之溢寫值如下規定用於溢寫壓縮之節點之子節點:A)層級0:溢寫值位元0至(E(0)-1)規定鍵K之子節點數目;B)層級1:溢寫值位元E(0)至(E(0)+E(1)-1)規定鍵K之子節點數目;及C)層級L(L>1):溢寫值位元sum(E(0),...,E(L-1))至(sum(E(0),...,E(L))-1)規定鍵K之子節點數目。
其中層級係KVS樹中之一層級數;子節點計數係經組態以用於規定層級處之所有節點之子節點數目;溢寫值位元係溢寫壓縮針對規定層級處之鍵分配所使用之溢寫值位元數目;鍵K溢寫值係給定鍵K之給定16位元溢寫值之二進制表示,具體而言0110011110100011-為了清晰,將溢寫值分段成溢寫壓縮針對規定層級處之鍵分配所使用之位元;且所選擇之子節點係溢寫壓縮針對具有給定溢寫值之任何(非已淘汰)鍵值對或標記刪除而選擇之子節點數目-此包含具有給定鍵K之所有(非已淘汰)鍵值對或標記刪除,以及不同於鍵K之可具有相同溢寫值之其他鍵。
在一實例中,對於一給定KVS樹,溢寫值計算及溢寫值大小(以位元為單位)對於所有鍵可係相同的。如上文所述,使用一充足雜湊准許控制溢寫值中之位元數目同時亦(舉例而言)確保足以容納所要數目個樹層級及每一層級處之節點之所要數目個子節點的一溢寫值大小。在一實例中,對於一給定KVS樹,一鍵K之溢寫值可視需要而計算或儲存於儲存媒體上(例如,經快取)。
圖14圖解說明根據一實施例之用於一溢寫值函數之一方法1400之一實例。方法1400之操作用諸如在本申請案全篇(包含關於圖26之下文)所闡述之電子硬體(例如,電路)來實施。
在操作1405處,提取一鍵之一部分。在一實例中,該鍵之該部分係整個鍵。
在操作1410處,自該鍵之該部分導出一溢寫值。在一實例中,自該鍵之該部分導出該溢寫值包含執行該鍵之該部分之一雜湊。
在操作1415處,基於父節點之樹層級而傳回溢寫值之一部分。在一實例中,基於該父節點之該樹層級而傳回該溢寫值之該部分包含將一預設定分派應用於該溢寫值且傳回與該預設定分派及該父節點之該樹層級對應的該溢寫值之該部分。在此處,該預設定分派定義應用於樹之各別層級的溢寫值之部分。
在一實例中,該預設定分派定義該等樹層級中之至少某些樹層級之子節點之一最大數目。在一實例中,該預設定分派定義樹之一最大深度。在一實例中,該預設定分派定義一位元計數序列,每一位元計數規定一位元數目,該序列自低樹層級至高樹層級而定序,使得最低樹層級之溢寫值部分等於與在溢寫值之起點開始之第一位元計數相等之一位元數目且第n個樹層級之溢寫值部分等於該位元計數序列中之第n個位元計數,其中以第一位元計數開始且以一n-1位元計數結束之位元計數之總和之溢寫值中具有一位移。
圖15係根據一實施例之圖解說明溢寫壓縮之一方塊圖。如上文所述,溢寫壓縮係一鍵值壓縮與一樹遍歷(至一子節點)之一組合以得到合成kvset。因此,溢寫壓縮(或僅僅溢寫)自合併集讀取鍵值對及標記刪除,移除所有已淘汰鍵值對或標記刪除(廢棄項目),將所得鍵值對及標記刪除寫入至含有合併集之節點之子節點中之某些或所有子節點中新kvset,且刪除包括該合併集之該等kvset。此等新kvset原子地替換且邏輯上等效於合
併集。
溢寫壓縮使用用於將一合併集中之鍵值對及標記刪除分配至含有該合併集之節點之子節點的一確定性技術。具體而言,溢寫壓縮可使用任何此類鍵分配方法,使得對於一給定節點及一給定鍵K,溢寫壓縮始終將具有鍵K之任何(非已淘汰)鍵值對或標記刪除寫入至彼節點之相同子節點。
在一較佳實施例中,溢寫壓縮使用一基於數基之鍵分配方法,諸如下文詳細呈現之實例中之鍵分配方法。
為促進對一溢寫之理解,父節點包含包括合併集之兩個kvset。該兩個kvset中之鍵值對1505、1510及1515分別具有00X、01X及11X之溢寫值,其分別對應於父節點之四個子節點中之三個子節點。因此,將鍵值對1505放置至新kvset X中,將鍵值對1510放置至新kvset Y中,且將鍵值對1515放置至新kvset Z中,其中將每一新kvset寫入至對應於溢寫值之子節點。亦注意,將新kvset寫入至各別子節點中之最新(例如,最左邊)位置。
在一實例中,用於一溢寫壓縮之合併集必須包含含有合併集之節點中之最舊kvset。在一實例中,若含有合併集之節點在一溢寫壓縮之開始不具有子節點,則建立經組態數目個子節點。
正如上文所論述之其他壓縮,可在正執行溢寫壓縮時將新kvset新增至含有用於一溢寫壓縮之合併集之節點,此乃因按照定義此等所新增kvset將不在用於溢寫壓縮之合併集中且此乃因此等所新增kvset將邏輯上比由溢寫壓縮產生之kvset新。
圖16圖解說明根據一實施例之用於溢寫壓縮之一方法1600之一實例。方法1600之操作用諸如在本申請案全篇(包含關於圖26之下文)所闡述之電子硬體(例如,電路)來實施。
在操作1605處,選擇kvset序列之一子集。在一實例中,該子集包含亦包含一最舊kvset之連續kvset。
在操作1610處,計算該kvset子集之每一kvset中之每一鍵之一子節點映射。在此處,該子節點映射係基於一特定鍵及一父節點之一樹層級而自該父節點至一子節點之一確定性映射。
在操作1615處,基於其中每一kvset集恰好映射至一個子節點之子節點映射而將鍵及對應值收集至kvset中。在此收集期間可發生鍵衝突。如上文關於圖10及圖12所論述,解決此一衝突以支持較新鍵項目。
在操作1620處,將該等kvset寫入至各別子節點中之各別kvset序列中之一最新位置。
在操作1625處,自根節點移除該kvset子集。
方法1600可經擴展以包含在溢寫操作之操作之後回應於一子節點之一指標超過一臨限值而對該子節點執行一第二溢寫操作。
圖17係根據一實施例之圖解說明上升壓縮之一方塊圖。上升壓縮與溢寫壓縮之不同之處在於:將新kvset寫入至一父節點。因此,上升壓縮或僅僅上升自合併集讀取鍵值對及標記刪除,移除所有已淘汰鍵值對或標記刪除,將所得鍵值對及標記刪除寫入至含有合併集之節點之父節點中之新kvset,且刪除包括合併集之kvset。此等新kvset原子地替換且邏輯上等效於合併集。
由於一KVS樹中之kvset自樹之根至葉而經組織自最新至最舊,因此一上升壓縮包含將含有合併集之節點中之最新kvset及由該上升壓縮產生之kvset放置在節點之父節點中之kvset序列中之最舊位置中。與上文所論述之其他壓縮不同,為了確保來自經壓縮之節點之最新kvset在合併集
中,在正執行上升壓縮時不可將新kvset新增至含有合併集之節點。因此,上升壓縮係一阻斷壓縮。
如所圖解說明,KVS 1705及1710之鍵值對經合併至新KVS M 1715中且儲存於父節點之kvset序列中之最舊位置中。當(舉例而言)目標係減少一KVS樹中之層級數目且因此增加在KVS樹中對鍵之搜尋之效率時可將一上升壓縮應用於一合併集。
圖18圖解說明根據一實施例之用於上升壓縮之一方法1800之一實例。方法1800之操作用諸如在本申請案全篇(包含關於圖26之下文)所闡述之電子硬體(例如,電路)來實施。
在操作1805處,對子節點執行一鍵與值壓縮以產生一新kvset而不將該新kvset寫入至該子節點。
在操作1810處,將該新kvset在該節點之一kvset序列之一最舊位置中寫入至該節點。
鍵值壓縮、溢寫壓縮及上升壓縮操作可自一合併集實體上移除已淘汰鍵值對及標記刪除且可因此減少儲存於一KVS樹中之鍵值資料量(舉例而言以位元組為單位)。在如此操作時,此等壓縮操作自(舉例而言)合併集中之值區塊讀取非已淘汰值,且將此等值寫入至由壓縮操作產生之kvset中之值區塊。
相比之下,一鍵壓縮操作可自一合併集實體上移除鍵(及標記刪除)但僅邏輯上移除值。因此,該等值實體上仍然在由鍵壓縮產生之kvset中。鍵壓縮可藉由以下方式增加對含有合併集之節點中之鍵進行搜尋之效率:減少彼節點中之kvset數目同時避免由(舉例而言)一鍵值壓縮操作引發之值區塊之額外讀取及寫入。此外,鍵壓縮提供對於未來維護操作有用之資
訊。鍵壓縮由於如上文所闡述之鍵區塊中之鍵與值區塊中之值之分隔而由KVS樹唯一地支撐。
在滿足一觸發條件時操作上文所闡述之KVS樹維護技術(例如,壓縮)。控制何時及在何處(例如,哪些節點)發生維護可對比經增加空間或搜尋效率而提供對處理或者所花費時間之最佳化。在維護期間或在攝取期間搜集之某些指標可增強系統最佳化稍後維護操作之能力。在此處,此等指標稱為一廢棄項目指標或基於計算指標之方式的一經估計廢棄項目指標。此等廢棄項目指標之實例包含一節點中之已淘汰鍵值對及標記刪除之數目或其消耗之儲存容量之量及由一節點中之值區塊中之未經參照資料消耗之儲存容量之量。此等廢棄項目指標指示可藉由對一節點之kvset執行(舉例而言)一鍵值壓縮、溢寫壓縮或上升壓縮而消除多少廢棄項目。
再次,針對一給定KVS樹,計算或估計其節點之廢棄項目指標會提供數個優點,該等優點包含使如下各項為實際的:A)優先考量將廢棄項目收集操作(特定而言實體上移除已淘汰鍵值對及標記刪除之廢棄項目收集操作,諸如鍵值壓縮、溢寫壓縮及上升壓縮)應用於具有大部分廢棄項目之彼等節點。以此方式優先考量廢棄項目收集操作會增加其效率且減小相關聯寫入放大率;或B)估計KVS樹中之有效鍵值對數目及已淘汰鍵值對數目以及由每一類別消耗之儲存容量之量。此等估計在報告KVS樹之容量利用率方面係有用的。
在某些情形中,直接計算一KVS樹中之一給定節點之廢棄項目指標係有利的,然而在其他情形中估計該等廢棄項目指標係有利的。因此,下文闡述用於計算及估計廢棄項目指標兩者之技術。
為促進廢棄項目指標之收集,可搜集或維持某些kvset統計資料。在一實例中,此等統計資料維持在kvset集自身內,諸如kvset之一主要鍵區塊標頭中。下文係可維持之kvset統計資料之一非詳盡清單:
A)鍵值對數目
B)鍵標記刪除數目
C)儲存鍵值對及標記刪除之所有鍵所需要之容量
D)儲存鍵值對之所有值所需要之容量
E)包含最小值、最大值、中間值及平均值之鍵大小統計資料
F)包含最小值、最大值、中間值及平均值之值大小統計資料
G)在kvset係一鍵壓縮之結果之情況下未經參照值之計數及由未經參照值消耗之容量。
H)任一鍵值對之最小及最大存留時間(TTL)值。一KVS樹可允許使用者規定在儲存一鍵值對時之一TTL值,且若超過其壽命則將在一壓縮操作期間移除該鍵值對。
經計算廢棄項目指標涉及已知量之計算以產生一已知結果。舉例而言,若已知存在在一kvset中已淘汰之n個位元,則對kvset進行鍵值壓縮將引起釋放彼等n個位元。用於經計算廢棄項目指標之一指標源係鍵壓縮。鍵壓縮自一合併集邏輯上移除已淘汰鍵值對及標記刪除且實體上移除冗餘鍵。然而,未經參照資料可保持在由鍵壓縮產生之kvset之值區塊中。因此,鍵壓縮引起知曉哪些值在新kvset中未經參照及其大小。知曉彼等值之大小准許將在其他壓縮下經釋放之儲存區之一精確計數。因此,當對一KVS樹中之一合併集執行一鍵壓縮時,可將所得kvset中之每一者之廢棄項目指標記刪除錄在各別kvset中。可自一鍵壓縮維持之實例性廢
棄項目指標包含:
A)kvset中之未經參照值之計數
B)kvset中之未經參照值之位元組
在一實例中,給定對一合併集之一第一鍵壓縮,且給定在與第一鍵壓縮相同之節點中之一第二鍵壓縮,其中第二鍵壓縮之合併集包含由第一鍵壓縮產生之kvset,則可將自第一鍵壓縮記錄之廢棄項目指標新增至自第二鍵壓縮記錄之相似廢棄項目指標。舉例而言,若第一鍵壓縮操作產生具有規定未經參照值之Ucnt計數之相關聯鍵壓縮廢棄項目指標之一單個kvset S,則Ucnt可包含於由第二鍵壓縮操作產生之鍵壓縮廢棄項目指標中之未經參照值之計數中。
在一實例中,對於一KVS樹中之一給定節點,若用於一鍵壓縮操作之合併集包含節點中之所有kvset,則所記錄之鍵壓縮廢棄項目指標可包含:
A)節點中之未經參照值之計數
B)節點中之未經參照值之位元組
顯然,若一給定節點中之每一kvset係一鍵壓縮操作之結果,則該節點之鍵壓縮廢棄項目指標係來自該節點中之個別kvset中之每一者之相似鍵壓縮廢棄項目指標之總和。
經估計廢棄項目指標提供估計來自對一節點執行一壓縮之增益之一值。一般而言,在不執行一鍵壓縮之情況下搜集經估計廢棄項目指標。在下文論述中使用以下術語。使:
A)T=給定節點中之kvset數目
B)S(j)=給定節點中之一kvset,其中S(1)係最舊kvset且S(T)係最
新kvset
C)KVcnt(S(j))=S(j)中之鍵值對數目
D)NKVcnt=sum(KVcnt(S(j))),其中j在範圍1至T中
E)Kcap(S(j))=以位元組為單位的儲存S(j)之所有鍵所需要之容量
F)NKcap=sum(Kcap(S(j))),其中j在範圍1至T中
G)Vcap(S(j))=以位元組為單位的儲存S(j)之所有值所需要之容量
H)NVcap=sum(Vcap(S(j))),其中j在範圍1至T中
I)NKVcap=NKcap+NVcap
一種形式之經估計廢棄項目指標係歷史廢棄項目指標。歷史廢棄項目收集資訊可用於估計一KVS樹中之一給定節點之廢棄項目指標。此歷史廢棄項目收集資訊之實例包含但不限於:A)在給定節點中之廢棄項目收集操作之先前執行中已淘汰鍵值對之分率之簡單、累積或經加權移動平均數;或B)在與給定節點相同的KVS樹之層級處之任一節點中之廢棄項目收集操作之先前執行中已淘汰鍵值對之分率之簡單、累積或經加權移動平均數。
在以上實例中,廢棄項目收集操作包含但不限於鍵壓縮、鍵值壓縮、溢寫壓縮或上升壓縮。給定一KVS樹中之一節點,歷史廢棄項目收集資訊及kvset統計資料提供資訊以產生節點之經估計廢棄項目指標。
在一實例中,可執行一節點簡單移動平均數(NodeSMA)以建立歷史廢棄項目指標。在此處,使NSMA(E)=在給定節點中之廢棄項目收集操作之最近E執行中已淘汰鍵值對之分率之平均值,其中E係可組態的。在此實例中,給定節點之NodeSMA經估計廢棄項目指標可包含以下各項:
A)節點中之已淘汰鍵值對之NKVcnt * NSMA(E)計數;B)節點中之已淘汰鍵值資料之NKVcap * NSMA(E)個位元組;C)節點中之有效鍵值對之NKVcnt-(NKVcnt * NSMA(E))計數;或D)節點中之有效鍵值資料之NKVcap-(NKVcap * NSMA(E))個位元組。
關於歷史廢棄項目指標之另一變體包含層級簡單移動平均數(LevelSMA)廢棄項目指標。在此實例中,使LSMA(E)=在與給定節點相同的KVS樹之層級處之任一節點中之廢棄項目收集操作之最近E執行中已淘汰鍵值對之分率之平均值,其中E係可組態的。在此實例中,給定節點之LevelSMA經估計廢棄項目指標可包含:A)節點中之已淘汰鍵值對之NKVcnt * LSMA(E)計數;B)節點中之已淘汰鍵值資料之NKVcap * LSMA(E)個位元組;C)節點中之有效鍵值對之NKVcnt-(NKVcnt * LSMA(E))計數;或D)節點中之有效鍵值資料之NKVcap-(NKVcap * LSMA(E))個位元組。
歷史廢棄項目指標之以上實例並非詳盡的,而是圖解說明經搜集之指標之類型。其他實例性歷史廢棄項目指標可包含節點累積移動平均數(NodeCMA)廢棄項目指標、節點經加權移動平均數(NodeWMA)廢棄項目指標、層級累積移動平均數(LevelCMA)廢棄項目指標或層級經加權移動平均數(LevelWMA)廢棄項目指標。
關於對於維持鍵之kvset中之布隆過濾器之KVS樹可用之經估計廢棄
項目指標之另一變體係布隆過濾器廢棄項目指標。如上所述,在一KVS樹之一實例中,一給定kvset包含一布隆過濾器以高效率地判定kvset是否可含有一給定鍵,其中在kvset之布隆過濾器中針對kvset中之每一鍵存在一個項目。此等布隆過濾器可用於估計一KVS樹中之一給定節點之廢棄項目指標。對於一KVS樹中之一給定節點,技術(諸如在Papapetrou、Odysseas等人之Cardinality Estimation and Dynamic Length Adaptation for Bloom Filters,Distributed and Parallel Databases,201中所論述)可用於大致估計由包括節點之kvset中之布隆過濾器表示之鍵集之交集之基數(cardinality)。此經大致估計值在此處稱為節點之經布隆估計基數。
給定一KVS樹中之一節點,該節點之經布隆估計基數及kvset統計資料准許以數種方式產生該節點之經估計廢棄項目指標。一實例性布隆過濾器廢棄項目指標包含BloomDelta廢棄項目指標。使NBEC=給定節點中之T個kvset之經布隆估計基數,且Fobs=(NKVcnt-NBEC)/NKVcnt,其係對給定節點中之已淘汰鍵值對之分率之一估計。在此實例中,給定節點之BloomDelta廢棄項目指標可包含:A)節點中之已淘汰鍵值對之NKVcnt-NBEC計數;B)節點中之已淘汰鍵值資料之NKVcap * Fobs個位元組;C)節點中之有效鍵值對之NBEC計數;或D)節點中之有效鍵值資料之NKVcap-(NKVcap * Fobs)個位元組。
不同於布隆過濾器之概率濾波器(可能針對其大致估計由兩個或兩個以上此類濾波器表示之鍵集之交集之基數)可在經估計廢棄項目指標中用作布隆過濾器之一替代者。
經計算且經估計廢棄項目指標可經組合以產生混合廢棄項目指標,即,由於包含另一形式之經估計廢棄項目指標而成為另一形式之經估計廢棄項目指標。舉例而言,給定包括T個kvset之一節點,若鍵壓縮廢棄項目指標可用於此等kvset中之W個kvset且W<T,則可如下產生節點之混合廢棄項目指標。對於節點中之W個kvset(鍵壓縮廢棄項目指標針對其係可用的),使:A)KGMOcnt=對W個kvset中之已淘汰鍵值對之計數之一估計+來自W個kvset中之每一者之未經參照值之計數之總和;B)KGMOcap=對W個kvset中之已淘汰鍵值資料之位元組之一估計+來自W個kvset中之每一者之未經參照值之位元組之總和;C)KGMVcnt=對W個kvset中之有效鍵值對之計數之一估計;及D)KGMVcap=對W個kvset中之有效鍵值資料之位元組之一估計。
其中可在W個kvset係節點中之僅有kvset之假定下使用上文所論述之技術中之一者產生經估計廢棄項目指標。
對於節點中之(T-W)個kvset(鍵壓縮廢棄項目指標針對其並非可用的),使:A)EGMOcnt=對(T-W)個kvset中之已淘汰(廢棄項目)鍵值對之計數之一估計;B)EGMOcap=對(T-W)個kvset中之已淘汰(廢棄項目)鍵值資料之位元組之一估計;C)EGMVcnt=對(T-W)個kvset中之有效鍵值對之計數之一估計;及
D)EGMVcap=對(T-W)個kvset中之有效鍵值資料之位元組之一估計。
其中可在(T-W)個kvset係節點中之僅有kvset之假定下使用上文所論述之技術中之一者產生此等經估計廢棄項目指標。給定此等參數,給定節點之混合廢棄項目指標可包含:A)節點中之已淘汰鍵值對之KGMOcnt+EGMOcnt計數;B)節點中之已淘汰鍵值資料之KGMOcap+EGMOcap個位元組;C)節點中之有效鍵值對之KGMVcnt+EGMVcnt計數;或D)節點中之有效鍵值資料之KGMVcap+EGMVcap個位元組。
廢棄項目指標允許針對具有足以有理由進行一廢棄項目收集操作之額外負荷之量之廢棄項目之樹層級或節點優先考量廢棄項目收集操作。以此方式優先考量廢棄項目收集操作會增加其效率且減小相關聯寫入放大率。另外,估計樹中之有效鍵值對數目及已淘汰鍵值對數目以及由每一類別消耗之儲存容量之量在報告樹之容量利用率方面係有用的。
圖19圖解說明根據一實施例之用於執行對一KVS樹之維護之一方法1900之一實例。方法1900之操作用諸如在本申請案全篇(包含關於圖26之下文)所闡述之電子硬體(例如,電路)來實施。
在操作1905處,針對一KVS樹中之一節點建立一kvset。作為該kvset建立之一部分,針對該kvset計算一kvset指標集。在一實例中,該kvset指標集包含該kvset中之一鍵值對數目。在一實例中,該kvset指標集包含該kvset中之一標記刪除數目。在一實例中,該kvset指標集包含用以儲存針對該kvset中之鍵值對及標記刪除之所有鍵項目之一儲存容量。在一實例
中,該kvset指標集包含用於該kvset中之鍵值對之所有值之一儲存容量。
在一實例中,該kvset指標集包含用於該kvset中之鍵之鍵大小統計資料。在一實例中,該等鍵大小統計資料包含最大值、最小值、中間值或平均值中之至少一者。在一實例中,該kvset指標集包含用於該kvset中之鍵之值大小統計資料。在一實例中,該等值大小統計資料包含最大值、最小值、中間值或平均值中之至少一者。
在一實例中,該kvset指標集包含該kvset中之一鍵值對之一最小或一最大存留時間(TTL)值。當一攝取操作規定一鍵值對將為有效之一週期時TTL可係有用的。因此,在鍵值對期滿之後,經由一壓縮操作回收係一主要目標。
在一實例中,回應於一壓縮操作而建立kvset。在此處,該壓縮操作係一鍵壓縮、一鍵值壓縮、一溢寫壓縮或一上升壓縮中之至少一者。在一實例中,該壓縮操作係一鍵壓縮。在此實例中,該kvset指標集可包含由於該鍵壓縮而產生之該kvset中之未經參照值之指標。在一實例中,該等未經參照值指標包含未經參照值之一計數或由未經參照值消耗之一儲存容量中之至少一者。如本文中所使用,視情況而定以由用以保存鍵項目或值之一基礎儲存裝置使用之位元、位元組、區塊或類似者為單位而量測所消耗之儲存容量。
在其中藉由一壓縮操作建立kvset之一實例中,該kvset指標集可包含對kvset中之已淘汰鍵值對之一估計。如本文中所使用,該估計係如此,此乃因壓縮僅深入瞭解經由壓縮之合併集中之已淘汰(例如,作廢)鍵值對,且因此不知曉是否藉由並非壓縮之一部分之一較新kvset中之一項目而使一看似當前鍵值對為已淘汰的。在一實例中,對已淘汰鍵值對之該估
計可藉由對來自預壓縮kvset之未包含於kvset中之鍵項目之一數目求和而計算。因此,作為一壓縮之一部分,關於合併集之一已淘汰對數目將係已知的且可用作對經建立kvset中之已淘汰資料之一估計。類似地,對kvset中之有效鍵值對之一估計可藉由對來自預壓縮kvset之包含於kvset中之鍵項目之一數目求和而計算且係該kvset指標集之一部分。在一實例中,該kvset指標集包含kvset中之已淘汰鍵值對之一經估計儲存大小。在一實例中,包含kvset中之有效鍵值對之一經估計儲存大小,有效鍵值對之該經估計儲存大小係藉由對來自預壓縮kvset之包含於kvset中之鍵項目及對應值之儲存大小求和而計算。此等估計可用於歷史指標,此乃因除非執行一鍵壓縮,否則將在壓縮中移除經估計已淘汰值。然而,若一節點在一壓縮中具有一普通(例如,歷史)效能,則某人可假定此效能在未來持續下去。
在一實例中,該kvset指標集儲存於kvset中(例如,一主要鍵區塊標頭中)。在一實例中,該kvset指標集儲存於節點中且未儲存於kvset中。在一實例中,kvset指標之一子集儲存於kvset中且kvset指標之一第二子集儲存於節點中。
在操作1910處,將kvset新增至節點。一般而言,一旦新增至節點,便亦寫入kvset(例如,寫入至磁碟上儲存區)。
在操作1915處,基於該kvset指標集中之一指標而針對一壓縮操作選擇節點。因此,kvset指標或下文所論述之節點指標或兩者可藉由一廢棄項目收集器或類似樹維護程序而促成一決定。在一實例中,針對該壓縮操作選擇該節點包含:針對多個節點收集kvset指標集;基於該等kvset指標集而將該多個節點排序;及基於來自該排序之一排序次序而選擇該多個節點之一子集。在此實例中,可實施操作1920使得對該節點執行該壓縮操
作包含對該多個節點(包含該節點)之子集中之每一節點執行該壓縮操作。在一實例中,該多個節點之該子集之一基數由一效能值設定。在一實例中,該效能值係如由所恢復空間量測之執行該壓縮之一效率。此可通常實施為一臨限值。在一實例中,可使用一臨限值函數,該臨限值函數接受若干個參數(諸如留在基礎儲存裝置上之未使用儲存容量之量及對將在壓縮操作中回收之容量之一估計)以得出關於是否執行一給定壓縮操作之一決定。
在操作1920處,對節點執行壓縮操作。在一實例中,基於該kvset指標集中之一指標而選擇一壓縮操作類型(例如,鍵壓縮、鍵值壓縮、溢寫壓縮或上升壓縮)。
方法1900之操作可經擴展以包含回應於將該kvset新增至該節點而修改節點指標。在一實例中,該等節點指標包含經受對包含該節點之一節點群組執行之先前壓縮之kvset中之經估計已淘汰鍵值對之一分率之一值。在一實例中,該值係一簡單平均數。在一實例中,該值係一移動平均數。在一實例中,該值係一經加權平均數。在一實例中,該值係經受針對該節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。在一實例中,該值係經受針對該節點之一樹層級處之所有節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。
在一實例中,節點群組僅包含該節點。在一實例中,該節點群組包含在該節點之一樹層級上之所有節點。在一實例中,該等節點指標包含由一壓縮操作產生之該kvset指標集中之相似指標與來自對該節點執行之壓縮操作之先前kvset指標之一總和。
在一實例中,該等節點指標包含在該kvset及該節點之一不同kvset中係相同之鍵之一經估計數目。在一實例中,鍵之該估計數目係藉由以下方式而計算:自該kvset獲得一第一鍵布隆過濾器;自該不同kvset獲得一第二鍵布隆過濾器;及將該第一鍵布隆過濾器與該第二鍵布隆過濾器進行交集運算以產生一節點布隆過濾器估計之基數(NBEC)。儘管將此實例寫為在兩個kvset之間(例如,來自兩個kvset之僅兩個布隆過濾器之交集),但可將任一數目個kvset布隆過濾器進行交集運算以得出NBEC,該NBEC表示對所有kvset(其布隆過濾器係交集之一部分)所共有之鍵之數目之估計。
在一實例中,該等節點指標包含自一NKVcnt值減去該NBEC以估計節點中之已淘汰鍵值對之一數目。在此處,該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之節點之每一kvset中之鍵值對之一總計數。在一實例中,該等節點指標包含將一NKVcap值乘以一Fobs值。在此處,該NKVcap值係由其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點中之每一kvset中之鍵及值使用之一總儲存容量,且該Fobs值係自一NKVcnt值減去該NBEC且除以NKVcnt之結果,其中該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點之每一kvset中之鍵值對之一總計數。
在一實例中,該等節點指標儲存於該節點中。在此處,該等節點指標連同來自其他節點之節點指標一起經儲存。在一實例中,該等節點指標儲存於一樹層級中,該樹層級對於該KVS樹之一層級中之所有節點係共同的。
可藉由在特定情況下修改KVS樹或其中之元素(例如,標記刪除)之普
通操作而以若干種方式輔助該等廢棄項目收集指標及上文所闡述之用以改良KVS樹效能之其使用。實例可包含標記刪除加速度、更新標記刪除、首碼標記刪除或不可變資料KVS樹。
一標記刪除表示一KVS樹中之一經刪除鍵值。當將一標記刪除壓縮在該KVS樹之一葉中且該壓縮包含葉中之最舊kvset時,其實際上經移除,但以其他方式仍然阻止在一搜尋中傳回鍵之一可能已淘汰值。在產生具有子節點之一節點上之合併集中之一標記刪除之一鍵壓縮或鍵值壓縮中,標記刪除加速度包含遵循用於KVS樹中之溢寫壓縮之鍵分配方法而將非已淘汰標記刪除寫入至此等子節點中之某些或所有子節點中之一或多個新kvset。
若用於一鍵壓縮或鍵值壓縮操作之合併集包含含有合併集之節點中之最舊kvset,則經加速度標記刪除(若存在)不需要包含於藉由壓縮操作在彼節點中建立之新kvset中。以其他方式,若用於一鍵壓縮或鍵值壓縮操作之合併集不包含含有合併集之節點中之最舊kvset,則經加速度標記刪除(若存在)亦包含於藉由壓縮操作在彼節點中建立之新kvset中。將經加速度標記刪除分配至KVS樹之較舊區域中藉由在不等待將原始標記刪除推動至子節點之情況下允許子節點中之鍵值對之移除而促進廢棄項目收集。
一鍵壓縮或鍵值壓縮操作可應用規定或經計算準則以判定是否亦執行標記刪除加速度。此標記刪除加速度準則之實例包含但不限於一合併集中之非已淘汰標記刪除數目及可係已知或一估計的藉由一合併集中之標記刪除經邏輯上刪除之鍵值資料量(舉例而言,以位元組為單位)。
更新標記刪除以類似於經加速度標記刪除之方式來操作,儘管原始攝取值並非一標記刪除。本質上,當將一新值新增至KVS樹時,可對彼鍵
之所有較舊值進行廢棄項目收集。將與一經加速度標記刪除近似之一標記刪除沿著樹向下推動將允許對此等子節點之壓縮以移除已淘汰值。
在一實例中,在一KVS樹中,一攝取操作將一新kvset新增至根節點,且此新kvset中具有鍵K之一鍵值對包含如下之一旗標或其他指示符:其係替換包含於一較早攝取操作中之具有鍵K之一鍵值對的一更新鍵值對。此指示符係準確的係一預期而非一要求。若具有鍵K之一更新鍵值對與一攝取操作一起經包含,且若根節點具有子節點,則該攝取操作亦可遵循用於KVS樹中之溢寫壓縮之鍵分配方法而將鍵K之一鍵標記刪除(更新標記刪除)寫入至根節點之一子節點中之一新kvset。
在一實例中,另一選擇係,對根節點中之一合併集之一鍵壓縮或鍵值壓縮操作可回應於處理具有鍵K之一更新鍵值對而亦遵循用於KVS樹中之溢寫壓縮之鍵分配方法而將鍵K之一鍵標記刪除(再次稱為更新標記刪除)寫入至根節點之一子節點中之一新kvset。在一實例中,對於具有鍵K之一給定更新鍵值對,針對鍵K寫入至少一個對應更新標記刪除。
雖然下文關於圖25論述KVS樹首碼操作,但該概念亦可用於標記刪除中。在首碼操作中,鍵之一部分(首碼)用於匹配。一般而言,鍵之首碼部分全部用於建立溢寫值,儘管一較小部分可與較深樹判定一起使用,從而在消耗首碼路徑之後扇出至所有子節點。首碼標記刪除使用匹配多個值之首碼之冪以使一單個項目表示諸多鍵值對之刪除。
在一實例中,溢寫壓縮基於鍵中之第一子鍵之一溢寫值而使用一鍵分配方法,該第一子鍵係鍵首碼。首碼標記刪除係包括鍵首碼之一邏輯記錄且指示以首碼及其相關聯值(若存在)開始之所有鍵已在一特定時間點自KVS樹邏輯上刪除。一首碼標記刪除在一KVS樹中用於與一鍵標記刪除
相同之目的,惟一首碼標記刪除可邏輯上刪除一個以上有效鍵值對然而一鍵標記刪除可邏輯上刪除精確地一個有效鍵值對除外。在此實例中,由於溢寫壓縮使用由首碼規定之第一子鍵值產生一首碼標記刪除之一溢寫值,因此具有等效第一子鍵值之每一鍵值對、鍵標記刪除或首碼標記刪除將採取穿過KVS樹之層級之相同路徑,此乃因其將具有等效溢寫值。
在一實例中,標記刪除加速度可應用於首碼標記刪除以及鍵標記刪除。在應用標記刪除加速度準則時首碼標記刪除可以不同於鍵標記刪除之方式來處理,此乃因首碼標記刪除可在隨後廢棄項目收集操作中引起大量已淘汰鍵值對或標記刪除之實體移除。
上文所論述之標記刪除加速度技術引起建立更大數目個kvset且因此可係低效率的。由於一應用程式寫入資料可知曉先前寫入之資料之大小,因此一標記刪除可包含其依據應用程式而替換之資料之一大小。此資訊可由系統使用以判定是否執行上文所論述之標記刪除加速度(或產生更新標記刪除)。
某些資料可係不可變的。不可變鍵值資料之某些實例包含時序資料、日誌資料、感測器資料、機器產生之資料及資料庫提取、變換與載入(ETL)程序之輸出以及其他。在一實例中,一KVS樹可經組態以儲存不可變鍵值資料。在此一組態中,藉由一攝取操作新增至KVS樹之kvset不含有標記刪除係預期而非要求。
在一實例中,一KVS樹可經組態以儲存僅受含有KVS樹之儲存媒體之容量限定的一定量之不可變資料。在一KVS樹之此一組態中,所執行之僅有廢棄項目收集操作係鍵壓縮。在此處,執行鍵壓縮以藉由減少根節點中之kvset數目而增加對KVS樹中之鍵之搜尋之效率。注意,在不具有溢
寫壓縮之情況下,根節點將係KVS樹中之僅有節點。在一實例中,壓縮準則可包含根節點中之kvset數目或鍵搜尋時間統計資料,諸如最小、最大、平均數及平均值搜尋時間。此等統計資料可在特定事件時經重設,諸如在一鍵壓縮之後、在一攝取操作之後、在一經組態時間間隔期滿時或在執行經組態數目次鍵搜尋之後。在一實例中,用於一鍵壓縮之合併集可包含根節點中之kvset中之某些或所有kvset。
在一實例中,KVS樹可經組態以儲存受一保留準則限定之一定量之不可變資料,該保留準則可藉由以一先進先出(FIFO)方式自KVS樹移除鍵值對來實行。此保留準則之實例包含:KVS樹中之鍵值對之最大計數;KVS樹中之鍵值資料之最大位元組;或KVS樹中之一鍵值對之最大年齡。
在一KVS樹之此一組態中,所執行之僅有廢棄項目收集操作係鍵壓縮。在此處,執行鍵壓縮以既增加對KVS樹中之鍵之搜尋之效率(藉由減少根節點中之kvset數目)又促進以一FIFO方式自KVS樹移除鍵值對從而實行保留準則。在一實例中,壓縮準則可規定每當根節點(包括用於鍵壓縮之合併集)中之兩個或兩個以上連續kvset滿足稱為保留增量之保留準則之一經組態分率時執行一鍵壓縮。下文係保留要求之某些實例:A)若保留準則係KVS樹中之W個鍵值對,且保留增量係0.10 * W個鍵值對,則在兩個或兩個以上連續kvset(合併集)具有一經組合0.10 * W計數之鍵值對之情況下執行鍵壓縮;B)若保留準則係KVS樹中之鍵值資料之X個位元組,且保留增量係鍵值資料之0.20 * X個位元組,則在兩個或兩個以上連續kvset(合併集)具有一經組合0.20 * X個位元組之鍵值資料之情況下執行鍵壓縮;或
C)若保留準則係KVS樹中之鍵值資料之Y天,且保留增量係鍵值資料之0.15 * Y天,則在兩個或兩個以上連續kvset(合併集)具有一經組合0.15 * Y天之鍵值資料之情況下執行鍵壓縮。
可存在其中要求用於一鍵壓縮之合併集精確地滿足經組態保留增量係不實際之情形。因此,在一實例中,可使用保留增量之一大致估計。
給定一KVS樹及各自低於經組態保留增量之kvset之一攝取操作序列,執行如上文所闡述之鍵壓縮操作產生各自滿足或大致估計保留增量的根節點中之kvset。此結果之一例外可係最新kvset,其經組合可低於保留增量。不管此可能結果,每當KVS樹超過保留準則達至少保留增量時,便可刪除KVS樹中之最舊kvset。舉例而言,若保留準則係一KVS樹中之W個鍵值對,且經組態保留增量係0.10 * W個鍵值對,則KVS樹之根節點中之kvset將各自具有大致0.10 * W個鍵值對,其中可能例外的係最新kvset經組合可具有少於0.10 * W個鍵值對。作為一結果,每當KVS樹超過W個鍵值對達至少0.10 * W個鍵值對時,便可刪除KVS樹中之最舊kvset。
標記刪除加速度、更新加速度或首碼標記刪除之廢棄項目收集促進器可應用於除KVS樹以外之其他鍵值儲存器。舉例而言,標記刪除加速度或更新標記刪除可藉助一或多個廢棄項目收集操作應用於一LSM樹變體中,該一或多個廢棄項目收集操作將鍵值資料寫入至同一樹層級(自其讀取該鍵值資料)且以類似於一KVS樹中之鍵壓縮或鍵值壓縮之方式操作。更新標記刪除亦可應用於一LSM樹變體,其中准許將標記刪除攝取至根節點之子節點中。在另一實例中,首碼標記刪除可用於一LSM樹變體中,該LSM樹變體每層級具有僅一個節點(此係常見的)或實施一鍵分配方法以用於基於一鍵之一部分(諸如一子鍵)而選擇子節點。在另一實例中,標記刪
除刪除大小可使用標記刪除加速度應用於一LSM樹變體中。此外,用於最佳化對不可變鍵值資料之廢棄項目收集之技術可藉助不讀取或寫入鍵值資料中之值之一廢棄項目收集操作(類似於一KVS樹中之鍵壓縮)應用於一LSM樹變體。
實施此等廢棄項目收集促進器會改良一KVS樹或若干資料結構中之廢棄項目收集之效率。舉例而言,標記刪除加速度引起將標記刪除寫入至樹之較低層級早於在應用鍵壓縮、鍵值壓縮或一類似操作時將以其他方式所發生的,藉此使得可能在樹之所有層級處更迅速地消除廢棄項目。連同鍵壓縮或一類似操作使用之標記刪除加速度達成具有遠小於將由溢寫壓縮產生之寫入放大率之此等結果。在其他實例中,首碼標記刪除允許一單個標記刪除記錄邏輯上刪除大量相關鍵值對,更新標記刪除將標記刪除加速度之益處帶至更新鍵值對,標記刪除刪除大小在估計標記刪除加速度準則時改良準確度,且用於最佳化對不可變鍵值資料之廢棄項目收集之技術產生鍵值資料中之值之為一(1)之一寫入放大率。
圖20圖解說明根據一實施例之用於修改KVS樹操作之一方法2000之一實例。方法2000之操作用諸如在本申請案全篇(包含關於圖26之下文)所闡述之電子硬體(例如,電路)來實施。方法2000涵蓋實施上文關於KVS樹中之標記刪除加速度、更新加速度(例如,更新標記刪除)、首碼標記刪除及不可變鍵值資料所論述之若干個特徵之操作。
在操作2005處,接收對一KVS樹之一請求。在一實例中,該請求包含一鍵首碼及一標記刪除,該參數集具有在該請求中將該標記刪除定義為一首碼標記刪除之一成員,且執行對該KVS樹之該請求包含將該首碼標記刪除寫入至該KVS樹之一kvset。在一實例中,在比較鍵之一KVS樹操作
時,一首碼標記刪除匹配具有與該首碼標記刪除之該鍵首碼相同之首碼之任何鍵。
在一實例中,該請求包含一鍵,該參數集包含規定標記刪除加速度之一成員;及執行對該KVS樹之該請求包含將藉由對該鍵執行一溢寫函數而規定之一標記刪除寫入於至少一個子節點中。該溢寫函數係將一鍵(或一鍵之一部分)視為輸入且產生一溢寫值之一函數,如上文關於圖13所提及。在一實例中,將藉由對該鍵執行該溢寫函數而規定之該標記刪除寫入至所有現存子節點。在一實例中,該請求包含一標記刪除。在一實例中,該請求包含一值。
在操作2010處,接收KVS樹之一參數集。
在操作2015處,藉由根據參數修改該KVS樹之操作而執行對該KVS樹之該請求。
在一實例中,該請求包含一鍵、一標記刪除及在該KVS樹中與該鍵對應之一值之一儲存大小。在此處,該參數集具有規定廢棄項目收集統計資料儲存區之一成員,且執行對該KVS樹之該請求包含將該鍵及該儲存大小儲存於該KVS樹之一資料結構中。在一實例中,該標記刪除係一首碼標記刪除。
在一實例中,該參數集包含規定該KVS樹係不可變之一成員,且執行對該KVS樹之該請求包含將該請求寫入至該KVS樹之一根節點。在此處,在該KVS樹係不可變的時該根節點係該KVS樹中之僅有節點。
在一實例中,當該KVS樹係不可變的時該KVS樹排他地使用鍵壓縮。在一實例中,方法2000可經擴展以回應於該KVS樹係不可變的而儲存鍵搜尋統計資料。在一實例中,該等鍵搜尋統計資料係一最小、最大、
平均數或平均值搜尋時間中之至少一者。在一實例中,該等鍵搜尋統計資料係該根節點中之一kvset數目。
在一實例中,當該KVS樹係不可變的時,方法2000可經擴展以回應於該等鍵搜尋統計資料滿足一臨限值而執行鍵壓縮。在一實例中,該鍵壓縮可包含回應於以下情形中之至少一者而重設該等鍵搜尋統計資料:一壓縮、一攝取、規定數目次搜尋之後或一規定時間間隔之後。
在其中該參數集之一第二成員規定該KVS樹在一先進先出基礎上移除元素之一實例中,該參數集之一第三成員規定該KVS樹之一保留約束,該KVS樹基於該保留約束而對kvset執行鍵壓縮,且該KVS樹在違反該保留約束時移除一最舊kvset。在一實例中,該保留約束係一最大鍵值對數目。在一實例中,該保留約束係一鍵值對之一最大年齡。在一實例中,該保留約束係由鍵值對消耗之一最大儲存值。
在一實例中,基於該保留約束而對kvset執行鍵壓縮包含:將連續kvset分組以產生一群組集,來自該群組集中之每一成員之一經求和指標大致估計該保留約束之一分率;及對該群組集之每一成員執行鍵壓縮。
圖21係根據一實施例之圖解說明一鍵搜尋之一方塊圖。該搜尋藉由以下方式而進展:在根節點中之最新kvset處開始且逐漸移動至較舊kvset直至找到鍵或葉節點中之最舊kvset不具有該鍵為止。由於父節點至子節點鍵映射之確定性本質,因此將存在經搜尋之僅一個葉,且彼葉中之最舊kvset將具有最舊鍵項目。因此,若遵循經圖解說明搜尋路徑且未找到鍵,則該鍵不在KVS樹中。
一找到鍵之最新鍵項目就停止搜尋。因此,搜尋路徑自最新移動至最舊且一定位鍵之一鍵項目就停止。此行為藉由不要求立即自KVS樹移除
一已淘汰鍵值對而允許保持kvset之不可變性。替代地,較新值或用以指示刪除之一標記刪除經放置在一較新kvset中且將首先被找到,從而不顧及仍駐存於KVS樹中之較舊鍵值對版本而產生對查詢之一準確回應。
在一實例中,可藉由將一當前節點設定至根節點而執行對鍵K之搜尋。若在當前節點中找到具有鍵K之一鍵值對或一標記刪除,則完成搜尋且作為結果而分別傳回相關聯值或「未找到鍵」之一指示。若未找到鍵K,則將當前節點設定至如由鍵K及用於溢寫壓縮之鍵分配方法判定之節點之子節點。
若不存在此類子節點,則完成搜尋且「未找到鍵」之一指示係結果。否則,執行對當前節點之kvset中之鍵K之搜尋且重複該程序。在概念上講,對一KVS樹中之一鍵K之一搜尋遵循具有鍵K之每一鍵值對或標記刪除作為溢寫壓縮之結果而採取的穿過KVS樹之相同路徑。
由於基於鍵的父節點與子節點之間的確定性映射,因此搜尋KVS樹中之每層級僅一個節點直至找到具有鍵K之一鍵值對或一標記刪除或搜尋KVS樹中之最後(例如,最大編號之)層級中之一節點為止。因此,搜尋係高度高效率的。
圖22圖解說明根據一實施例之用於執行一鍵搜尋之一方法2200之一實例。方法2200之操作用諸如在本申請案全篇(包含關於圖26之下文)所闡述之電子硬體(例如,電路)來實施。
在操作2205處,接收包含一鍵之一搜尋請求。
在操作2210處,選擇根節點作為當前節點。
在操作2215處,檢驗當前節點。
在操作2220處,檢驗以對當前節點之最新kvset之一查詢開始。
在決定2225處,若未找到鍵,則方法2200繼續進行至決定2240,且否則,若找到鍵,則方法2200繼續進行至決定2230。
在決定2230處,若對應於鍵之鍵項目包含或參照一標記刪除,則方法2200繼續進行至結果2260且否則繼續進行至結果2235。
在結果2235處,回答搜尋請求而傳回與鍵之一最新鍵項目對應之一值。
在決定2240處,若當前節點中存在更多kvset,則方法2200繼續進行至操作2245且否則繼續進行至決定2250。
在操作2245處,方法2200選擇當前節點中之下一最新kvset以查詢鍵且繼續進行至決定2225。
在決定2250處,若當前節點不具有匹配鍵之溢寫函數之任何子節點,則方法2200繼續進行至結果2260且否則以其他方式繼續進行至操作2255。
在操作2255處,將匹配鍵之溢寫函數之子節點設定為當前節點且方法2200繼續進行至操作2215。
在結果2260處,回答搜尋請求而傳回搜尋之一否定指示,諸如「未找到鍵」。
掃描操作不同於正尋求的多個鍵中之一搜尋。一典型掃描操作可包含對一鍵範圍之搜尋,其中該搜尋規定多個鍵來限定該範圍。一般而言,掃描規定一準則且預期kvs樹中滿足該準則之所有鍵之一結果。
圖23係根據一實施例之圖解說明一鍵掃描之一方塊圖。鍵掃描或純粹掃描識別KVS樹之每一節點中含有滿足掃描準則(例如,屬一規定範圍內)之一鍵項目之每一kvset。雖然kvset之鍵儲存器准許對一特定鍵之一高
效率搜尋,但為確保找到滿足掃描準則之每一鍵,致使搜尋每一kvset。然而,由於kvset中之鍵值儲存區之經鍵排序本質,因此掃描可在不查看每一鍵之情況下迅速地判定一搜尋鍵是否係於一kvset中。此仍比由WB樹提供之性能好,舉例而言,此乃因鍵值對未儲存於一經鍵排序結構中,而是使鍵保持解決鍵雜湊衝突。因此,必須讀取一WB樹中之每一鍵以滿足一掃描。
在一KVS樹中,為促進掃描,以經鍵排序次序將鍵儲存於kvset中。因此,一給定鍵可位於日誌時間中且亦可迅速地判定範圍內之鍵(例如,範圍中之一最高及最低鍵)。此外,上文關於圖1至圖5所論述之實例性kvset後設資料可用於更進一步地加速掃描。舉例而言,若kvset維持含納於kvset內之一最小及最大鍵值,則掃描可迅速地判定kvset中之鍵不滿足一規定範圍。類似地,維持kvset鍵之一布隆過濾器可用於迅速地判定特定鍵不在一給定kvset之鍵儲存器中。
在除上文以外之一實例(未圖解說明)中,掃描可與一搜尋很像地繼續進行,惟訪問每一節點除外。因此,掃描自kvset讀取滿足準則之每一鍵之最新記錄,其中一給定鍵K之最新記錄可係一鍵值對或鍵標記刪除。如上文所述,在KVS樹中之一給定節點內,kvset自最新至最舊而定序,且在一層級(L+1)處之一節點中之kvset比在一層級L處之一節點中之kvset舊。在找到滿足準則之鍵之後,在一結果集中將該等鍵傳回至請求者。
當某人認識到在一掃描中發生每一節點中之每一kvset之訪問時可改良上文直接闡述之類似搜尋之掃描。因此,在一實例中,可同時讀取該等kvset。所有kvset之同時讀取可產生一非常大之緩衝區(例如,用於經傳回結果之儲存位置)。然而,此可藉由迅速地判定一給定kvset是否具有滿足掃描準則(例如,在一範圍內)之鍵之能力來緩解。因此,可訪問每一
kvset,但僅讀取具有滿足該準則之鍵之彼等kvset。在圖23中圖解說明此實例。具體而言,讀取器同時訪問該等kvset中之所有kvset(例如,短劃線及短劃kvset)且然而僅讀取該等kvset之一子集(短劃kvset)。此技術支援迭代器風格語義,其中一程式可詢問一下一或先前鍵。該等kvset中之鍵之經排序本質准許迅速識別出一下一鍵及一鍵上是否存在衝突(例如,同一鍵之多個項目)、哪一值係將傳回至程式之最新者-除非最新值係一標記刪除,在該情形中迭代器應跳過彼鍵且為下一鍵提供最新值。
在一實例中,掃描可包含接收包含一鍵範圍(或其他準則)之一掃描請求。
掃描藉由將由範圍規定之鍵自來自樹之一節點集之每一kvset收集至一經找到集中而繼續進行。在一實例中,該節點集包含樹中之每一節點。
掃描藉由以下方式而繼續進行:藉由保持與並非一標記刪除之一鍵之一最近項目對應之鍵值對而將該經找到集縮減至一結果集。
掃描藉由傳回該結果集而完成。
圖24係根據一實施例之圖解說明一鍵掃描之一方塊圖。圖24提供對圖23之一不同視角。掃描之準則係在A與K(包含A及K)之間的鍵。掃描以係KVS樹中之最新kvset(kvset 12)的根節點之最新kvset開始。在一實例中,kvset 12之鍵指標允許至少某些鍵滿足該準則之一迅速判定。具體而言,在此實例中,其係鍵A及B。掃描自KVS樹之頂部(根)至底部(葉)而自每一節點中之最新kvset至最舊kvset繼續進行。注意,鍵A、B、C、E及K跨越節點出現在多個kvset中。掃描將僅保存每一kvset之最新者(例如,選定鍵)。因此,結果集將包含在針對鍵A及B之kvset 12、針對鍵C之kvset 11、針對鍵E之kvset 10及針對鍵K之kvset 6中找到之此等鍵之值。然
而,若針對此等鍵中之任何者之此等kvset中之鍵項目包含或參照一標記刪除,則將自結果集省略彼鍵。Kvset 5中之鍵D之唯一性使得其值包含在結果集中(假定鍵D不涉及一標記刪除)。
圖25係根據一實施例之圖解說明一首碼掃描之一方塊圖。一首碼掃描定位一KVS樹中之所有鍵值對(若存在),其中鍵全部以一規定首碼開始。儘管首碼小於一整個鍵,且可因此匹配多個鍵,但鍵之首碼部分至少與由溢寫函數使用以建立溢寫值的鍵之部分一樣大。因此,若溢寫函數使用鍵之第一子鍵,則首碼包含第一子鍵(且可包含額外子鍵)。此要求允許確定性映射將首碼掃描效能改良為優於純粹掃描效能,此乃因僅訪問首碼之路徑中之彼等節點。
在一實例中,溢寫值基於鍵之第一子鍵。在此實例中,一規定首碼包含鍵之第一子鍵之一值。在此實例中,首碼掃描可藉由以下方式繼續進行:識別在KVS樹之每一節點中含有具有以規定首碼開始之一鍵之一鍵值對或標記刪除之每一kvset。與純粹掃描相比較,首碼掃描不訪問KVS樹之每一節點。更確切而言,經檢驗節點可經拘限於沿著由定義首碼之第一子鍵值之溢寫值判定之路徑的彼等節點。在一實例中,替代使用第一子鍵,可針對溢寫值使用一最後子鍵以實現一首碼掃描。在此實例中,一規定首碼包含鍵之最後子鍵之一值。可基於在溢寫值計算中使用之特定子鍵而實施額外各種掃描。
再次,類似於純粹掃描,存在擷取鍵或鍵值對以實施掃描之多種方式。在一實例中,如所圖解說明,同時訪問(短劃線)沿著由首碼給定之溢寫值路徑之節點(具有短劃邊緣之節點),針對滿足掃描準則之鍵測試彼等節點內之kvset,且讀取通過測試之kvset(具有短劃邊緣之kvset)。
一首碼掃描係極其高效率的,此既因經檢查之節點數目在KVS樹之每層級限於一個,又因kvset鍵儲存器中之鍵一般儲存於允許匹配首碼之鍵之準備就緒識別之一結構中。另外,上文關於鍵掃描所論述之kvset指標亦可有助於加速搜尋。
該首碼掃描可包含接收具有一鍵首碼之一掃描請求。在此處,將搜尋之一節點集包含對應於該鍵首碼之每一節點。在一實例中,與該鍵首碼之節點對應性由自該鍵首碼導出之一溢寫值之一部分判定,該溢寫值之該部分由一給定節點之一樹層級判定。
該首碼掃描藉由以下方式繼續進行:將由該首碼規定之鍵自來自樹之該節點集之每一kvset收集至一經找到集中。
該首碼掃描藉由以下方式繼續進行:藉由保持與並非一標記刪除且未被一更新近標記刪除而刪除之一鍵之一最近項目對應之鍵值對而將該將找到集縮減至一結果集。
該首碼掃描藉由傳回該結果集而完成。
如上文所闡述,KVS樹提供用以將鍵值資料儲存在磁碟上之一強大結構。KVS樹包含LSM樹及WB樹之優點中之諸多優點而不具有此等結構之缺點。舉例而言,關於儲存空間或歸因於壓縮之寫入放大率,在一KVS樹中,可容易地控制節點之大小以限制用於壓縮之暫時儲存容量之最大量。此外,鍵壓縮可用於在不讀取及寫入值區塊之情況下增加一節點中之搜尋效率,藉此減小歸因於壓縮之讀取放大率及寫入放大率。在一傳統LSM樹中,壓縮所需要之暫時儲存容量之量以及讀取放大率及寫入放大率之量可與經壓縮之樹層級處之鍵值容量之量成比例-此因如下事實而加劇:一LSM樹中之樹層級之鍵值容量通常經組態以在樹中更深之每一樹層
級處指數生長。
關於鍵搜尋效率,在一KVS樹中,對一鍵K之搜尋涉及每樹層級搜尋僅一個節點(其表示KVS樹中之總鍵之僅一小分率)。在一傳統LSM樹中,對一鍵K之搜尋需要搜尋每一層級中之所有鍵。
關於如上文所述之首碼掃描效率,KVS樹之一實例准許藉由每樹層級搜尋僅一個節點(其表示KVS樹中之總鍵之僅一小分率)而找到以一規定首碼開始之所有鍵。在一傳統LSM樹中,找到以一規定首碼開始之所有鍵需要搜尋每一層級中之所有鍵。
關於掃描效率,上文所闡述之一KVS樹之一實例准許藉由利用kvset中之資料而找到在一給定範圍中或以一規定首碼開始之所有鍵。在一WB樹中,該等鍵係無序的,從而不產生用以實施此等操作中之任一者之高效率方式。因此,在一WB樹中,必須擷取且檢驗樹之每一項目以執行此等掃描。
關於壓縮效能,在一KVS樹中,鍵、鍵值及溢寫壓縮維護技術(惟上升壓縮除外)由於節點中之kvset之時間上經排序本質而係非阻斷的。因此,可將新kvset新增至節點,藉由僅僅將新kvset放置在一最新位置中而對該等節點執行鍵、鍵值或溢寫壓縮。在一WB樹中,壓縮係一阻斷操作。
圖26圖解說明本文中所論述之技術(例如,方法)中之任何一或多者可在其上執行之一實例性機器2600之一方塊圖。在替代實施例中,機器2600可操作為一獨立裝置或可連接(例如,網路連接)至其他機器。在一經網路連接部署中,機器2600可在伺服器-用戶端網路環境中作為一伺服器機器、一用戶端機器或兩者來操作。在一實例中,機器2600可在同級間
(P2P)(或其他分散式)網路環境中用作一同級機器。機器2600可係一個人電腦(PC)、一平板PC、一機上盒(STB)、一個人數位助理(PDA)、一行動電話、一web器具、一網路路由器、交換器或橋接器或能夠執行規定將由彼機器採取之動作之指令(順序的或其他)之任何機器。此外,雖然圖解說明僅一單個機器,但還應將術語「機器」視為包含個別地或聯合地執行一指令集(或多個指令集)以執行本文中所論述之方法中之任何一或多者之任何機器集合,諸如雲端運算、軟體即服務(SaaS)、其他電腦叢集組態。
如本文中所闡述之實例可包含邏輯或若干個組件或機構或可藉由該邏輯或若干個組件或機構來操作。電路係在包含硬體之有形實體(例如,簡單電路、閘、邏輯等)中實施之一電路集合。電路成員可係隨時間而變通的。電路包含可在操作時單獨或組合執行規定操作之成員。在一實例中,電路之硬體可以不可變方式經設計以實施一特定操作(例如,硬佈線)。在一實例中,電路之硬體可包含以可變方式連接之實體組件,例如,執行單元、電晶體、簡單電路等),包含經實體上修改(例如,不變大規模粒子等之可磁性、電移動放置)以編碼特定操作之指令之一電腦可讀媒體。在連接實體組件時,一硬體組成之基本電性質(舉例而言)自一絕緣體改變至一導體或反之亦然。指令使得嵌入式硬體(例如,執行單元或一載入機構)能夠經由可變連接形成硬體中之電路之成員以在操作中時實施特定操作之若干部分。因此,電腦可讀媒體在裝置操作時以通信方式耦合至電路之其他組件。在一實例中,可在一個以上電路之一個以上成員中使用實體組件中之任一者。舉例而言,在操作下,執行單元可在一個時間點在一第一電路之一第一子電路中使用且由第一電路中之一第二子電路重新使用,或在一不同時間由一第二電路中之一第三子電路使用。
機器(例如,電腦系統)2600可包含一硬體處理器2602(例如,一中央處理單元(CPU)、一圖形處理單元(GPU)、一硬體處理器核心或其任何組合)、一主要記憶體2604及一靜態記憶體2606,其中之某些或所有可經由一交互連結(例如,匯流排)2608彼此通信。機器2600可進一步包含一顯示單元2610、一文數字輸入裝置2612(例如,一鍵盤)及一使用者介面(UI)導覽裝置2614(例如,一滑鼠)。在一實例中,顯示單元2610、輸入裝置2612及UI導覽裝置2614可係一觸控式螢幕顯示器。機器2600可另外包含一儲存裝置(例如,磁碟單元)2616、一信號產生裝置2618(例如,一揚聲器)、一網路介面裝置2620及一或多個感測器2621,諸如一全球定位系統(GPS)感測器、羅盤、加速度計或其他感測器。機器2600可包含一輸出控制器2628,諸如一串列(例如,通用串列匯流排(USB)、並列或其他有線或無線(例如,紅外線(IR),近紅外通信(NFC)等)連接以與一或多個周邊裝置(例如,一印表機、讀卡器等)通信或控制該一或多個周邊裝置。
儲存裝置2616可包含其上儲存有體現本文中所闡述之技術或功能中之任何一或多者或由本文中所闡述之技術或功能中之任何一或多者利用之一或多個資料結構或指令2624(例如,軟體)集的一機器可讀媒體2622。指令2624亦可在其由機器2600執行期間完全地或至少部分地駐存於主要記憶體2604內、靜態記憶體2606內或硬體處理器2602內。在一實例中,硬體處理器2602、主要記憶體2604、靜態記憶體2606或儲存裝置2616中之一者或其任一組合可構成機器可讀媒體。
雖然機器可讀媒體2622經圖解說明為一單個媒體,但術語「機器可讀媒體」可包含經組態以儲存一或多個指令2624之一單個媒體或多個媒體(例如,一集中式或分散式資料庫,及/或相關聯快取記憶體及伺服器)。
術語「機器可讀媒體」可包含能夠儲存、編碼或載運用於由機器2600執行且致使機器2600執行本發明之技術中之任何一或多者之指令或者能夠儲存、編碼或載運由此等指令使用或與此等指令相關聯之資料結構的任何媒體。非限制性機器可讀媒體實例可包含固態記憶體以及光學及磁性媒體。在一實例中,一大規模機器可讀媒體包括包含具有不變(例如,靜止)質量之複數個粒子之一機器可讀媒體。因此,大規模機器可讀媒體並非暫時傳播信號。大規模機器可讀媒體之特定實例可包含:非揮發性記憶體,諸如半導體記憶體裝置(例如,電可程式化唯讀記憶體(EPROM)、電可抹除可程式化唯讀記憶體(EEPROM))及快閃記憶體裝置;磁碟,諸如內部硬碟及可抽換磁碟;磁光碟;以及CD-ROM及DVD-ROM磁碟。
可經由一通信網路2626使用一傳輸媒體經由網路介面裝置2620進一步傳輸或接收指令2624,網路介面裝置2620利用若干個傳送協定(例如,訊框中繼、網際網路協定(IP)、傳輸控制協定(TCP)、使用者資料報協定(UDP)、超文字傳送協定(HTTP)等)中之任一者。實例性通信網路可包含一區域網路(LAN)、一廣域網路(WAN)、一封包資料網路(例如,網際網路)、行動電話網路(例如,蜂巢式網路)、簡易老式電話(POTS)網路及無線資料網路(例如,稱為Wi-Fi®之美國電機電子工程師協會(IEEE)802.11族標準,稱為WiMax®之IEEE 802.16族標準)、IEEE 802.15.4系列標準、同級間(P2P)網路以及其他網路。在一實例中,網路介面裝置2620可包含一或多個實體插座(例如,乙太網路、同軸或耳機插座)或者一或多個天線以連接至通信網路2626。在一實例中,網路介面裝置2620可包含複數個天線以使用單輸入多輸出(SIMO)、多輸入多輸出(MIMO)或多輸入單輸出(MISO)技術中之至少一者無線地通信。術語「傳輸媒體」應被視為
包含能夠儲存、編碼或載運用於由機器2600執行之指令之任何無形媒體,且包含數位或類比通信信號或其他無形媒體以促進此軟體之通信。
額外注釋及實例
實例1係一種包括經組態以進行以下操作之處理電路之系統:針對一KVS樹中之一節點建立一kvset,該建立包含計算該kvset之一kvset指標集;將該kvset新增至該節點;基於該kvset指標集中之一指標而針對一壓縮操作選擇該節點;及對該節點執行該壓縮操作。
在實例2中,如實例1之標的物,其中該kvset指標集包含該kvset中之一鍵值對數目。
在實例3中,如實例1至2中任何一或多項之標的物,其中該kvset指標集包含該kvset中之一標記刪除數目。
在實例4中,如實例1至3中任何一或多項之標的物,其中該kvset指標集包含用以儲存該kvset中之鍵值對及標記刪除之所有鍵項目之一儲存容量。
在實例5中,如實例1至4中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵值對之所有值之一儲存容量。
在實例6中,如實例1至5中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵之鍵大小統計資料。
在實例7中,如實例6之標的物,其中該等鍵大小統計資料包含最大值、最小值、中間值或平均值中之至少一者。
在實例8中,如實例1至7中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵之值大小統計資料。
在實例9中,如實例8之標的物,其中該等值大小統計資料包含最大
值、最小值、中間值或平均值中之至少一者。
在實例10中,如實例1至9中任何一或多項之標的物,其中該kvset指標集包含該kvset中之一鍵值對之一最小或一最大存留時間(TTL)值。
在實例11中,如實例1至10中任何一或多項之標的物,其中回應於一壓縮操作而建立該kvset,該壓縮操作係一鍵壓縮、一鍵值壓縮、一溢寫壓縮或一上升壓縮中之至少一者。
在實例12中,如實例11之標的物,其中該壓縮操作係一鍵壓縮,且其中該kvset指標集包含該kvset中由於該鍵壓縮而產生之未經參照值之指標。
在實例13中,如實例12之標的物,其中該等未經參照值指標包含未經參照值之一計數或由未經參照值消耗之一儲存容量中之至少一者。
在實例14中,如實例11至13中任何一或多項之標的物,其中該kvset指標集包含對該kvset中之已淘汰鍵值對之一估計,對已淘汰鍵值對之該估計係藉由該處理電路對來自預壓縮kvset之未包含於該kvset中之鍵項目之一數目求和而計算。
在實例15中,如實例11至14中任何一或多項之標的物,其中該kvset指標集包含對該kvset中之有效鍵值對之一估計,對有效鍵值對之該估計係藉由該處理電路對來自預壓縮kvset之包含於該kvset中之鍵項目之一數目求和而計算。
在實例16中,如實例11至15中任何一或多項之標的物,其中該kvset指標集包含該kvset中之已淘汰鍵值對之一經估計儲存大小,已淘汰鍵值對之該經估計儲存大小係藉由該處理電路對來自預壓縮kvset之未包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
在實例17中,如實例11至16中任何一或多項之標的物,其中該kvset指標集包含該kvset中之有效鍵值對之一經估計儲存大小,有效鍵值對之該經估計儲存大小係藉由該處理電路對來自預壓縮kvset之包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
在實例18中,如實例1至17中任何一或多項之標的物,其中該kvset指標集儲存於該kvset中。
在實例19中,如實例1至18中任何一或多項之標的物,其中該kvset指標集儲存於該節點中且未儲存於該kvset中。
在實例20中,如實例1至19中任何一或多項之標的物,其中該處理電路經組態以回應於將該kvset新增至該節點而修改該等節點指標。
在實例21中,如實例20之標的物,其中該等節點指標包含經受對包含該節點之一節點群組執行之先前壓縮之kvset中之經估計已淘汰鍵值對之一分率之一值。
在實例22中,如實例21之標的物,其中該節點群組僅包含該節點。
在實例23中,如實例21至22中任何一或多項之標的物,其中該節點群組包含在該節點之一樹層級上之所有節點。
在實例24中,如實例21至23中任何一或多項之標的物,其中該等節點指標包含由一壓縮操作產生的該kvset指標集中之相似指標與來自對該節點執行之壓縮操作之先前kvset指標之一總和。
在實例25中,如實例21至24中任何一或多項之標的物,其中該值係一簡單平均數。
在實例26中,如實例21至25中任何一或多項之標的物,其中該值係一移動平均數。
在實例27中,如實例21至26中任何一或多項之標的物,其中該值係一經加權平均數。
在實例28中,如實例21至27中任何一或多項之標的物,其中該值係經受針對該節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。
在實例29中,如實例21至28中任何一或多項之標的物,其中該值係經受針對該節點之一樹層級處之所有節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。
在實例30中,如實例21至29中任何一或多項之標的物,其中該等節點指標包含在該kvset及該節點之一不同kvset中係相同之鍵之一經估計數目。
在實例31中,如實例30之標的物,其中,為計算鍵之該經估計數目,該處理電路進一步經組態以:自該kvset獲得一第一鍵布隆過濾器;自該不同kvset獲得一第二鍵布隆過濾器;及將該第一鍵布隆過濾器與該第二鍵布隆過濾器進行交集運算以產生一節點布隆過濾器估計之基數(NBEC)。
在實例32中,如實例31之標的物,其中該等節點指標包含該處理電路以自一NKVcnt值減去該NBEC從而估計該節點中之已淘汰鍵值對之一數目,該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點之每一kvset中之鍵值對之一總計數。
在實例33中,如實例31至32中任何一或多項之標的物,其中該等節點指標包含該處理電路將一NKVcap值乘以一Fobs值,其中該NKVcap值係由其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點中之每
一kvset中之鍵及值使用之一總儲存容量,且其中該Fobs值係自一NKVcnt值減去該NBEC且除以NKVcnt之結果,其中該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點之每一kvset中之鍵值對之一總計數。
在實例34中,如實例20至33中任何一或多項之標的物,其中該等節點指標儲存於該節點中。
在實例35中,如實例20至34中任何一或多項之標的物,其中該等節點指標儲存於一樹層級中,該樹層級對於該KVS樹之一層級中之所有節點係共同的。
在實例36中,如實例1至35中任何一或多項之標的物,其中,為針對該壓縮操作選擇該節點,該處理電路進一步經組態以:收集包含該節點之多個節點之kvset指標集;基於該等kvset指標集而將該多個節點排序;及基於來自該排序之一排序次序而選擇該多個節點之一子集,其中,為對該節點執行該壓縮操作,該處理電路經組態以對該多個節點之該子集中之每一節點執行該壓縮操作,該多個節點之該子集包含該節點。
在實例37中,如實例36之標的物,其中該多個節點之該子集之一基數由一效能值設定。
在實例38中,如實例37之標的物,其中該效能值係如由所恢復空間量測之執行該壓縮之一效率。
實例39係至少一個機器可讀媒體,其包含在由一機器執行時致使該機器執行包括以下各項之操作之指令:針對一KVS樹中之一節點建立一kvset,該建立包含計算該kvset之一kvset指標集;將該kvset新增至該節點;基於該kvset指標集中之一指標而針對一壓縮操作選擇該節點;及對
該節點執行該壓縮操作。
在實例40中,如實例39之標的物,其中該kvset指標集包含該kvset中之一鍵值對數目。
在實例41中,如實例39至40中任何一或多項之標的物,其中該kvset指標集包含該kvset中之一標記刪除數目。
在實例42中,如實例39至41中任何一或多項之標的物,其中該kvset指標集包含用以儲存該kvset中之鍵值對及標記刪除之所有鍵項目之一儲存容量。
在實例43中,如實例39至42中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵值對之所有值之一儲存容量。
在實例44中,如實例39至43中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵之鍵大小統計資料。
在實例45中,如實例44之標的物,其中該等鍵大小統計資料包含最大值、最小值、中間值或平均值中之至少一者。
在實例46中,如實例39至45中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵之值大小統計資料。
在實例47中,如實例46之標的物,其中該等值大小統計資料包含最大值、最小值、中間值或平均值中之至少一者。
在實例48中,如實例39至47中任何一或多項之標的物,其中該kvset指標集包含該kvset中之一鍵值對之一最小或一最大存留時間(TTL)值。
在實例49中,如實例39至48中任何一或多項之標的物,其中回應於一壓縮操作而建立該kvset,該壓縮操作係一鍵壓縮、一鍵值壓縮、一溢寫壓縮或一上升壓縮中之至少一者。
在實例50中,如實例49之標的物,其中該壓縮操作係一鍵壓縮,且其中該kvset指標集包含該kvset中由於該鍵壓縮而產生之未經參照值之指標。
在實例51中,如實例50之標的物,其中該等未經參照值指標包含未經參照值之一計數或由未經參照值消耗之一儲存容量中之至少一者。
在實例52中,如實例49至51中任何一或多項之標的物,其中該kvset指標集包含對該kvset中之已淘汰鍵值對之一估計,對已淘汰鍵值對之該估計係藉由對來自預壓縮kvset之未包含於該kvset中之鍵項目之一數目求和而計算。
在實例53中,如實例49至52中任何一或多項之標的物,其中該kvset指標集包含對該kvset中之有效鍵值對之一估計,對有效鍵值對之該估計係藉由對來自預壓縮kvset之包含於該kvset中之鍵項目之一數目求和而計算。
在實例54中,如實例49至53中任何一或多項之標的物,其中該kvset指標集包含該kvset中之已淘汰鍵值對之一經估計儲存大小,已淘汰鍵值對之該經估計儲存大小係藉由對來自預壓縮kvset之未包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
在實例55中,如實例49至54中任何一或多項之標的物,其中該kvset指標集包含該kvset中之有效鍵值對之一經估計儲存大小,有效鍵值對之該經估計儲存大小係藉由對來自預壓縮kvset之包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
在實例56中,如實例39至55中任何一或多項之標的物,其中該kvset指標集儲存於該kvset中。
在實例57中,如實例39至56中任何一或多項之標的物,其中該kvset指標集儲存於該節點中且未儲存於該kvset中。
在實例58中,實例39至57中任何一或多項之標的物視情況包含其中該等操作進一步包括回應於將該kvset新增至該節點而修改節點指標。
在實例59中,如實例58之標的物,其中該等節點指標包含經受對包含該節點之一節點群組執行之先前壓縮之kvset中之經估計已淘汰鍵值對之一分率之一值。
在實例60中,如實例59之標的物,其中該節點群組僅包含該節點。
在實例中61,如實例59至60中任何一或多項之標的物,其中該節點群組包含在該節點之一樹層級上之所有節點。
在實例62中,如實例59至61中任何一或多項之標的物,其中該等節點指標包含由一壓縮操作產生的該kvset指標集中之相似指標與來自對該節點執行之壓縮操作之先前kvset指標之一總和。
在實例63中,如實例59至62中任何一或多項之標的物,其中該值係一簡單平均數。
在實例64中,如實例59至63中任何一或多項之標的物,其中該值係一移動平均數。
在實例65中,如實例59至64中任何一或多項之標的物,其中該值係一經加權平均數。
在實例66中,如實例59至65中任何一或多項之標的物,其中該值係經受針對該節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。
在實例67中,如實例59至66中任何一或多項之標的物,其中該值係
經受針對該節點之一樹層級處之所有節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。
在實例68中,如實例59至67中任何一或多項之標的物,其中該等節點指標包含在該kvset及該節點之一不同kvset中係相同之鍵之一經估計數目。
在實例69中,如實例68之標的物,其中鍵之該估計數目係藉由以下方式而計算:自該kvset獲得一第一鍵布隆過濾器;自該不同kvset獲得一第二鍵布隆過濾器;及將該第一鍵布隆過濾器與該第二鍵布隆過濾器進行交集運算以產生一節點布隆過濾器估計之基數(NBEC)。
在實例70中,如實例69之標的物,其中該等節點指標包含自一NKVcnt值減去該NBEC以估計該節點中之已淘汰鍵值對之一數目,該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點之每一kvset中之鍵值對之一總計數。
在實例71中,如實例69至70中任何一或多項之標的物,其中該等節點指標包含使一NKVcap乘以一Fobs值,其中該NKVcap值係由其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點中之每一kvset中之鍵及值使用之一總儲存容量,且其中該Fobs值係自一NKVcnt值減去該NBEC且除以NKVcnt之結果,其中該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點之每一kvset中之鍵值對之一總計數。
在實例72中,如實例58至71中任何一或多項之標的物,其中該等節點指標儲存於該節點中。
在實例73中,如實例58至72中任何一或多項之標的物,其中該等節
點指標儲存於一樹層級中,該樹層級對於該KVS樹之一層級中之所有節點係共同的。
在實例74中,如實例39至73中任何一或多項之標的物,其中針對該壓縮操作選擇該節點包含:收集包含該節點之多個節點之kvset指標集;基於該等kvset指標集而將該多個節點排序;及基於來自該排序之一排序次序而選擇該多個節點之一子集,其中對該節點執行該壓縮操作包含對該多個節點之該子集中之每一節點執行該壓縮操作,該多個節點之該子集包含該節點。
在實例75中,如實例74之標的物,其中該多個節點之該子集之一基數由一效能值設定。
在實例76中,如實例75之標的物,其中該效能值係如由所恢復空間量測之執行該壓縮之一效率。
實例77係一種機器實施之方法,其包括:針對一KVS樹中之一節點建立一kvset,該建立包含計算該kvset之一kvset指標集;將該kvset新增至該節點;基於該kvset指標集中之一指標而針對一壓縮操作選擇該節點;及對該節點執行該壓縮操作。
在實例78中,如實例77之標的物,其中該kvset指標集包含該kvset中之一鍵值對數目。
在實例79中,如實例77至78中任何一或多項之標的物,其中該kvset指標集包含該kvset中之一標記刪除數目。
在實例80中,如實例77至79中任何一或多項之標的物,其中該kvset指標集包含用以儲存該kvset中之鍵值對及標記刪除之所有鍵項目之一儲存容量。
在實例81中,如實例77至80中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵值對之所有值之一儲存容量。
在實例82中,如實例77至81中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵之鍵大小統計資料。
在實例83中,如實例82之標的物,其中該等鍵大小統計資料包含最大值、最小值、中間值或平均值中之至少一者。
在實例84中,如實例77至83中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵之值大小統計資料。
在實例85中,如實例84之標的物,其中該等值大小統計資料包含最大值、最小值、中間值或平均值中之至少一者。
在實例86中,如實例77至85中任何一或多項之標的物,其中該kvset指標集包含該kvset中之一鍵值對之一最小或一最大存留時間(TTL)值。
在實例87中,如實例77至86中任何一或多項之標的物,其中回應於一壓縮操作而建立該kvset,該壓縮操作係一鍵壓縮、一鍵值壓縮、一溢寫壓縮或一上升壓縮中之至少一者。
在實例88中,如實例87之標的物,其中該壓縮操作係一鍵壓縮,且其中該kvset指標集包含該kvset中由於該鍵壓縮而產生之未經參照值之指標。
在實例89中,如實例88之標的物,其中該等未經參照值指標包含未經參照值之一計數或由未經參照值消耗之一儲存容量中之至少一者。
在實例90中,如實例87至89中任何一或多項之標的物,其中該kvset指標集包含對該kvset中之已淘汰鍵值對之一估計,對已淘汰鍵值對之該估計係藉由對來自預壓縮kvset之未包含於該kvset中之鍵項目之一數目求
和而計算。
在實例91中,如實例87至90中任何一或多項之標的物,其中該kvset指標集包含對該kvset中之有效鍵值對之一估計,對有效鍵值對之該估計係藉由對來自預壓縮kvset之包含於該kvset中之鍵項目之一數目求和而計算。
在實例92中,如實例87至91中任何一或多項之標的物,其中該kvset指標集包含該kvset中之已淘汰鍵值對之一經估計儲存大小,已淘汰鍵值對之該經估計儲存大小係藉由對來自預壓縮kvset之未包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
在實例93中,如實例87至92中任何一或多項之標的物,其中該kvset指標集包含該kvset中之有效鍵值對之一經估計儲存大小,有效鍵值對之該經估計儲存大小係藉由對來自預壓縮kvset之包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
在實例94中,如實例77至93中任何一或多項之標的物,其中該kvset指標集儲存於該kvset中。
在實例95中,如實例77至94中任何一或多項之標的物,其中該kvset指標集儲存於該節點中且未儲存於該kvset中。
在實例96中,如實例77至95中任何一或多項之標的物視情況包含回應於將該kvset新增至該節點而修改節點指標。
在實例97中,如實例96之標的物,其中該等節點指標包含經受對包含該節點之一節點群組執行之先前壓縮之kvset中之經估計已淘汰鍵值對之一分率之一值。
在實例98中,如實例97之標的物,其中該節點群組僅包含該節點。
在實例99中,如實例97至98中任何一或多項之標的物,其中該節點群組包含在該節點之一樹層級上之所有節點。
在實例100中,如實例97至99中任何一或多項之標的物,其中該等節點指標包含由一壓縮操作產生的該kvset指標集中之相似指標與來自對該節點執行之壓縮操作之先前kvset指標之一總和。
在實例101中,如實例97至100中任何一或多項之標的物,其中該值係一簡單平均數。
在實例102中,如實例97至101中任何一或多項之標的物,其中該值係一移動平均數。
在實例103中,如實例97至102中任何一或多項之標的物,其中該值係一經加權平均數。
在實例104中,如實例97至103中任何一或多項之標的物,其中該值係經受針對該節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。
在實例105中,如實例97至104中任何一或多項之標的物,其中該值係經受針對該節點之一樹層級處之所有節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。
在實例106中,如實例97至105中任何一或多項之標的物,其中該等節點指標包含在該kvset及該節點之一不同kvset中係相同之鍵之一經估計數目。
在實例107中,如實例106之標的物,其中鍵之該估計數目係藉由以下方式而計算:自該kvset獲得一第一鍵布隆過濾器;自該不同kvset獲得一第二鍵布隆過濾器;及將該第一鍵布隆過濾器與該第二鍵布隆過濾器進
行交集運算以產生一節點布隆過濾器估計之基數(NBEC)。
在實例108中,如實例107之標的物,其中該等節點指標包含自一NKVcnt值減去該NBEC以估計該節點中之已淘汰鍵值對之一數目,該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點之每一kvset中之鍵值對之一總計數。
在實例109中,如實例107至108中任何一或多項之標的物,其中該等節點指標包含將一NKVcap值乘以一Fobs值,其中該NKVcap值係由其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點中之每一kvset中之鍵及值使用之一總儲存容量,且其中該Fobs值係自一NKVcnt值減去該NBEC且除以NKVcnt之結果,其中該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點之每一kvset中之鍵值對之一總計數。
在實例110中,如實例96至109中任何一或多項之標的物,其中該等節點指標儲存於該節點中。
在實例111中,如實例96至110中任何一或多項之標的物,其中該等節點指標儲存於一樹層級中,該樹層級對於該KVS樹之一層級中之所有節點係共同的。
在實例112中,如實例77至111中任何一或多項之標的物,其中針對該壓縮操作選擇該節點包含:收集包含該節點之多個節點之kvset指標集;基於該等kvset指標集而將該多個節點排序;及基於來自該排序之一排序次序而選擇該多個節點之一子集,其中對該節點執行該壓縮操作包含對該多個節點之該子集中之每一節點執行該壓縮操作,該多個節點之該子集包含該節點。
在實例113中,如實例112之標的物,其中該多個節點之該子集之一基數由一效能值設定。
在實例114中,如實例113之標的物,其中該效能值係如由所恢復空間量測之執行該壓縮之一效率。
實例115係一種包括以下各項之系統:用於針對一KVS樹中之一節點建立一kvset之構件,該建立包含計算該kvset之一kvset指標集;用於將該kvset新增至該節點之構件;用於基於該kvset指標集中之一指標而針對一壓縮操作選擇該節點之構件;及用於對該節點執行該壓縮操作之構件。
在實例116中,如實例115之標的物,其中該kvset指標集包含該kvset中之一鍵值對數目。
在實例117中,如實例115至116中任何一或多項之標的物,其中該kvset指標集包含該kvset中之一標記刪除數目。
在實例118中,如實例115至117中任何一或多項之標的物,其中該kvset指標集包含用以儲存該kvset中之鍵值對及標記刪除之所有鍵項目之一儲存容量。
在實例119中,如實例115至118中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵值對之所有值之一儲存容量。
在實例120中,如實例115至119中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵之鍵大小統計資料。
在實例121中,如實例120之標的物,其中該等鍵大小統計資料包含最大值、最小值、中間值或平均值中之至少一者。
在實例122中,如實例115至121中任何一或多項之標的物,其中該kvset指標集包含用於該kvset中之鍵之值大小統計資料。
在實例123中,如實例122之標的物,其中該等值大小統計資料包含最大值、最小值、中間值或平均值中之至少一者。
在實例中124,如實例115至123中任何一或多項之標的物,其中該kvset指標集包含該kvset中之一鍵值對之一最小或一最大存留時間(TTL)值。
在實例125中,如實例115至124中任何一或多項之標的物,其中回應於一壓縮操作而建立該kvset,該壓縮操作係一鍵壓縮、一鍵值壓縮、一溢寫壓縮或一上升壓縮中之至少一者。
在實例126中,如實例125之標的物,其中該壓縮操作係一鍵壓縮,且其中該kvset指標集包含該kvset中由於該鍵壓縮而產生之未經參照值之指標。
在實例127中,如實例126之標的物,其中該等未經參照值指標包含未經參照值之一計數或由未經參照值消耗之一儲存容量中之至少一者。
在實例128中,如實例125至127中任何一或多項之標的物,其中該kvset指標集包含對該kvset中之已淘汰鍵值對之一估計,對已淘汰鍵值對之該估計係藉由對來自預壓縮kvset之未包含於該kvset中之鍵項目之一數目求和而計算。
在實例129中,如實例125至128中任何一或多項之標的物,其中該kvset指標集包含對該kvset中之有效鍵值對之一估計,對有效鍵值對之該估計係藉由對來自預壓縮kvset之包含於該kvset中之鍵項目之一數目求和而計算。
在實例130中,如實例125至129中任何一或多項之標的物,其中該kvset指標集包含該kvset中之已淘汰鍵值對之一經估計儲存大小,已淘汰
鍵值對之該經估計儲存大小係藉由對來自預壓縮kvset之未包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
在實例131中,如實例125至130中任何一或多項之標的物,其中該kvset指標集包含該kvset中之有效鍵值對之一經估計儲存大小,有效鍵值對之該經估計儲存大小係藉由對來自預壓縮kvset之包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
在實例132中,如實例115至131中任何一或多項之標的物,其中該kvset指標集儲存於該kvset中。
在實例133中,如實例115至132中任何一或多項之標的物,其中該kvset指標集儲存於該節點中且未儲存於該kvset中。
在實例134中,如實例115至133中任何一或多項之標的物視情況包含用於回應於將該kvset新增至該節點而修改節點指標之構件。
在實例135中,如實例134之標的物,其中該等節點指標包含經受對包含該節點之一節點群組執行之先前壓縮之kvset中之經估計已淘汰鍵值對之一分率之一值。
在實例136中,如實例135之標的物,其中該節點群組僅包含該節點。
在實例137中,如實例135至136中任何一或多項之標的物,其中該節點群組包含在該節點之一樹層級上之所有節點。
在實例138中,如實例135至137中任何一或多項之標的物,其中該等節點指標包含由一壓縮操作產生的該kvset指標集中之相似指標與來自對該節點執行之壓縮操作之先前kvset指標之一總和。
在實例139中,如實例135至138中任何一或多項之標的物,其中該值
係一簡單平均數。
在實例140中,如實例135至139中任何一或多項之標的物,其中該值係一移動平均數。
在實例141中,如實例135至140中任何一或多項之標的物,其中該值係一經加權平均數。
在實例142中,如實例135至141中任何一或多項之標的物,其中該值係經受針對該節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。
在實例143中,如實例135至142中任何一或多項之標的物,其中該值係經受針對該節點之一樹層級處之所有節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。
在實例144中,如實例135至143中任何一或多項之標的物,其中該等節點指標包含在該kvset及該節點之一不同kvset中係相同之鍵之一經估計數目。
在實例145中,如實例144之標的物,其中鍵之該估計數目係藉由以下方式而計算:自該kvset獲得一第一鍵布隆過濾器;自該不同kvset獲得一第二鍵布隆過濾器;及將該第一鍵布隆過濾器與該第二鍵布隆過濾器進行交集運算以產生一節點布隆過濾器估計之基數(NBEC)。
在實例146中,如實例145之標的物,其中該等節點指標包含自一NKVcnt值減去該NBEC以估計該節點中之已淘汰鍵值對之一數目,該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點之每一kvset中之鍵值對之一總計數。
在實例147中,如實例145至146中任何一或多項之標的物,其中該等
節點指標包含將一NKVcap值乘以一Fobs值,其中該NKVcap值係由其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點中之每一kvset中之鍵及值使用之一總儲存容量,且其中該Fobs值係自一NKVcnt值減去該NBEC且除以NKVcnt之結果,其中該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點之每一kvset中之鍵值對之一總計數。
在實例148中,如實例134至147中任何一或多項之標的物,其中該等節點指標儲存於該節點中。
在實例149中,如實例134至148中任何一或多項之標的物,其中該等節點指標儲存於一樹層級中,該樹層級對於該KVS樹之一層級中之所有節點係共同的。
在實例150中,如實例115至149中任何一或多項之標的物,其中該用於針對該壓縮操作選擇該節點之構件包含:用於收集包含該節點之多個節點之kvset指標集之構件;用於基於該等kvset指標集而將該多個節點排序之構件;及用於基於來自該排序之一排序次序而選擇該多個節點之一子集之構件,其中對該節點執行該壓縮操作包含對該多個節點之該子集中之每一節點執行該壓縮操作,該多個節點之該子集包含該節點。
在實例151中,如實例150之標的物,其中該多個節點之該子集之一基數由一效能值設定。
在實例152中,如實例151之標的物,其中該效能值係如由所恢復空間量測之執行該壓縮之一效率。
以上詳細說明包含對形成該詳細說明之一部分之附圖之參考。圖式以圖解說明之方式展示可實踐之特定實施例。此等實施例在本文中亦稱為
「實例」。除了所展示或所闡述之彼等元件之外,此等實例亦可包含若干元件。然而,本發明人亦預期其中僅提供所展示或所闡述之彼等元件之實例。此外,本發明人亦預期使用關於一特定實例(或者其一或多個態樣)或關於本文中所展示或所闡述之其他實例(或者其一或多個態樣)而展示或闡述之彼等元件之任何組合或排列之實例(或者其一或多個態樣)。
此文件中所提及之所有公開案、專利及專利文件將其全文以引用方式併入本文中,就像個別地以引用方式併入一樣。倘若本文件與以引用方式如此併入之彼等文件之間的使用不一致,則所併入之參考文獻中之使用應被視為對本文件之該使用之補充;對於不可調和之不一致性,以本文件中之使用為準。
在本文件中,如在專利文件中常見,使用術語「一(a或an)」來包含一個或一個以上,獨立於任何其他例項或「至少一個(at least one)」或「一或多個(one或more)」之使用。在本文件中,使用術語「或(or)」來係指一非排他性,或使得「A或B」包含「A但非B」、「B但非A」及「A及B」,除非另有指示。在所附申請專利範圍中,將術語「包含(including)」及「其中(in which)」用作各別術語「包括(comprising)」及「其中(wherein)」之普通英語等效形式。此外,在所附申請專利範圍中,術語「包含(including)」及「包括(comprising)」係開放式的,亦即,在一請求項中除列於此一術語之後之彼等元件以外亦包含若干元件之一系統、裝置、物件或程序仍被視為歸屬於彼請求項之範疇內。此外,在所附申請專利範圍中,術語「第一(first)」、「第二(second)」及「第三(third)」等僅用作標籤,且不意欲對其客體強加數字要求。
上文說明意欲係說明性而非限制性的。舉例而言,上文所闡述之實
例(或者其一或多個態樣)可以彼此組合方式使用。諸如,熟習此項技術者可基於審閱上文說明而使用其他實施例。摘要係用以允許讀者迅速地確定技術揭示內容之本質且係基於以下理解而提交:其將不用於解釋或限制申請專利範圍之範疇或含義。而且,在以上實施方式中,各種特徵可分組在一起以簡化本發明。此應被解釋為預計一未主張之所揭示特徵對於任一請求項係必要的。更確切而言,發明標的物可在於少於一特定所揭示實施例之所有特徵。因此,特此將所附申請專利範圍併入至實施方式中,其中每一請求項獨立地作為一單獨實施例。實施例之範疇應參考所附申請專利範圍連同此申請專利範圍所授權之等效物之全部範疇來判定。
100:KVS樹/樹
105:第一根/節點/KVS樹
110:節點/第二根
115:鍵值集
120:鍵值集
125:鍵值集
I:識別證
L0:樹層級
L1:樹層級/第一層級
L2:樹層級/第二層級
L3:樹層級/第三層級
N:識別證
O:識別證
Claims (44)
- 一種系統,其包括處理電路,該處理電路經組態以執行包括以下之操作:針對一鍵值集(KVS)樹中之一節點建立一鍵值集(kvset),該kvset建立之該建立包含該kvset之一kvset指標集之計算;該kvset指標係包含在該kvset中,任何kvset係配置以儲存多個鍵值對,其中一給予鍵對該kvset係唯一的,該節點包括一時間上經定序之kvset序列,該時間上經定序之序列包括在該時間上經定序之序列之一端的一最舊kvset及在該時間上經定序之序列之另一端的一最新kvset,及該KVS樹具有一確定性映射,其提供一規則,使得在不顧及該KVS樹之節點內容之情況下,任何鍵值對經由該KVS樹映射一特定路徑至該KVS樹之任何層級之一特定子節點;將該kvset新增至該節點之該時間上經定序之kvset序列,該kvset一旦經新增至該節點之該時間上經定序之kvset序列係不可變的;基於該kvset指標集中之一指標而針對一壓縮操作選擇該節點;及對該節點執行該壓縮操作。
- 如請求項1之系統,其中回應於一壓縮操作而建立該kvset,該壓縮操作係一鍵壓縮、一鍵值壓縮、一溢寫壓縮或一上升壓縮中之至少一者。
- 如請求項2之系統,其中該壓縮操作係一鍵壓縮,且該kvset指標集包括該kvset中由於該鍵壓縮而產生之未經參照值之指標。
- 如請求項2之系統,其中該kvset指標集包括對該kvset中之已淘汰鍵值對之一估計,對已淘汰鍵值對之該估計係藉由該處理電路對來自預壓縮kvset之未包含於該kvset中之鍵項目之一數目求和而計算。
- 如請求項2之系統,其中該kvset指標集包括該kvset中之已淘汰鍵值對之一經估計儲存大小,已淘汰鍵值對之該經估計儲存大小係藉由該處理電路對來自預壓縮kvset之未包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
- 如請求項2之系統,其中該kvset指標集包括該kvset中之有效鍵值對之一經估計儲存大小,有效鍵值對之該經估計儲存大小係藉由該處理電路對來自預壓縮kvset之包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
- 如請求項1之系統,其中該處理電路經組態以回應於將該kvset新增至該節點而修改節點指標。
- 如請求項7之系統,其中該等節點指標包括經受對包括該節點之一節點群組執行之先前壓縮之kvset中之經估計已淘汰鍵值對之一分率之一值。
- 如請求項8之系統,其中該等節點指標包括由一壓縮操作產生的該kvset指標集中之相似指標與來自對該節點執行之壓縮操作之先前kvset指 標之一總和。
- 如請求項8之系統,其中該值係經受針對該節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。
- 如請求項8之系統,其中該等節點指標包括在該kvset及該節點之一不同kvset中係相同之鍵之一經估計數目。
- 如請求項11之系統,其中,為計算鍵之該經估計數目,該處理電路進一步經組態以:自該kvset獲得一第一鍵布隆過濾器;自該不同kvset獲得一第二鍵布隆過濾器;及將該第一鍵布隆過濾器與該第二鍵布隆過濾器進行交集運算以產生一節點布隆過濾器估計之基數(NBEC)。
- 如請求項12之系統,其中該等節點指標包括該處理電路將一NKVcap值乘以一Fobs值,其中該NKVcap值係由其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點中之每一kvset中之鍵及值使用之一總儲存容量,且其中該Fobs值係自一NKVcnt值減去該NBEC且除以NKVcnt之結果,其中該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點之每一kvset中之鍵值對之一總計數。
- 如請求項1之系統,其中,為針對該壓縮操作選擇該節點,該處理電 路進一步經組態以:收集包括該節點之多個節點之kvset指標集;基於該等kvset指標集而將該多個節點排序;及基於來自該排序之一排序次序而選擇該多個節點之一子集,其中,為對該節點執行該壓縮操作,該處理電路經組態以對該多個節點之該子集中之每一節點執行該壓縮操作,該多個節點之該子集包括該節點。
- 如請求項14之系統,其中該多個節點之該子集之一基數由一效能值設定。
- 至少一非暫態機器可讀媒體,其包括在由一機器執行時致使該機器執行包括以下各項之操作之指令:針對一鍵值集(KVS)樹中之一節點建立一鍵值集(kvset),該kvset建立之該建立包括計算該kvset之一kvset指標集;該kvset指標係包含在該kvset中,任何kvset係配置以儲存多個鍵值對,其中一給予鍵對該kvset係唯一的,該節點包括一時間上經定序之kvset序列,該時間上經定序之序列包括在該時間上經定序之序列之一端的一最舊kvset及在該時間上經定序之序列之另一端的一最新kvset,及該KVS樹具有一確定性映射,其提供一規則,使得在不顧及該KVS樹之節點內容之情況下,任何鍵值對經由該KVS樹映射一特定路徑至該KVS樹之任何層級之一特定子節點;將該kvset新增至該節點之該時間上經定序之kvset序列,該kvset一旦經新增至該節點之該時間上經定序之kvset序列係不可變的;基於該kvset指標集中之一指標而針對一壓縮操作選擇該節點;及 對該節點執行該壓縮操作。
- 如請求項16之至少一個機器可讀媒體,其中回應於一壓縮操作而建立該kvset,該壓縮操作係一鍵壓縮、一鍵值壓縮、一溢寫壓縮或一上升壓縮中之至少一者。
- 如請求項17之至少一個機器可讀媒體,其中該壓縮操作係一鍵壓縮,且該kvset指標集包括該kvset中由於該鍵壓縮而產生之未經參照值之指標。
- 如請求項17之至少一個機器可讀媒體,其中該kvset指標集包括對該kvset中之已淘汰鍵值對之一估計,對已淘汰鍵值對之該估計係藉由對來自預壓縮kvset之未包含於該kvset中之鍵項目之一數目求和而計算。
- 如請求項17之至少一個機器可讀媒體,其中該kvset指標集包括該kvset中之已淘汰鍵值對之一經估計儲存大小,已淘汰鍵值對之該經估計儲存大小係藉由對來自預壓縮kvset之未包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
- 如請求項17之至少一個機器可讀媒體,其中該kvset指標集包括該kvset中之有效鍵值對之一經估計儲存大小,有效鍵值對之該經估計儲存大小係藉由對來自預壓縮kvset之包含於該kvset中之鍵項目及對應值之儲存大小求和而計算。
- 如請求項16之至少一個機器可讀媒體,其中該等操作進一步包括回應於將該kvset新增至該節點而修改節點指標。
- 如請求項22之至少一個機器可讀媒體,其中該等節點指標包括經受對包括該節點之一節點群組執行之先前壓縮之kvset中之經估計已淘汰鍵值對之一分率之一值。
- 如請求項23之至少一個機器可讀媒體,其中該等節點指標包括由一壓縮操作產生的該kvset指標集中之相似指標與來自對該節點執行之壓縮操作之先前kvset指標之一總和。
- 如請求項23之至少一個機器可讀媒體,其中該值係經受針對該節點之設定數目次最近先前壓縮之kvset中之經估計已淘汰鍵值對之該分率之一平均值。
- 如請求項23之至少一個機器可讀媒體,其中該等節點指標包括在該kvset及該節點之一不同kvset中係相同之鍵之一經估計數目。
- 如請求項26之至少一個機器可讀媒體,其中鍵之該經估計數目係藉由以下方式而計算:自該kvset獲得一第一鍵布隆過濾器;自該不同kvset獲得一第二鍵布隆過濾器;及 將該第一鍵布隆過濾器與該第二鍵布隆過濾器進行交集運算以產生一節點布隆過濾器估計之基數(NBEC)。
- 如請求項27之至少一個機器可讀媒體,其中該等節點指標包括將一NKVcap值乘以一Fobs值,其中該NKVcap值係由其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點中之每一kvset中之鍵及值使用之一總儲存容量,且其中該Fobs值係自一NKVcnt值減去該NBEC且除以NKVcnt之結果,其中該NKVcnt值係其中為產生該NBEC而將一布隆過濾器進行交集運算之該節點之每一kvset中之鍵值對之一總計數。
- 如請求項16之至少一個機器可讀媒體,其中針對該壓縮操作選擇該節點包括:收集包括該節點之多個節點之kvset指標集;基於該等kvset指標集而將該多個節點排序;及基於來自該排序之一排序次序而選擇該多個節點之一子集,對該節點執行該壓縮操作包括對該多個節點之該子集中之每一節點執行該壓縮操作,該多個節點之該子集包括該節點。
- 如請求項29之至少一個機器可讀媒體,其中該多個節點之該子集之一基數由一效能值設定。
- 一種機器實施之方法,其包括:針對一鍵值集(KVS)樹中之一節點建立一鍵值集(kvset),該kvset建 立之該建立包括計算該kvset之一kvset指標集;該kvset指標係包含在該kvset中,任何kvset係配置以儲存多個鍵值對,其中一給予鍵對該kvset係唯一的,該節點包括一時間上經定序之kvset序列,該時間上經定序之序列包括在該時間上經定序之序列之一端的一最舊kvset及在該時間上經定序之序列之另一端的一最新kvset,及該KVS樹具有一確定性映射,其提供一規則,使得在不顧及該KVS樹之節點內容之情況下,任何鍵值對經由該KVS樹映射一特定路徑至該KVS樹之任何層級之一特定子節點;將該kvset新增至該節點之該時間上經定序之kvset序列,其中該kvset一旦經新增至該節點之該時間上經定序之kvset序列係不可變的;基於該kvset指標集中之一指標而針對一壓縮操作選擇該節點;及對該節點執行該壓縮操作。
- 如請求項31之方法,其中回應於一壓縮操作而建立該kvset,該壓縮操作係一鍵壓縮、一鍵值壓縮、一溢寫壓縮或一上升壓縮中之至少一者。
- 如請求項31之方法,其進一步包括回應於將該kvset新增至該節點而修改節點指標。
- 如請求項33之方法,其中該等節點指標包括經受對包括該節點之一節點群組執行之先前壓縮之kvset中之經估計已淘汰鍵值對之一分率之一值。
- 如請求項34之方法,其中該等節點指標包括在該kvset及該節點之一 不同kvset中係相同之鍵之一經估計數目。
- 如請求項35之方法,其中鍵之該經估計數目係藉由以下方式而計算:自該kvset獲得一第一鍵布隆過濾器;自該不同kvset獲得一第二鍵布隆過濾器;及將該第一鍵布隆過濾器與該第二鍵布隆過濾器進行交集運算以產生一節點布隆過濾器估計之基數(NBEC)。
- 如請求項31之方法,其中針對該壓縮操作選擇該節點包括:收集包括該節點之多個節點之kvset指標集;基於該等kvset指標集而將該多個節點排序;及基於來自該排序之一排序次序而選擇該多個節點之一子集,對該節點執行該壓縮操作包括對該多個節點之該子集中之每一節點執行該壓縮操作,該多個節點之該子集包括該節點。
- 一種系統,其包括:用於針對一鍵值集(KVS)樹中之一節點建立一鍵值集(kvset)之構件,該建立包括計算該kvset之一kvset指標集,該節點包含一時間上經定序之kvset序列,該時間上經定序之序列包括在該時間上經定序之序列之一端的一最舊kvset及在該時間上經定序之序列之另一端的一最新kvset,該KVS樹具有一確定性映射,其提供一規則,使得在不顧及該內容節點之情況下,任何鍵值對經由該KVS樹映射一特定路徑至該KVS樹之任何層 級之一特定子節點;用於將該kvset新增至該節點之該時間上經定序之kvset序列之構件,該kvset一旦經新增至該節點之該時間上經定序之kvset序列係不可變的;用於基於該kvset指標集中之一指標而針對一壓縮操作選擇該節點之構件;及用於對該節點執行該壓縮操作之構件。
- 如請求項38之系統,其中回應於一壓縮操作而建立該kvset,該壓縮操作係一鍵壓縮、一鍵值壓縮、一溢寫壓縮或一上升壓縮中之至少一者。
- 如請求項38之系統,其進一步包括用於回應於將該kvset新增至該節點而修改節點指標之構件。
- 如請求項40之系統,其中該等節點指標包括經受對包括該節點之一節點群組執行之先前壓縮之kvset中之經估計已淘汰鍵值對之一分率之一值。
- 如請求項41之系統,其中該等節點指標包括在該kvset及該節點之一不同kvset中係相同之鍵之一經估計數目。
- 如請求項42之系統,其中鍵之該估計數目係藉由以下方式而計算:自該kvset獲得一第一鍵布隆過濾器;自該不同kvset獲得一第二鍵布隆過濾器;及 將該第一鍵布隆過濾器與該第二鍵布隆過濾器進行交集運算以產生一節點布隆過濾器估計之基數(NBEC)。
- 如請求項38之系統,其中該用於針對該壓縮操作選擇該節點之構件包括:用於收集包括該節點之多個節點之kvset指標集之構件;用於基於該等kvset指標集而將該多個節點排序之構件;及用於基於來自該排序之一排序次序而選擇該多個節點之一子集之構件,對該節點執行該壓縮操作包括對該多個節點之該子集中之每一節點執行該壓縮操作,該多個節點之該子集包括該節點。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/428,912 | 2017-02-09 | ||
US15/428,912 US10706105B2 (en) | 2017-02-09 | 2017-02-09 | Merge tree garbage metrics |
Publications (2)
Publication Number | Publication Date |
---|---|
TW201842454A TW201842454A (zh) | 2018-12-01 |
TWI702506B true TWI702506B (zh) | 2020-08-21 |
Family
ID=63037820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW107104242A TWI702506B (zh) | 2017-02-09 | 2018-02-07 | 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法 |
Country Status (5)
Country | Link |
---|---|
US (2) | US10706105B2 (zh) |
KR (1) | KR102289332B1 (zh) |
CN (1) | CN110291518A (zh) |
TW (1) | TWI702506B (zh) |
WO (1) | WO2018148151A1 (zh) |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10706105B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree garbage metrics |
US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
US10719495B2 (en) | 2017-02-09 | 2020-07-21 | Micron Technology, Inc. | Stream selection for multi-stream storage devices |
US10725988B2 (en) | 2017-02-09 | 2020-07-28 | Micron Technology, Inc. | KVS tree |
US10909074B2 (en) * | 2017-04-18 | 2021-02-02 | Microsoft Technology Licensing, Llc | File table index aggregate statistics |
US10698808B2 (en) * | 2017-04-25 | 2020-06-30 | Samsung Electronics Co., Ltd. | Garbage collection—automatic data placement |
US11099771B2 (en) * | 2018-09-24 | 2021-08-24 | Salesforce.Com, Inc. | System and method for early removal of tombstone records in database |
US10915546B2 (en) | 2018-10-10 | 2021-02-09 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US11100071B2 (en) | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
US11061881B2 (en) * | 2018-11-08 | 2021-07-13 | Vmware, Inc. | Bounding cost of flushes in buffer trees |
US10852978B2 (en) | 2018-12-14 | 2020-12-01 | Micron Technology, Inc. | Key-value store using journaling with selective data storage format |
US11048755B2 (en) | 2018-12-14 | 2021-06-29 | Micron Technology, Inc. | Key-value store tree with selective use of key portion |
US10936661B2 (en) | 2018-12-26 | 2021-03-02 | Micron Technology, Inc. | Data tree with order-based node traversal |
US11436139B2 (en) * | 2019-05-10 | 2022-09-06 | Microsoft Technology Licensing, Llc | Object storage change-events |
CN112015791B (zh) | 2019-05-30 | 2024-06-07 | 阿里云计算有限公司 | 数据处理方法、装置、电子设备及计算机存储介质 |
US11288244B2 (en) * | 2019-06-10 | 2022-03-29 | Akamai Technologies, Inc. | Tree deduplication |
US10983975B2 (en) | 2019-06-13 | 2021-04-20 | Ant Financial (Hang Zhou) Network Technology Co., Ltd. | Data block storage method and apparatus, and electronic device |
JP7323804B2 (ja) * | 2019-12-10 | 2023-08-09 | 富士通株式会社 | データ処理装置およびデータ処理プログラム |
KR20210075731A (ko) | 2019-12-13 | 2021-06-23 | 삼성전자주식회사 | 스토리지 장치 및 이의 동작 방법 |
US11921683B2 (en) | 2020-06-08 | 2024-03-05 | Paypal, Inc. | Use of time to live value during database compaction |
US11755427B2 (en) | 2021-06-01 | 2023-09-12 | Alibaba Singapore Holding Private Limited | Fast recovery and replication of key-value stores |
US11829291B2 (en) | 2021-06-01 | 2023-11-28 | Alibaba Singapore Holding Private Limited | Garbage collection of tree structure with page mappings |
EP4348454A2 (en) * | 2021-06-01 | 2024-04-10 | Speedb Ltd. | Lsm hybrid compaction |
US11741073B2 (en) | 2021-06-01 | 2023-08-29 | Alibaba Singapore Holding Private Limited | Granularly timestamped concurrency control for key-value store |
US20230017732A1 (en) | 2021-07-16 | 2023-01-19 | Samsung Electronics Co., Ltd. | Key packing for flash key value store operations |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200421114A (en) * | 2002-12-19 | 2004-10-16 | Ibm | Method and apparatus for building one or more indexes on data concurrent with manipulation of data |
US20120072656A1 (en) * | 2010-06-11 | 2012-03-22 | Shrikar Archak | Multi-tier caching |
US20130218840A1 (en) * | 2012-02-17 | 2013-08-22 | Charles Smith | System and method for building a point-in-time snapshot of an eventually-consistent data store |
US20140064490A1 (en) * | 2012-08-28 | 2014-03-06 | Samsung Electronics Co., Ltd. | Management of encryption keys for broadcast encryption and transmission of messages using broadcast encryption |
CN105095287A (zh) * | 2014-05-14 | 2015-11-25 | 华为技术有限公司 | Lsm数据合并排序方法和装置 |
US20160275094A1 (en) * | 2015-03-17 | 2016-09-22 | Cloudera, Inc. | Compaction policy |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5204958A (en) | 1991-06-27 | 1993-04-20 | Digital Equipment Corporation | System and method for efficiently indexing and storing a large database with high data insertion frequency |
US5530850A (en) | 1993-10-25 | 1996-06-25 | International Business Machines Corporation | Data storage library array with log-structured file system which allows simultaneous write and garbage collection |
US6597957B1 (en) | 1999-12-20 | 2003-07-22 | Cisco Technology, Inc. | System and method for consolidating and sorting event data |
US7904487B2 (en) * | 2003-10-09 | 2011-03-08 | Oracle International Corporation | Translating data access requests |
US7690000B2 (en) | 2004-01-08 | 2010-03-30 | Microsoft Corporation | Metadata journal for information technology systems |
US7631151B2 (en) | 2005-11-28 | 2009-12-08 | Commvault Systems, Inc. | Systems and methods for classifying and transferring information in a storage network |
EP1855284A2 (en) | 2006-05-10 | 2007-11-14 | Nero AG | Apparatus for writing data and redundancy data on a storage medium |
WO2008005809A2 (en) | 2006-06-30 | 2008-01-10 | Tele Atlas North America, Inc. | Nearest search on adaptive index with variable compression |
US20080165281A1 (en) | 2007-01-05 | 2008-07-10 | Microsoft Corporation | Optimizing Execution of HD-DVD Timing Markup |
US8706914B2 (en) * | 2007-04-23 | 2014-04-22 | David D. Duchesneau | Computing infrastructure |
US8347059B2 (en) | 2008-08-15 | 2013-01-01 | International Business Machines Corporation | Management of recycling bin for thinly-provisioned logical volumes |
US9189472B2 (en) | 2009-03-30 | 2015-11-17 | Touchtype Limited | System and method for inputting text into small screen devices |
CN101515298B (zh) | 2009-03-30 | 2013-09-25 | 华为技术有限公司 | 基于树形数据结构节点的插入的方法和存储装置 |
GB0905457D0 (en) * | 2009-03-30 | 2009-05-13 | Touchtype Ltd | System and method for inputting text into electronic devices |
US9838242B2 (en) | 2011-04-13 | 2017-12-05 | Jetflow Technologies | Flowlet-based processing with key/value store checkpointing |
WO2013001535A2 (en) | 2011-06-27 | 2013-01-03 | Jethrodata Ltd. | System, method and data structure for fast loading, storing and access to huge data sets in real time |
US8595267B2 (en) | 2011-06-27 | 2013-11-26 | Amazon Technologies, Inc. | System and method for implementing a scalable data storage service |
JP5524144B2 (ja) | 2011-08-08 | 2014-06-18 | 株式会社東芝 | key−valueストア方式を有するメモリシステム |
JP5782948B2 (ja) | 2011-09-15 | 2015-09-24 | 富士通株式会社 | 情報管理方法及び情報管理装置 |
US9053140B2 (en) | 2012-02-03 | 2015-06-09 | Apple Inc. | Enhanced B-trees with record merging |
TWI475412B (zh) | 2012-04-02 | 2015-03-01 | Ind Tech Res Inst | 數位內容次序調整方法和數位內容匯流器 |
US20130265305A1 (en) | 2012-04-04 | 2013-10-10 | Jon N. Hasselgren | Compressed Depth Cache |
KR101341507B1 (ko) | 2012-04-13 | 2013-12-13 | 연세대학교 산학협력단 | 수정된 b+트리 노드 검색 방법 및 장치 |
US8868531B2 (en) | 2012-09-10 | 2014-10-21 | Apple Inc. | Concurrent access methods for tree data structures |
US20140222870A1 (en) | 2013-02-06 | 2014-08-07 | Lei Zhang | System, Method, Software, and Data Structure for Key-Value Mapping and Keys Sorting |
US9400816B1 (en) | 2013-02-28 | 2016-07-26 | Google Inc. | System for indexing collections of structured objects that provides strong multiversioning semantics |
US20140279944A1 (en) | 2013-03-15 | 2014-09-18 | University Of Southern California | Sql query to trigger translation for maintaining consistency of cache augmented sql systems |
EP2804114A1 (en) * | 2013-05-16 | 2014-11-19 | Fujitsu Limited | Database controller, method, and program for managing a distributed data store |
CN103345472B (zh) * | 2013-06-04 | 2016-08-10 | 北京航空航天大学 | 基于有限二叉树布隆过滤器的去冗文件系统及其构建方法 |
US10402374B2 (en) | 2013-08-26 | 2019-09-03 | Vmware, Inc. | Log-structured storage device format |
JP6025149B2 (ja) * | 2013-11-06 | 2016-11-16 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | データを管理するシステムおよび方法 |
US9367260B1 (en) | 2013-12-13 | 2016-06-14 | Emc Corporation | Dynamic replication system |
JP5950285B2 (ja) | 2013-12-19 | 2016-07-13 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | 予め決められた複数のビット幅のデータに対して操作を行う命令を使用してツリーの検索を行うための方法、並びに、当該命令を使用してツリーの検索を行うためのコンピュータ及びそのコンピュータ・プログラム |
US9524302B2 (en) | 2014-03-05 | 2016-12-20 | Scality, S.A. | Distributed consistent database implementation within an object store |
US9697267B2 (en) | 2014-04-03 | 2017-07-04 | Sandisk Technologies Llc | Methods and systems for performing efficient snapshots in tiered data structures |
US9411840B2 (en) | 2014-04-10 | 2016-08-09 | Facebook, Inc. | Scalable data structures |
US9590948B2 (en) | 2014-12-15 | 2017-03-07 | Cisco Systems, Inc. | CCN routing using hardware-assisted hash tables |
US9858301B1 (en) | 2015-01-20 | 2018-01-02 | Amazon Technologies, Inc. | Selective flushing of a database journal for an asymmetrically-encrypted database |
US10303673B2 (en) | 2015-05-11 | 2019-05-28 | Apple Inc. | Hierarchical data storage |
US11461010B2 (en) | 2015-07-13 | 2022-10-04 | Samsung Electronics Co., Ltd. | Data property-based data placement in a nonvolatile memory device |
US9772906B2 (en) | 2015-07-30 | 2017-09-26 | Unitrends, Inc. | Disaster recovery systems and methods |
US10122380B2 (en) | 2015-11-16 | 2018-11-06 | International Business Machines Corporation | Compression of javascript object notation data using structure information |
CN111427517A (zh) | 2015-12-28 | 2020-07-17 | 华为技术有限公司 | 一种数据处理方法以及NVMe存储器 |
US10649658B2 (en) | 2015-12-31 | 2020-05-12 | Vmware, Inc. | File system based key value service |
US10496283B2 (en) | 2016-01-22 | 2019-12-03 | Suraj Prabhakar WAGHULDE | Adaptive prefix tree based order partitioned data storage system |
WO2017130377A1 (ja) | 2016-01-29 | 2017-08-03 | 株式会社日立製作所 | 計算機システム、及び、データ処理方法 |
US20180089074A1 (en) | 2016-09-28 | 2018-03-29 | Intel Corporation | Techniques to Manage Key-Value Storage at a Memory or Storage Device |
US10706106B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
US10725988B2 (en) | 2017-02-09 | 2020-07-28 | Micron Technology, Inc. | KVS tree |
US10719495B2 (en) | 2017-02-09 | 2020-07-21 | Micron Technology, Inc. | Stream selection for multi-stream storage devices |
US10706105B2 (en) | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree garbage metrics |
US10235257B1 (en) | 2017-07-19 | 2019-03-19 | EMC IP Holding Company LLC | Facilitation of replication progress tracking |
US10579633B2 (en) | 2017-08-31 | 2020-03-03 | Micron Technology, Inc. | Reducing probabilistic filter query latency |
US20190034427A1 (en) | 2017-12-28 | 2019-01-31 | Intel Corporation | Data management system employing a hash-based and tree-based key-value data structure |
US10915546B2 (en) | 2018-10-10 | 2021-02-09 | Micron Technology, Inc. | Counter-based compaction of key-value store tree data block |
US11100071B2 (en) | 2018-10-10 | 2021-08-24 | Micron Technology, Inc. | Key-value store tree data block spill with compaction |
-
2017
- 2017-02-09 US US15/428,912 patent/US10706105B2/en active Active
-
2018
- 2018-02-05 KR KR1020197026330A patent/KR102289332B1/ko active IP Right Grant
- 2018-02-05 CN CN201880011183.3A patent/CN110291518A/zh not_active Withdrawn
- 2018-02-05 WO PCT/US2018/016906 patent/WO2018148151A1/en active Application Filing
- 2018-02-07 TW TW107104242A patent/TWI702506B/zh active
-
2020
- 2020-07-06 US US16/921,371 patent/US20200334295A1/en not_active Abandoned
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TW200421114A (en) * | 2002-12-19 | 2004-10-16 | Ibm | Method and apparatus for building one or more indexes on data concurrent with manipulation of data |
US20120072656A1 (en) * | 2010-06-11 | 2012-03-22 | Shrikar Archak | Multi-tier caching |
US20130218840A1 (en) * | 2012-02-17 | 2013-08-22 | Charles Smith | System and method for building a point-in-time snapshot of an eventually-consistent data store |
US20140064490A1 (en) * | 2012-08-28 | 2014-03-06 | Samsung Electronics Co., Ltd. | Management of encryption keys for broadcast encryption and transmission of messages using broadcast encryption |
CN105095287A (zh) * | 2014-05-14 | 2015-11-25 | 华为技术有限公司 | Lsm数据合并排序方法和装置 |
US20160275094A1 (en) * | 2015-03-17 | 2016-09-22 | Cloudera, Inc. | Compaction policy |
Also Published As
Publication number | Publication date |
---|---|
CN110291518A (zh) | 2019-09-27 |
KR20190113942A (ko) | 2019-10-08 |
US10706105B2 (en) | 2020-07-07 |
KR102289332B1 (ko) | 2021-08-17 |
WO2018148151A1 (en) | 2018-08-16 |
TW201842454A (zh) | 2018-12-01 |
US20180225321A1 (en) | 2018-08-09 |
US20200334295A1 (en) | 2020-10-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI702506B (zh) | 用於合併樹廢棄項目指標之系統、機器可讀媒體及機器實施之方法 | |
TWI702503B (zh) | 實施用於維護操作之合併樹修改之系統、方法及電腦可讀媒體 | |
TWI719281B (zh) | 用於串流選擇之系統、機器可讀媒體、及機器實施之方法 | |
TWI682274B (zh) | 鍵值儲存樹 | |
TWI682285B (zh) | 用於索引鍵值結構樹資料庫的產品、方法及機器可讀媒體 | |
JP6627809B2 (ja) | データベース処理装置、システム、方法およびプログラム |