TW201945961A - 使用物件固態硬碟(ssd)裝置之日誌結構合併(lsm)樹為基的資料庫之最佳化 - Google Patents
使用物件固態硬碟(ssd)裝置之日誌結構合併(lsm)樹為基的資料庫之最佳化 Download PDFInfo
- Publication number
- TW201945961A TW201945961A TW108112871A TW108112871A TW201945961A TW 201945961 A TW201945961 A TW 201945961A TW 108112871 A TW108112871 A TW 108112871A TW 108112871 A TW108112871 A TW 108112871A TW 201945961 A TW201945961 A TW 201945961A
- Authority
- TW
- Taiwan
- Prior art keywords
- data
- object identifier
- key
- osd
- blocks
- Prior art date
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/22—Arrangements for sorting or merging computer data on continuous record carriers, e.g. tape, drum, disc
- G06F7/32—Merging, i.e. combining data contained in ordered sequence on at least two record carriers to produce a single carrier or set of carriers having all the original data in the ordered sequence merging methods in general
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0661—Format or protocol conversion arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/211—Schema design and management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/21—Design, administration or maintenance of databases
- G06F16/217—Database tuning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2246—Trees, e.g. B+trees
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/258—Data format conversion from or to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0608—Saving storage space on storage systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
- G06F3/0641—De-duplication techniques
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/06—Arrangements for sorting, selecting, merging, or comparing data on individual record carriers
- G06F7/14—Merging, i.e. combining at least two sets of record carriers each arranged in the same ordered sequence to produce a single set having the same ordered sequence
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
所揭露的實施例係有關於日誌結構合併(LSM)樹資料庫之改良。於一實施例中,揭露一種方法,其包含接收待寫入至一日誌結構合併(LSM)樹之資料,該資料包括一密鑰和值;判定一記憶體內緩衝器缺乏用以儲存該待寫入資料之容量;壓縮一物件儲存裝置(OSD)中所儲存之該LSM樹的至少一階中所儲存之密鑰範圍,該等密鑰範圍之各者係與一個別物件識別符相關聯;產生一密鑰範圍物件,該密鑰範圍物件包括與該等密鑰範圍之一子集相關聯的物件識別符;抹除相應於該密鑰範圍物件中所包括之該等物件識別符的各者之實體區塊;及寫入該密鑰範圍物件至該OSD之至少一實體區塊。
Description
本申請案包括其接受著作權保護之材料。該著作權擁有者對於藉由專利公開之任一者的傳真複製沒有異議,因為其出現在在專利及商標局檔案或記錄中,但除此之外保留諸如此類的所有著作權權利。
所揭露的實施例係有關於資料庫最佳化,而(特別地)有關於使用物件固態硬碟(SSD)裝置以最佳化日誌結構合併(LSM)樹為基的資料庫之方法、系統、及設備。
LSM樹是一種資料儲存架構,其中資料係儲存為橫跨多數儲存結構之密鑰值對。使用一種二階LSM樹為範例,第一樹結構(C0
)係儲存密鑰值範圍於(例如)本地記憶體中而第二樹結構(C1
)係儲存於持久儲存裝置上。新記錄被僅插入C0
(其具有固定大小)中。假如新記錄之插入將造成C0
超過該結構的固定大小,則密鑰值對之連續範圍係從C0
移除且被插入C1
。從較低階(例如,C0
)至較高階(例如,C1
)之資料的移動被稱為壓縮(compaction)。
LSM樹非常適於密鑰值資料庫,諸如ROCKSDB(由Facebook, Inc. of Menlo Park, Calif.所建立)或LEVELDB(由Google, Inc. of Mountain View, Calif.所建立)。因為這些資料庫將密鑰使用為基礎寫入/擷取指標,所以資料庫介面之邏輯資料模型係明確地映射至LSM樹結構。為此原因,LSM樹常被用於此類密鑰值資料庫以增進:壓縮率、針對持久改變所需之較少的輸入/輸出(I/O)容量、及較簡單的碼基數。
儘管有這些增進,LSM樹之壓縮操作仍導致當配合儲存裝置而使用時的無效率。明確地,由於針對用以致能分類插入之數個密鑰值範圍所需的讀取數,壓縮操作是計算上代價高的。此計算係由於基本實體儲存機制而加重,該基本實體儲存機制亦履行其本身的例行維護。例如,固態快閃驅動裝置(Flash drive)係採用於異步垃圾收集常式,其確保無效頁面從基本快閃區塊移除。於壓縮期間,因為密鑰範圍無法全被儲存在單一區塊(或區塊之序列)上,所以密鑰範圍之抹除通常導致無效頁面被留在基本SSD上。因此,壓縮程序額外地包括基本SSD垃圾收集程序之負擔,其增加了當存取SSD時之潛時(由於垃圾收集程序暫時地停止了讀取及寫入)。
所揭露的實施例係藉由引入一種新類型的儲存裝置,亦即,物件儲存裝置(OSD)來解決這些及其他問題。OSD係組態成在基本儲存媒體(例如,NAND快閃)之區塊階讀取、寫入、及刪除。藉由在區塊階操作,OSD可藉由將資料之完整區塊無效化(相對於頁面階無效化)以抹除物件。結果,不需要由OSD所採用的垃圾收集程序來從包括無效頁面之區塊複製有效頁面(如目前系統中所履行者)。因此,顯著地減少了儲存裝置之垃圾收集負擔。
於一實施例中,揭露一種方法,其包含接收待寫入至一日誌結構合併(LSM)樹之資料,該資料包括一密鑰和值;判定一記憶體內緩衝器缺乏用以儲存該待寫入資料之容量;壓縮一物件儲存裝置(OSD)中所儲存之該LSM樹的至少一階中所儲存之密鑰範圍,該等密鑰範圍之各者係與一個別物件識別符相關聯;產生一密鑰範圍物件,該密鑰範圍物件包括與該等密鑰範圍之一子集相關聯的物件識別符;抹除相應於該密鑰範圍物件中所包括之該等物件識別符的各者之實體區塊;及寫入該密鑰範圍物件至該OSD之至少一實體區塊。
於另一實施例中,揭露一種方法,其包含在一物件儲存裝置(OSD)上接收一寫入請求,該寫入請求包括複數物件識別符,該等物件識別符包含至少一新物件識別符及至少一現存物件識別符;由該OSD抹除與該現存物件識別符相關聯的資料之區塊;及由該OSD寫入與該現存物件識別符相關聯的資料及與該新物件識別符相關聯的資料。
於另一實施例中,揭露一種設備,其包含一儲存媒體,該儲存媒體係儲存資料在複數區塊中,各區塊具有複數頁面;一物件介面,其係組態成從一物件裝置驅動程式接收命令;及一控制器,其係通訊地耦合至該儲存媒體及該物件介面且組態成經由該物件介面以接收命令,該控制器進一步包括已儲存程式,其包含:由該控制器所執行以接收一寫入請求之邏輯,該寫入請求包括複數物件識別符,該等物件識別符包含至少一新物件識別符及至少一現存物件識別符、由該控制器所執行以抹除與該現存物件識別符相關聯的資料之區塊的邏輯、及由該控制器所執行以寫入與該現存物件識別符相關聯的資料及與該新物件識別符相關聯的資料之邏輯。
以下的圖形及描述進一步闡明本揭露之前述優點及實施例。
現在將參考附圖以更完整地描述本揭露於下文中,該等附圖係形成其一部分且經由繪示以顯示某些範例實施例。然而,請求標的可以多種不同的形式被實現,而因此所涵蓋或所請求標的意欲被視為不限於文中所提出之任何範例實施例;範例實施例僅被提供為說明性的。同樣地,對於所請求或所涵蓋標的之合理寬廣的範圍是想要的。除了別的以外,例如,請求標的可被實現為方法、裝置、組件、或系統。因此,實施例可(例如)具有硬體、軟體、韌體或其任何組合(除了軟體本身以外)之形式。因此,下列詳細描述不欲被視為限制。
遍及說明書及申請專利範圍,術語可具有超過明確地闡明的意義之上下文中所建議或暗示的些微不同意義。同樣地,用語「於一實施例中」(如文中所使用者)不一定指稱相同的實施例,而用語「於另一實施例中」(如文中所使用者)不一定指稱不同的實施例。意欲的是(例如):所請求標的包括完整地或部分地範例實施例之組合。
通常,術語可至少部分地從上下文中之使用來理解。例如,如文中所使用之術語(諸如「及」、「或」、或「及/或」)可包括多種意義,其可至少部分地根據其中此等術語所被使用的上下文。典型地,「或」(假如用以關聯一列表,諸如A、B或C)意欲表示A、B、及C(於此使用為包括性意義)、以及A、B或C(於此使用為排他性意義)。此外,術語「一或更多」(如文中所使用者),至少部分地根據上下文,可被用以單數意義來描述任何特徵、結構、或特性;或可被用以複數意義來描述特徵、結構、或特性之組合。類似地,諸如「一」、「一個」、或「該」等術語(再次地)可被理解為傳達單一使用或傳達複數使用,至少部分地根據上下文。此外,術語「基於」可被理解為不一定想要傳達因素之排他性集合而可(替代地)容許不一定有明確地描述的額外因素之存在,再次地,至少部分地根據上下文。
本揭露係參考方法及裝置之方塊圖和操作圖示而描述於下。應理解:方塊圖或操作圖示之各方塊(及方塊圖或操作圖示中之方塊的組合)可藉由類比或數位硬體及電腦程式指令來實施。這些電腦程式指令可被提供至以下各者之處理器:通用電腦(用以更改如文中所詳述之其功能)、特殊用途電腦、ASIC、或其他可編程資料處理設備,使得該等指令(其係經由電腦或其他可編程資料處理設備之處理器來執行)實施方塊圖或操作方塊中所指明的功能/動作。在一些替代實施方式中,方塊中所標示的功能/動作可不依操作圖示中所標示的順序發生。例如,連續出現之兩方塊可事實上被實質上同時地執行或者該等方塊可有時候被執行以相反順序,根據所涉及的功能/動作。
這些電腦程式指令可被提供至以下各者之處理器:通用電腦(用以針對特殊用途而更改其功能);特殊用途電腦;ASIC;或其他可編程數位資料處理設備,使得該等指令(其係經由電腦或其他可編程資料處理設備之處理器來執行)實施方塊圖或操作方塊中所指明的功能/動作,藉此依據文中之實施例而變換其功能。
為了本揭露之目的,電腦可讀取媒體(或電腦可讀取儲存媒體/媒體)係儲存電腦資料,該資料可包括電腦程式碼(或電腦可執行指令),其可由電腦所執行,以機器可讀取形式。舉例而言,非限制性,電腦可讀取媒體可包含電腦可讀取儲存媒體(用於資料之有形或固定儲存)、或通訊媒體(用於含碼信號之暫態解讀)。電腦可讀取儲存媒體(如文中所使用者)指的是實體或有形儲存(如與信號相反)且非限制性地包括揮發性及非揮發性、可移除及非可移除媒體,其係以用於資訊(諸如電腦可讀取指令、資料結構、程式模組或其他資料)之有形儲存的任何方法或科技來實施。電腦可讀取儲存媒體包括(但不限定於)RAM、ROM、EPROM、EEPROM、快閃記憶體或其他固態記憶體科技、CD-ROM、DVD、或其他光學儲存、磁卡帶、磁帶、磁碟儲存或其他磁性儲存裝置、或任何其他實體或材料媒體,其可被用以有形地儲存所欲的資訊或資料或指令且其可由電腦或處理器所存取。
圖1繪示二階LSM樹之操作。
該樹包括兩階(102、104)。於一實施例中,第0階(102)可被儲存在本地記憶體(例如,隨機存取記憶體(RAM))中。第1階(104)可被儲存在固態裝置(SSD)上。各階(102、104)具有相應的容量(102A、104)。資料之各項目(A至G)具有固定大小。於所示的實施例中,項目A至G被指派至可分類密鑰(照字母順序地繪示,雖然亦可使用數字密鑰)。
如所繪示,在項目C之插入以前,該等密鑰在各層內被分類。因此,在第0層(102)中,密鑰被分類(B、F);而在第1層中,各範圍(104B、104C)被分類(個別地為A及D及E及G)。如所繪示,在時間t0
,項目C(106)被插入第0層(102)中。然而,第0層(102)之容量(102A)不夠大以容納項目C(106),因此需要壓縮。
壓縮程序之兩個實施例被個別地繪示在時間t1A
及t1B
。於第一實施例(t1A
)中,第0層(102)之內容被清除並插入第1層(104)中。於此實施例中,先前在第0層(102)中之各項目(A、B)被插入已分類範例(104D、104E)中。因此,密鑰範圍(104B、104C)之大小被增加至範圍(104D、104E)以容納項目B及F。項目C(106)被插入第0層(102)中。
於第二實施例中,僅最小數目的項目可被壓縮自第0層(102)以支援項目C(106)之插入。於此實施例中,項目B及F之一可被壓縮至第1層(104)。於所示的實施例中,項目F被選擇並壓縮至範圍(102E)。項目C(106)被接著插入第0層(102)中。如所繪示,第0層(102)中之項目可無須被排序,以支援當達到容量(102A)時之項目的堆疊狀出現。此外,雖然繪示為無重疊,但第1層(104)仍可包括重疊的密鑰範圍。反之,超過第1層(104)的層(其並未繪示)可能需要無重疊的密鑰範圍。
圖2A繪示區塊為基的儲存裝置中之檔案操作的方塊圖。
LSM樹資料庫(202)係組態成處置針對來自第三方應用程式(未繪示)之密鑰值對的讀取及寫入請求。為了處置這些密鑰值對,資料庫(202)係發送寫入、讀取、及刪除檔案命令(220)至基本區塊為基的檔案系統(204)。通常,命令(220)可包含任何已支援的檔案系統命令(例如,系統呼叫)。在檔案系統(204)階上,高階讀取/寫入/刪除命令(220)被轉譯為寫入/讀取/抹除命令(222),其利用待寫入至SSD之資料的邏輯區塊。這些區塊為基的命令(222)被傳輸至區塊裝置驅動程式(206)。於一實施例中,驅動程式(206)包含一安裝在作業系統內之區塊為基的裝置驅動程式。驅動程式(206)將寫入/讀取/抹除命令(222)之區塊為基的表示轉換為利用與基本資料關聯之邏輯區塊位址(LBA)識別符的命令。這些LBA為基的命令(224)被接著傳輸至SSD介面(208)以供處理。如所繪示,SSD介面(208)係駐存在SSD或類似儲存裝置(例如,NAND快閃裝置)上。介面(208)將命令(224)中之LBA轉換至實體區塊位址(PBA)位置。通常,LBA至PBA映射被儲存在SSD中所安裝的動態隨機存取記憶體(DRAM)中。
SSD介面(208)將PBA處理之結果返回至區塊裝置驅動程式(206)。驅動程式(206)將LBA轉換至區塊位址並將資料返回至檔案系統(204),其於是回應於由資料庫(202)所發出的系統呼叫。
圖2B繪示物件為基的儲存裝置中之檔案操作的方塊圖。
於所示的實施例中,資料庫(202)包含如圖2A中之相同的面朝外介面。亦即,第三方應用程式發送讀取、寫入、刪除等等,以如利用傳統區塊為基的系統之相同方式。然而,在圖2B中,區塊檔案系統(204)及區塊裝置驅動程式(206)被省略,且檔案操作係直接地使用物件裝置驅動程式(210)來執行。以此方式,圖2B中之改良的物件為基的系統可完全地取代圖2A中之區塊為基的系統而無任何對於其存取資料庫(202)之應用程式的改變。
然而,在圖2B中,檔案操作之轉譯係從資料庫特定的命令至產生/讀取/寫入/刪除物件命令(230)。這些命令係操作在物件階而非如圖2A中之區塊階。
命令(230)被傳輸至物件裝置驅動程式(210),其將資料庫物件命令轉譯為SSD物件命令(232)。於一實施例中,這些命令可實質上類似於如其兩者操作在物件階上。驅動程式(210)發送SSD命令(232)至SSD介面(212),其在基本SSD裝置上履行物件階操作。
圖3係繪示依據本揭露之一些實施例的物件儲存裝置(OSD)之架構的方塊圖。
在所繪示的裝置中,資料被儲存在一或更多通道或晶粒(306A、306B)上。雖然繪示了兩個通道,但實際上可實施更多或更少。各通道包括一組平面(例如,304A、304B)且各平面(例如,304A)包括複數區塊(例如,302A-1、302A-2、302A-3...302A-N)。雖然未繪示,各區塊包括一組頁面,其代表裝置中之可讀取及可寫入資料的最小單元。反之,區塊是裝置中之可抹除資料的最小單元。
在傳統SSD中,被寫入至裝置之一物件(308)可被分離(使用檔案系統區塊)並儲存在遍及儲存空間之各個頁面上。實際上,這些檔案系統區塊與其他無相關物件在頁面上交錯。因此,單一區塊(例如,302A-1)可包括用於多數物件之資料。當傳統系統抹除或更新來自裝置或在裝置上之物件時,其無法簡單地抹除與該已抹除物件關聯的區塊。反而,該裝置將含有物件資料之頁面標記為無效(例如,在頁面之帶外區中)。在稍後時刻,裝置執行垃圾收集(GC)常式,其識別無效頁面並將其含有無效頁面之區塊上的其他頁面移至新區塊。GC程序接著抹除該區塊,確保其未抹除資料不會被不慎地抹除。最後,LBA至PBA位址在GC程序完成後被更新。
相反於此操作,所繪示的裝置將物件資料儲存在相連區塊上。例如,物件(308)被分割並儲存橫跨相連群組(310)中之區塊(亦即,區塊302A-1、302A-2、302B-2、302C-2、及302D-2)。區塊之特定配置及數目不限制。以此方式,各區塊係與獨特物件關聯。因此,假如應用程式修改或抹除區塊,則不需要GC收集程序。亦即,因為各區塊係相應於第一物件,所以該區塊可被立刻地抹除或修改,因為沒有不相關區塊之資料損失的風險。
如所繪示,該裝置額外地包括儲存在DRAM(312)內之物件至區塊映射(314)。在傳統系統中,DRAM(312)將替代地包括LBA至PBA映射。替代地,所繪示的裝置係以物件至區塊映射(314)取代(或增補)LBA至PBA映射,該物件至區塊映射(314)係作用以在讀取、寫入、抹除、及其他操作期間將物件識別符轉譯至實體區塊位址。於一實施例中,映射(314)儲存各實體區塊及物件識別符之映射(包括未使用的實體區塊位址)。於一替代實施例中,映射(314)可僅包括所使用的PBA至物件之映射。於此實施例中,區塊之OOB區可儲存對於下一相連區塊之指針。
當作一範例,圖3中所繪示的頁面可被調整大小在約2 KB(具有每頁面之額外OOB儲存空間)。既定區塊可包括64頁面,針對約131 KB之總大小。物件(308)可包含780 KB物件。於此範例中,系統判定其需要六個區塊(總共786 KB在可用的儲存空間中)來容納該物件。另一方面,在最糟情況情境下,傳統系統可能將物件(308)分割為390個不同區塊(例如,在2048個總區塊之中),以各區塊上之單一頁面儲存該物件之2 KB部分。
圖4A繪示依據本揭露之一些實施例的OSD中之寫入操作。於一實施例中,圖4A中之方法係由OSD之控制器所履行。於一實施例中,OSD之控制器包括特定應用積體電路(ASIC)或其他類型的處理元件。
在步驟401,該方法接收寫入命令。
於一實施例中,寫入命令包括待寫入資料以及物件識別符。物件識別符之特定形式及特定內容不欲為限制性的。通常,物件識別符可包含任何獨特識別符(例如,獨特文數碼)。
在步驟403,該方法識別可用區塊。
於一實施例中,該方法可分析針對各命令之SSD的區塊。然而,為了增進性能,該方法可使用DRAM中所儲存之所有區塊的映射。於此實施例中,該方法係識別記憶體中哪些區塊目前未指派。於一實施例中,該方法依序地重複遍及該等區塊以找出可用範圍的區塊。於一實施例中,該方法根據區塊大小及待寫入資料之大小以判定所需的區塊之數目。
在步驟405,該方法將待寫入資料寫入至步驟407中所識別的區塊。於一替代實施例中,該方法可監督寫入程序以判定是否有任何寫入失敗。假如有寫入失敗,則該方法可再次嘗試對於錯誤產生區塊之寫入。另一方面,該方法可選擇新的、空的區塊並嘗試寫入資料至該新的、空的區塊。
在步驟407,該方法更新物件至PBA映射。
在完成寫入之後,該方法存取DRAM中之映射並記錄具有新區塊位址之物件識別符以供稍後的擷取(討論於下)。
於一實施例中,圖4A中所繪示之方法可額外地被用以處置附加命令。於一實施例中,一附加命令包括物件識別符及待寫入資料。因為針對既定物件之資料係以區塊為基來儲存,所以該方法將新資料寫入至額外區塊並更新物件至PBA映射。因此,無須在附加操作期間重新配置資料,因為各區塊係與一物件獨特地關聯。
此外,於另一實施例中,圖4A中所繪示的方法可被用以處置更新操作。於此實施例中,該方法使用PBA以識別與步驟403中之待更新資料關聯的單一區塊(或區塊之群組)。於一實施例中,物件至PBA映射儲存映射之依序列表。因此,區段1、2、及3可被映射至區塊4、5、及6。假如一更新影響區段2,則該方法根據映射中之區塊的排序以識別區塊5。於此範例中,該方法首先抹除區塊5並接著寫入已更新資料,在步驟405。於一替代實施例中,該方法可將已更新物件之所有區塊讀入記憶體並抹除與該物件關聯的所有區塊。該方法可接著重建記憶體中之物件並使用在步驟401中所接收的新資料以更新經重建物件。在重建之後,該方法可接著進行步驟403至407,如有一新的寫入命令被接收。
圖4B繪示依據本揭露之一些實施例的OSD中之讀取操作。於一實施例中,圖4B中之方法係由OSD之控制器所履行。
在步驟411,該方法接收讀取命令。
於一實施例中,讀取命令包括物件識別符。通常,物件識別符可包含任何獨特識別符(例如,獨特文數碼)。讀取命令可經由物件裝置驅動程式而被接收,該物件裝置驅動程式係根據主機應用程式讀取以產生讀取命令。
在步驟413,該方法識別與物件識別符關聯的區塊。如以上所討論,該方法存取物件至PBA映射以識別與物件識別符關聯的一或更多區塊。
在步驟415,該方法從該等區塊之各者讀取資料。
在步驟417,該方法返回從該等區塊之各者所讀取的資料。
於一實施例中,該方法可進一步重新配置從該等區塊之各者所讀取的資料(根據物件至PBA映射)以重建該資料,假如該等區塊被失序地讀出的話。
圖4C繪示依據本揭露之一些實施例的OSD中之抹除操作。於一實施例中,圖4C中之方法係由OSD之控制器所履行。
在步驟421,該方法接收抹除命令。
於一實施例中,抹除命令包括物件識別符。通常,物件識別符可包含任何獨特識別符(例如,獨特文數碼)。抹除命令可經由物件裝置驅動程式而被接收,該物件裝置驅動程式係根據主機應用程式抹除(例如,經由壓縮所觸發的抹除)以產生抹除命令。
在步驟423,該方法識別與步驟421中所接收之物件識別符關聯的區塊。此步驟可如連結圖4B之步驟413所述般履行,該揭露被併入於此以供參考其完整性。
在步驟425,該方法抹除步驟423中所識別的區塊。相反於現存的儲存裝置,步驟425中之方法係抹除整個區塊,因為各區塊僅被確保包括針對既定區塊之資料。
在步驟427,該方法更新物件至PBA映射。
如上所述,物件至PBA映射被儲存在DRAM中,而在步驟427,該方法可移除介於步驟421中所接收的物件識別符與任何區塊之間的映射,因此釋放那些區塊以供未來的寫入/修改/附加。
圖5係繪示一種依據本揭露之一些實施例以履行LSM樹資料庫之單一階段壓縮的方法之流程圖。
在步驟501,該方法接收插入命令。
於一實施例中,插入命令包括一密鑰及一值。於一實施例中,該密鑰可包含文數密鑰或類似值。如所繪示,步驟501(及步驟503-513)被執行在本地記憶體(例如,RAM)之背景中。
在步驟503,該方法判定該密鑰/值之插入是否將導致記憶體溢流。
於一實施例中,步驟503-513均發生在記憶體中。於一實施例中,該方法係指定本地記憶體(例如,RAM)之一部分給密鑰值對及密鑰範圍之第一層的儲存。於一實施例中,此本地記憶體分割屬於固定大小。此分割被稱為記憶體緩衝器。
在步驟503,該方法係計算記憶體緩衝器中所留下的閒置空間。假如該記憶體緩衝器包括足夠的閒置空間以儲存步驟501中所接收的密鑰/值,則該方法便將密鑰/值寫入至記憶體緩衝器,在步驟505。在選擇性步驟507,該方法亦可在插入該密鑰之後結合重疊的密鑰範圍。例如,假如該記憶體緩衝器包括密鑰範圍1-3、5-7及10-15且該插入命令包括密鑰4,則該方法可將密鑰範圍1-3及5-7結合至單一範圍1-7。於一些實施例中,將密鑰插入記憶體緩衝器係以一種維持密鑰之排序的方式來完成。於一替代實施例中,該方法係於堆疊模式下插入密鑰,其不會維持密鑰排序。
假如該方法可將密鑰/值插入記憶體緩衝器而不會使該緩衝器溢流,則該方法便在步驟507之後結束。
替代地,該方法可判定密鑰/值之插入將造成記憶體緩衝器溢流(步驟503)。於此情境下,該方法必須將記憶體緩衝器之一部分移動至持久儲存。
在檢測到潛在的溢流時,該方法在步驟509選擇一密鑰範圍。於一實施例中,密鑰範圍指的是其被依序地排序而無遺漏密鑰的一或更多密鑰。因此,密鑰1-3或123-200形成密鑰之範圍。
在步驟511,該方法產生密鑰-範圍物件。
於一實施例中,密鑰-範圍物件包含一組由密鑰所排序的依序密鑰-範圍對。物件本身係由單一物件識別符所識別,該單一物件識別符可包含文數識別符。於一實施例中,密鑰範圍係由單一檔案所表示,而物件識別符可包含密鑰範圍物件之檔名。
在步驟513,該方法發送具有密鑰範圍物件之寫入命令。
於一實施例中,寫入命令包含用以寫入資料至儲存裝置之任何適當的命令。於所示的實施例中,寫入命令係相應於由物件儲存裝置之驅動程式所支援的寫入物件命令,如以上所討論。寫入命令通常包括密鑰範圍物件之物件識別符及內容。
於所示的實施例中,步驟501-503係使用記憶體中緩衝器來履行。因此,該等操作之各者可使用記憶體映射的讀取/寫入/抹除命令來履行。然而,步驟515至527係使用物件儲存裝置之應用程式編程介面(API)來執行。
在步驟515,該方法將該物件寫入至LSM樹之第0階。
於所示的實施例中,該物件係相應於與物件識別符關聯的密鑰-範圍。於一實施例中,將物件寫入至第0階包括兩個程序。首先,實施該方法之LSM資料庫必須使用由LSM資料庫所組織的階來邏輯地處理該寫入。此外,OSD之控制器亦須發送寫入以確保該物件被實際地寫入至基本儲存媒體。
在步驟517,該方法判定寫入至第0階是否將導致在該階之溢流。
類似於步驟503,OSD上之第0階可邏輯地被指派一預定的儲存容量。在步驟503,該方法計算第0階內之剩餘的閒置空間並判定是否有足夠的閒置空間存在以容納步驟511中所產生之物件的寫入。
假如在第0階中有足夠的空間可用,則該方法便寫入該物件並結束。雖然寫入(步驟515)係繪示為發生在分析閒置空間(步驟517)之前,但這些步驟之順序可被反轉(如步驟503、505、及509中所繪示)。
假如該方法判定其寫入該物件至第0階將造成該階之溢流,則該方法繼續以起始第二壓縮程序。
在步驟519,該方法選擇第0階密鑰範圍。
於所示的實施例中,選擇第0階密鑰範圍可包含如步驟511中所述之類似操作。明確地,該方法係選擇第0階中所儲存的一或更多密鑰-範圍。於一實施例中,該方法根據用以寫入來自步驟515之物件所需的儲存空間以選擇密鑰範圍之數目。於一些實施例中,選定的範圍可被任意地選擇。於其他實施例中,該方法可記錄存取之頻率並選擇較不頻繁存取的密鑰範圍。替代地,該方法可將第0階視為堆疊或佇列,並計畫性地選擇個別在該結構之頂部或末端上的項目。
在步驟521,該方法識別第1階中之重疊密鑰範圍。
如先前所述,各階可包括各個範圍中之複製密鑰。當作一範例,第0階可包括密鑰範圍100-200,而第1階可包括密鑰範圍130-180及190-240。在步驟521,該方法係判定介於第0階中的選定物件與第1階中的物件之間的重疊之程度。因此,在先前範例中,範圍100-200包括範圍130-180且部分地包括範圍190-240(亦即,範圍181-189)。此外,該選定物件「橋接」介於範圍130-180與190-240的末端之間的間隙。因此,於壓縮期間,範圍130-180及190-240係與範圍100-200結合以形成新的第1階密鑰範圍。
在步驟523,該方法根據已識別範圍來產生新的第1階密鑰範圍物件。
於一實施例中,新的第1階密鑰範圍物件包含由物件識別符所表示的檔案。該檔案之內容包含在已識別的第0階及第1階範圍中之密鑰/值對。於一實施例中,新的第1階密鑰範圍物件之產生可由LSM資料庫所履行。
在步驟525,該方法寫入新的第1階密鑰範圍物件。參考圖4B有關由OSD裝置所履行的內部操作。步驟525之詳細操作係描述於圖6A中。
圖6係繪示一種依據本揭露之一些實施例以寫入密鑰範圍物件至物件儲存裝置的方法之流程圖。
在步驟601,該方法接收密鑰範圍物件寫入請求。於一實施例中,LSM樹資料庫藉由將系統呼叫發送至由OSD驅動程式所提供的寫入命令以起始步驟525(及因此步驟601)。
在步驟603,該方法提取密鑰範圍子物件。
於一實施例中,密鑰範圍子物件指的是待壓縮的第0階及第1階(及潛在地額外階)密鑰範圍。於一實施例中,此子物件包括待壓縮物件之物件識別符。
在步驟605,該方法識別各物件識別符之PBA。
如先前所討論,DRAM中之映射係將物件識別符映射至與該等物件識別符關聯的實體區塊位址。因此,在步驟605,該方法使用子物件識別符以產生實體區塊位址之列表。
在步驟607,該方法發送抹除命令至PBA列表中所包括的各區塊。
如所繪示,該方法不履行實體區塊中之資料的任何複製,因為各實體區塊被獨特地指派給在既定階之密鑰-範圍。因此,在步驟607,該方法發送針對各PBA之單一抹除請求。於一實施例中,該抹除請求將整個區塊標記為無效。
在步驟609,該方法接著將步驟601中所接收的資料寫入至儲存。
因此,在步驟601-609之執行後,該方法將所有先前壓縮的密鑰範圍物件無效化並寫入新的密鑰範圍物件。此程序不履行頁面階資料的任何複製至新區塊,而是將整個區塊無效化。因此,於任何後續的垃圾收集處理期間,不需要任何複製,因為整個區塊已被標記為無效。此複製之移除提升了其中OSD所可以垃圾收集無效頁面(由於複製之移除)的速度。
回到圖5,於一些實施例中,該方法無法在步驟515中寫入第0階物件,但是可延緩寫入直到步驟517-525被執行。於此實施例中,再執行步驟525之後,該方法可將第0階物件寫入至第0階儲存,在儲存空間係使用步驟519-525而被釋放後。於一實施例中,第0階物件之寫入係使用圖4A中所述之方法而被履行,其揭露被併入以參考其完整性。
圖7係繪示一種依據本揭露之一些實施例以存取物件儲存裝置之裝置的硬體圖。
客戶裝置可包括比圖7中所示之那些多更多或更少的組件。然而,所示之組件係足以揭露一用以實施本揭露之說明性實施例。
如圖7中所示,客戶裝置包括經由匯流排(714)而與大量記憶體(704)通訊之處理單元(CPU)(702)。客戶裝置亦包括一或更多網路介面(716)、音頻介面(718)、顯示(720)、鍵板(722)、照明器(724)、輸入/輸出介面(726)、及相機或其他光學、熱或電磁感測器(728)。客戶裝置可包括一相機/感測器(728)、或複數相機/感測器(728),如由那些熟悉本技術者所瞭解者。
客戶裝置可選擇性地與基地站(未顯示)通訊、或直接地與另一計算裝置通訊。網路介面(716)包括用以將客戶裝置耦合至一或更多網路之電路,且被建構以配合一或更多通訊協定及技術來使用。網路介面(716)有時係已知為收發器、收發裝置、或網路介面卡(NIC)。
音頻介面(718)被配置以產生並接收音頻信號,諸如人類語音的聲音。例如,音頻介面(718)可被耦合至揚聲器及麥克風(未顯示)以致能與其他者之電通信並產生針對某動作之音頻確認。顯示(720)可為液晶顯示(LCD)、氣體電漿、發光二極體(LED)、或配合計算裝置使用之任何其他類型的顯示。顯示(720)亦可包括接觸敏感螢幕,其被配置以接收來自物件(諸如尖筆)之輸入或來自人類手之手指。
鍵板(722)可包含任何輸入裝置,其被配置以接收來自使用者之輸入。例如,鍵板(722)可包括按鈕、數字撥號盤、或鍵盤。鍵板(722)亦可包括命令按鈕,其係與選擇及傳送影像關聯。照明器(724)可提供狀態指示並提供光線。照明器(724)可保持為作用中,針對特定時間週期或回應於事件。例如,當照明器(724)為作用中時,其可提供鍵板(722)上之按鈕的背光且在當客戶裝置被供電時保持為開。同時,照明器(724)可以多種型態提供這些按鈕背光,當履行特定動作時,諸如撥打另一客戶裝置。照明器(724)亦可造成其定位在客戶裝置之透明或半透明殼體內的光源回應於動作而照明。
客戶裝置亦包含輸入/輸出介面(726),用以與外部裝置通訊,諸如UPS或配電盤裝置、或圖7中未顯示之其他輸入或裝置。輸入/輸出介面(726)可利用一或更多通訊技術,諸如USB、紅外線、藍牙™,等等。
大量記憶體(704)包括RAM(706)、ROM(710)、及其他儲存機構。大量記憶體(704)闡明用於儲存資訊(諸如電腦可讀取指令、資料結構、程式模組或其他資料)之電腦儲存媒體的另一範例。大量記憶體(704)係儲存用於控制客戶裝置之低階操作的基本輸入/輸出系統(“BIOS”)(712)。大量記憶體亦可儲存用於控制客戶裝置之操作的作業系統。將理解:此組件可包括通用作業系統,諸如UNIX或LINUX™之版本、或特殊化客戶通訊作業系統(諸如Windows Client™、或Symbian®作業系統)。 作業系統可包括Java虛擬機器模組或與Java虛擬機器模組介接,該模組係經由Java應用程式以致能硬體組件及作業系統操作之控制。
記憶體(704)進一步包括OSD裝置驅動程式(708)。如以上所討論,OSD裝置驅動程式(708)發送讀取、寫入、及其他命令至儲存裝置(未繪示)。於一實施例中,OSD裝置驅動程式(708)發送此等命令至OSD(730)。於一實施例中,OSD(730)可包含固態驅動或類似裝置,其實施一或更多NAND快閃晶片,諸如其被併入以供參考之圖3的描述中所述之晶片。通常,OSD(730)包含任何NAND快閃為基的裝置,其係實施物件為基的存取,諸如圖3及其他圖形中所繪示者。
為了本揭露之目的,模組為軟體、硬體、或韌體(或其組合)系統、程序或功能、或其組件,其係履行文中所述之程序、特徵、及/或功能(有或沒有人類互動或擴增)。模組可包括子模組。模組之軟體組件可被儲存在電腦可讀取媒體上以供藉由處理器之執行。模組可被集成至一或更多伺服器,或者由一或更多伺服器所載入並執行。一或更多模組可被群集成引擎或應用程式。
那些熟悉此技藝人士將辨識其本揭露之方法及系統可被實施以許多方式,且如此一來不受前述範例實施例及範例所限制。換言之,由單一或多數組件所履行的功能性元件(於硬體與軟體或韌體之各種組合中)、及個別功能,可被分佈於軟體應用程式之間,在客戶階或伺服器階之任一者或兩者。在此方面,文中所述之不同實施例的任何數目的特徵可被結合為單一或多數實施例,而具有少於(或多於)文中所述之所有特徵的替代實施例是可能的。
功能性亦可(完整地或部分地)分佈於多數組件之間,以現在已知的或將變為已知的方式。因此,在達成文中所述之功能、特徵、介面及偏好上有無數軟體/硬體/韌體組合是可能的。此外,本揭露之範圍涵蓋其用以執行所述特徵及功能和介面之傳統上已知的方式、以及其可對文中所述之硬體或軟體韌體組件所做出的那些變化或修改,如現在或未來將由那些熟悉此技藝人士所瞭解者。
再者,如本揭露中之流程圖所提出及描述的方法之實施例係藉由範例來提供,以提供本技術之更完整的瞭解。所揭露的方法不限於文中所提出之操作及邏輯流程。已考量替代實施例,其中已改變了各種操作之順序且其中如其為更大操作之部分所述的子操作係獨立地履行。
雖然已為了本揭露之目的而描述了各個實施例,但此等實施例不應被視為將本揭露之教導限制於那些實施例。可對於上述元件及操作做出各種改變及修飾以獲得其仍保持於本揭露中所描述之系統及程序的範圍內之結果。
102‧‧‧第0階
102A‧‧‧容量
104‧‧‧第1階
104B, 104C, 104D, 104E‧‧‧範圍
106‧‧‧項目C
202‧‧‧LSM樹資料庫
204‧‧‧檔案系統
206‧‧‧驅動程式
208‧‧‧SSD介面
210‧‧‧物件裝置驅動程式
212‧‧‧SSD介面
220‧‧‧命令
222‧‧‧寫入/讀取/抹除命令
224‧‧‧LBA為基的命令
302A-1, 302A-2, 302A-3…302A-N‧‧‧區塊
304A, 304B‧‧‧平面
306A, 306B‧‧‧通道
308‧‧‧物件
310‧‧‧相連群組
312‧‧‧DRAM
314‧‧‧物件至區塊映射
702‧‧‧處理單元(CPU)
704‧‧‧大量記憶體
706‧‧‧RAM
708‧‧‧OSD裝置驅動程式
710‧‧‧ROM
712‧‧‧基本輸入/輸出系統(“BIOS”)
714‧‧‧匯流排
716‧‧‧網路介面
718‧‧‧音頻介面
720‧‧‧顯示
722‧‧‧鍵板
724‧‧‧照明器
726‧‧‧輸入/輸出介面
728‧‧‧相機/感測器
730‧‧‧OSD
本揭露之前述及其他目的、特徵、及優點將從實施例之以下描述(如附圖中所繪示者)而清楚明白,其中參考字符係指稱涵蓋各個視圖之相同部分。該些圖形不一定依比例,反之係將重點放在本揭露之闡明原理上。
圖1繪示二階LSM樹之操作。
圖2A繪示依據本揭露之一些實施例的區塊為基的儲存裝置中之檔案操作的方塊圖。
圖2B繪示依據本揭露之一些實施例的物件為基的儲存裝置中之檔案操作的方塊圖。
圖3係繪示依據本揭露之一些實施例的物件儲存裝置(OSD)之架構的方塊圖。
圖4A繪示依據本揭露之一些實施例的OSD中之寫入操作。
圖4B繪示依據本揭露之一些實施例的OSD中之讀取操作。
圖4C繪示依據本揭露之一些實施例的OSD中之抹除操作。
圖5係繪示一種依據本揭露之一些實施例以履行LSM樹資料庫之單一階段壓縮的方法之流程圖。
圖6係繪示一種依據本揭露之一些實施例以寫入密鑰範圍物件至物件儲存裝置的方法之流程圖。
圖7係繪示一種依據本揭露之一些實施例以存取物件儲存裝置之裝置的硬體圖。
Claims (20)
- 一種方法,包含: 由一處理器接收待寫入至日誌結構合併(LSM)樹之資料,該資料包括一密鑰及一值; 由該處理器判定其一記憶體中緩衝器缺乏用以儲存該待寫入資料之容量; 由該處理器壓縮一物件儲存裝置(OSD)中所儲存之該LSM樹的至少一階中所儲存的密鑰-範圍,該等密鑰-範圍之各者係與一個別物件識別符關聯; 由該處理器產生一密鑰範圍物件,該密鑰範圍物件包括與該等密鑰-範圍之一子集關聯的物件識別符; 由該OSD抹除相應於該密鑰範圍物件中所包括的該等物件識別符之各者的實體區塊;及 由該OSD將該密鑰範圍物件寫入至該OSD之至少一實體區塊。
- 一種方法,包含: 在一物件儲存裝置(OSD)上接收一寫入請求,該寫入請求包括複數物件識別符,其包含至少一新物件識別符及至少一現存物件識別符; 由該OSD抹除與該現存物件識別符關聯的資料之區塊;及 由該OSD寫入與該現存物件識別符關聯的資料及與該新物件識別符關聯的資料。
- 如申請專利範圍第2項之方法,該抹除與該現存物件識別符關聯的資料之區塊包含無效化資料之該等區塊中的所有頁面。
- 如申請專利範圍第3項之方法,進一步包含由該OSD觸發一垃圾收集常式,該垃圾收集常式忽略資料之該等已抹除區塊上的資料之複製。
- 如申請專利範圍第2項之方法,該接收一寫入請求包含接收由一日誌結構合併樹資料庫壓縮操作所產生之一寫入請求。
- 如申請專利範圍第2項之方法,進一步包含由該OSD儲存一物件至PBA(實體區塊位址)映射。
- 如申請專利範圍第6項之方法,進一步包含在抹除與該現存物件識別符關聯的資料之區塊以前,使用該至少一現存物件識別符以由該OSD識別該物件至PBA映射中之複數區塊。
- 如申請專利範圍第6項之方法,該寫入與該現存物件識別符關聯的資料及與該新物件識別符關聯的資料進一步包含在寫入該資料後更新該物件至PBA映射。
- 如申請專利範圍第2項之方法,該接收一寫入請求包含接收一密鑰範圍物件,該密鑰範圍物件包括複數密鑰及與該等複數密鑰關聯的複數值。
- 如申請專利範圍第2項之方法,該接收一寫入請求包含經由一物件裝置驅動程式以接收一寫入請求。
- 如申請專利範圍第2項之方法,該寫入與該現存物件識別符關聯的資料及與該新物件識別符關聯的資料包含根據該OSD之區塊大小以分割該資料並將該已分割資料寫入至複數區塊,該等複數區塊僅儲存回應於該寫入請求而寫入的資料。
- 一種設備,包含: 一儲存媒體,該儲存媒體將資料儲存在複數區塊中,各區塊具有複數頁面; 一物件介面,其組態成從一物件裝置驅動程式接收命令;及 一控制器,其係通訊地耦合至該儲存媒體及該物件介面並組態成經由該物件介面以接收命令,該控制器進一步包括已儲存程式,其包含: 由該控制器所執行之邏輯,用以接收一寫入請求,該寫入請求包括複數物件識別符,其包含至少一新物件識別符及至少一現存物件識別符; 由該控制器所執行之邏輯,用以抹除與該現存物件識別符關聯的資料之區塊;及 由該控制器所執行之邏輯,用以寫入與該現存物件識別符關聯的資料及與該新物件識別符關聯的資料。
- 如申請專利範圍第12項之設備,用以抹除與該現存物件識別符關聯的資料之區塊的該邏輯包含用以無效化資料之該等區塊中的所有頁面之邏輯。
- 如申請專利範圍第13項之設備,該邏輯進一步包含由該控制器所執行之邏輯,用以觸發一垃圾收集常式,該垃圾收集常式忽略資料之該等已抹除區塊上的資料之複製。
- 如申請專利範圍第12項之設備,用以接收一寫入請求之該邏輯包含由該控制器所執行之邏輯,用以接收由一日誌結構合併樹資料庫壓縮操作所產生之一寫入請求。
- 如申請專利範圍第12項之設備,進一步包含一動態隨機存取記憶體,用以儲存一物件至PBA(實體區塊位址)映射。
- 如申請專利範圍第16項之設備,該邏輯進一步包含由該控制器所執行之邏輯,用以在抹除與該現存物件識別符關聯的資料之區塊以前,使用該至少一現存物件識別符以識別該物件至PBA映射中之複數區塊。
- 如申請專利範圍第16項之設備,用以寫入與該現存物件識別符關聯的資料及與該新物件識別符關聯的資料之該邏輯進一步包含由該控制器所執行之邏輯,用以在寫入該資料後更新該物件至PBA映射。
- 如申請專利範圍第12項之設備,用以接收一寫入請求之該邏輯包含由該控制器所執行之邏輯,用以接收一密鑰範圍物件,該密鑰範圍物件包括複數密鑰及與該等複數密鑰關聯的複數值。
- 如申請專利範圍第12項之設備,用以寫入與該現存物件識別符關聯的資料及與該新物件識別符關聯的資料之該邏輯包含由該控制器所執行之邏輯,用以根據該儲存媒體之區塊大小以分割該資料並將該已分割資料寫入至複數區塊,該等複數區塊僅儲存回應於該寫入請求而寫入的資料。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US15/963,386 US10445022B1 (en) | 2018-04-26 | 2018-04-26 | Optimization of log-structured merge (LSM) tree-based databases using object solid state drive (SSD) devices |
US15/963,386 | 2018-04-26 |
Publications (1)
Publication Number | Publication Date |
---|---|
TW201945961A true TW201945961A (zh) | 2019-12-01 |
Family
ID=68165241
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
TW108112871A TW201945961A (zh) | 2018-04-26 | 2019-04-12 | 使用物件固態硬碟(ssd)裝置之日誌結構合併(lsm)樹為基的資料庫之最佳化 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10445022B1 (zh) |
CN (1) | CN110413592B (zh) |
TW (1) | TW201945961A (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112015791B (zh) * | 2019-05-30 | 2024-06-07 | 阿里云计算有限公司 | 数据处理方法、装置、电子设备及计算机存储介质 |
CN112783417A (zh) * | 2019-11-01 | 2021-05-11 | 华为技术有限公司 | 数据缩减的方法、装置、计算设备和存储介质 |
KR20210077467A (ko) * | 2019-12-17 | 2021-06-25 | 에스케이하이닉스 주식회사 | 메모리 시스템 및 그것을 포함하는 데이터 처리 시스템 |
CN113094292B (zh) | 2020-01-09 | 2022-12-02 | 上海宝存信息科技有限公司 | 数据存储装置以及非挥发式存储器控制方法 |
US11537569B2 (en) * | 2020-09-01 | 2022-12-27 | Salesforce.Com, Inc. | Merges using key range data structures |
US11636041B2 (en) | 2020-10-12 | 2023-04-25 | Seagate Technology Llc | Object storage data storage systems and methods |
CN112612415B (zh) * | 2020-12-22 | 2022-08-30 | 新华三大数据技术有限公司 | 一种数据处理方法、装置、电子设备及存储介质 |
CN113094372A (zh) | 2021-04-16 | 2021-07-09 | 三星(中国)半导体有限公司 | 数据存取方法、数据存取控制装置及数据存取系统 |
US20230145784A1 (en) * | 2021-11-08 | 2023-05-11 | Netapp, Inc. | Combined garbage collection and data integrity checking for a distributed key-value store |
US20240126738A1 (en) * | 2022-10-18 | 2024-04-18 | Cockroach Labs, Inc. | Systems and methods for range keys to enable efficient bulk writes in log-structured merge tree storage |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6895486B2 (en) * | 2002-08-29 | 2005-05-17 | Micron Technology, Inc. | Linear object management for a range of flash memory |
US7257690B1 (en) | 2004-10-15 | 2007-08-14 | Veritas Operating Corporation | Log-structured temporal shadow store |
US8527544B1 (en) | 2011-08-11 | 2013-09-03 | Pure Storage Inc. | Garbage collection in a storage system |
US9026717B2 (en) * | 2011-09-30 | 2015-05-05 | SanDisk Technologies, Inc. | Apparatus, system, and method for a persistent object store |
US8924664B2 (en) * | 2012-12-13 | 2014-12-30 | Infinidat Ltd. | Logical object deletion |
US9646067B2 (en) | 2013-05-14 | 2017-05-09 | Actifio, Inc. | Garbage collection predictions |
US9519591B2 (en) | 2013-06-22 | 2016-12-13 | Microsoft Technology Licensing, Llc | Latch-free, log-structured storage for multiple access methods |
US9448924B2 (en) | 2014-01-08 | 2016-09-20 | Netapp, Inc. | Flash optimized, log-structured layer of a file system |
US9652381B2 (en) | 2014-06-19 | 2017-05-16 | Sandisk Technologies Llc | Sub-block garbage collection |
US10613933B2 (en) * | 2014-12-09 | 2020-04-07 | Hitachi Vantara Llc | System and method for providing thin-provisioned block storage with multiple data protection classes |
US9940234B2 (en) | 2015-03-26 | 2018-04-10 | Pure Storage, Inc. | Aggressive data deduplication using lazy garbage collection |
US9959207B2 (en) | 2015-06-25 | 2018-05-01 | Vmware, Inc. | Log-structured B-tree for handling random writes |
US9891833B2 (en) * | 2015-10-22 | 2018-02-13 | HoneycombData Inc. | Eliminating garbage collection in nand flash devices |
US9785366B1 (en) | 2015-12-30 | 2017-10-10 | EMC IP Holding Company LLC | Unbuffered log-structured storage |
US10628305B2 (en) | 2016-05-13 | 2020-04-21 | International Business Machines Corporation | Determining a data layout in a log structured storage system |
US10592348B2 (en) | 2016-06-17 | 2020-03-17 | Acronis International Gmbh | System and method for data deduplication using log-structured merge trees |
US11080155B2 (en) * | 2016-07-24 | 2021-08-03 | Pure Storage, Inc. | Identifying error types among flash memory |
US10795871B2 (en) * | 2016-09-26 | 2020-10-06 | Vmware, Inc. | Key-value stores implemented using fragmented log-structured merge trees |
US10303363B2 (en) | 2016-10-19 | 2019-05-28 | Acronis International Gmbh | System and method for data storage using log-structured merge trees |
US10706106B2 (en) * | 2017-02-09 | 2020-07-07 | Micron Technology, Inc. | Merge tree modifications for maintenance operations |
US11079942B2 (en) * | 2017-07-07 | 2021-08-03 | Sap Se | Shared filesystem for distributed data storage system |
US10468077B2 (en) * | 2018-02-07 | 2019-11-05 | Intel Corporation | Adaptive object buffering and meta-data indexing using persistent memory to improve flash memory durability in tiered storage |
-
2018
- 2018-04-26 US US15/963,386 patent/US10445022B1/en active Active
-
2019
- 2019-04-12 TW TW108112871A patent/TW201945961A/zh unknown
- 2019-04-25 CN CN201910339317.0A patent/CN110413592B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
US20190332329A1 (en) | 2019-10-31 |
CN110413592B (zh) | 2023-01-17 |
CN110413592A (zh) | 2019-11-05 |
US10445022B1 (en) | 2019-10-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TW201945961A (zh) | 使用物件固態硬碟(ssd)裝置之日誌結構合併(lsm)樹為基的資料庫之最佳化 | |
Yang et al. | {Don’t} stack your log on my log | |
CN106354745B (zh) | 用于提供计算机装置的接口的方法和计算机装置 | |
US8612719B2 (en) | Methods for optimizing data movement in solid state devices | |
US11782632B2 (en) | Selective erasure of data in a SSD | |
US8838875B2 (en) | Systems, methods and computer program products for operating a data processing system in which a file delete command is sent to an external storage device for invalidating data thereon | |
WO2018194772A1 (en) | Persistent memory for key-value storage | |
CN111381779B (zh) | 数据处理方法、装置、设备及存储介质 | |
KR20140042419A (ko) | 컴퓨팅 시스템 및 컴퓨팅 시스템의 데이터 관리 방법 | |
KR20140112303A (ko) | 불휘발성 메모리 장치, 전자 장치 그리고 그것을 포함하는 컴퓨팅 시스템 | |
KR101055324B1 (ko) | 강화된 호스트 인터페이스 | |
CN115543224B (zh) | 基于zns ssd的文件系统控制方法、装置及设备 | |
CN107704466B (zh) | 数据储存系统 | |
JP2018181202A (ja) | ストレージ制御装置、ストレージ制御方法及びストレージ制御プログラム | |
US11269771B2 (en) | Storage device for improving journal replay, operating method thereof, and electronic device including the storage device | |
KR101565975B1 (ko) | 인덱스를 저장하는 플래시 메모리를 포함하는 사용자 장치 및 그것의 인덱스 액세스 방법 | |
Wu et al. | Integrating LSM trees with multichip flash translation layer for write-efficient KVSSDs | |
Lee et al. | Boosting compaction in B-tree based key-value store by exploiting parallel reads in flash ssds | |
US20220091772A1 (en) | Memory system | |
Koo et al. | A case for application-managed flash | |
TW201805800A (zh) | 資料儲存系統 | |
KR100472204B1 (ko) | 매핑 테이블 구조를 구비한 논리 볼륨 관리 시스템 및 이를 이용한 효율적인 스냅샷 방법 | |
KR20210089055A (ko) | 지우기 성능이 향상된 플래시메모리 저장 장치 및 그 방법 | |
WO2018051446A1 (ja) | オプショナルなデータ処理機能を有するストレージシステムを含んだ計算機システム、および、記憶制御方法 | |
JP2024525170A (ja) | データ圧縮方法及び装置 |