本公開大體上涉及數(shù)據(jù)管理領(lǐng)域,更具體地,涉及計(jì)算機(jī)實(shí)現(xiàn)的更新對象存儲(chǔ)系統(tǒng)中鍵值對的方法和對象存儲(chǔ)系統(tǒng)。
背景技術(shù):
1、通常,文件系統(tǒng)是一種計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)架構(gòu),其將數(shù)據(jù)作為文件和目錄的集合進(jìn)行管理。目錄可以使用戶將文件分組到單獨(dú)的集合中。類似地,還有另一種計(jì)算機(jī)數(shù)據(jù)存儲(chǔ)架構(gòu),稱為對象存儲(chǔ)系統(tǒng)。與將數(shù)據(jù)作為文件層次結(jié)構(gòu)進(jìn)行管理的其它存儲(chǔ)架構(gòu)(例如典型的文件系統(tǒng))相比,對象存儲(chǔ)系統(tǒng)將數(shù)據(jù)作為對象進(jìn)行管理。傳統(tǒng)的對象存儲(chǔ)系統(tǒng)支持存儲(chǔ)海量的非結(jié)構(gòu)化數(shù)據(jù),并用于各種目的,例如存儲(chǔ)不同類型的數(shù)據(jù),例如照片、視頻或文件。最初,對象存儲(chǔ)系統(tǒng)是為歸檔大對象而設(shè)計(jì)和構(gòu)建的。此類對象存儲(chǔ)系統(tǒng)提供了對大對象的高帶寬訪問。但是,這些系統(tǒng)在處理許多小型對象時(shí)面臨著技術(shù)挑戰(zhàn)。具體地,訪問每個(gè)對象的數(shù)據(jù)需要首先訪問元數(shù)據(jù)服務(wù)器以進(jìn)行映射和其它設(shè)置,然后訪問每個(gè)對象的數(shù)據(jù)的物理存儲(chǔ)。對于大對象,與完全加載完整的大對象所需的時(shí)間相比,每對象一次元數(shù)據(jù)訪問所帶來的時(shí)延幾乎可以忽略不計(jì)。對于許多小對象,元數(shù)據(jù)服務(wù)器訪問基本上可能會(huì)加倍數(shù)據(jù)訪問的時(shí)延,從而成為整個(gè)對象存儲(chǔ)系統(tǒng)的一個(gè)技術(shù)挑戰(zhàn)。因此,對象存儲(chǔ)系統(tǒng)面臨著以嚴(yán)格一致、性能優(yōu)化和高效使用物理存儲(chǔ)的方式提供數(shù)千個(gè)并發(fā)對象操作的技術(shù)問題。隨著對象被復(fù)制,為越來越多的對象副本提供元數(shù)據(jù)加重了對象存儲(chǔ)系統(tǒng)的負(fù)擔(dān),從而使技術(shù)問題更加復(fù)雜。因此,針對大對象設(shè)計(jì)和優(yōu)化的對象存儲(chǔ)系統(tǒng)并不能滿足小對象的要求。
2、目前,已經(jīng)提出了一些方法來提高對象存儲(chǔ)系統(tǒng)的性能,這些方法需要處理針對海量對象的許多并發(fā)查詢和操作。例如,提出了一種傳統(tǒng)的對象存儲(chǔ)系統(tǒng),其不依賴外部元數(shù)據(jù)庫,從而支持以更快的速度處理大量的小對象。傳統(tǒng)的對象存儲(chǔ)系統(tǒng)將元數(shù)據(jù)和數(shù)據(jù)直接存儲(chǔ)在磁盤上,以部分地提高性能和可擴(kuò)展性。提出了另一種傳統(tǒng)的對象存儲(chǔ)系統(tǒng),其處理小對象的方式是將數(shù)據(jù)存儲(chǔ)在元數(shù)據(jù)對象中,而不是將數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)對象中。因此,讀操作不需要從兩個(gè)對象(即元數(shù)據(jù)對象和數(shù)據(jù)對象)讀取數(shù)據(jù),而只需要從單個(gè)對象(即元數(shù)據(jù)對象)讀取數(shù)據(jù)。提出了支持鍵值應(yīng)用編程接口(application?programminginterface,api)的又一種對象存儲(chǔ)系統(tǒng)。鍵值api可以使對象存儲(chǔ)系統(tǒng)以簡單而高效的方式存儲(chǔ)記錄,每個(gè)記錄由鍵和值組成。對象存儲(chǔ)系統(tǒng)的鍵值api為每個(gè)鍵創(chuàng)建對象,因此對于小的值來說效率非常低,這導(dǎo)致創(chuàng)建了許多小對象。所提出的方案部分地提高了針對小對象的性能,并不能高效地解決處理大量微小的(非常小的)對象的問題。這是因?yàn)樵诖罅课⑿〉?非常小的)對象的情況下,用于維護(hù)大量微小的對象的元數(shù)據(jù)仍然很大,并且在磁盤空間和搜索性能方面效率低下。因此,存在一個(gè)技術(shù)問題,即如何在對象存儲(chǔ)系統(tǒng)中高效地存儲(chǔ)和更新大量的微小的(非常小的)對象,同時(shí)降低時(shí)延。
3、因此,根據(jù)上述討論,需要克服與提高處理大量微小的(非常小的)對象的對象存儲(chǔ)系統(tǒng)的性能的常規(guī)方法相關(guān)的上述缺點(diǎn)。
技術(shù)實(shí)現(xiàn)思路
1、本公開提供了一種計(jì)算機(jī)實(shí)現(xiàn)的更新對象存儲(chǔ)系統(tǒng)中鍵值對的方法和對象存儲(chǔ)系統(tǒng)。本公開提供了一種解決現(xiàn)有問題的方案,即如何在對象存儲(chǔ)系統(tǒng)中高效地存儲(chǔ)和更新大量的微小的(非常小的)對象,同時(shí)降低時(shí)延。本公開的目的是提供一種方案,其至少部分地克服現(xiàn)有技術(shù)中遇到的問題,并提供一種改進(jìn)的計(jì)算機(jī)實(shí)現(xiàn)的更新對象存儲(chǔ)系統(tǒng)中鍵值對的方法和改進(jìn)的對象存儲(chǔ)系統(tǒng)。
2、本公開的一個(gè)或多個(gè)目的是通過所附獨(dú)立權(quán)利要求中提供的方案實(shí)現(xiàn)的。在從屬權(quán)利要求中進(jìn)一步限定本公開的有利實(shí)現(xiàn)方式。
3、一方面,本公開提供了一種計(jì)算機(jī)實(shí)現(xiàn)的更新對象存儲(chǔ)系統(tǒng)中鍵值對的方法,其中,一個(gè)或多個(gè)對象中的每個(gè)對象包括鍵值對的范圍。該計(jì)算機(jī)實(shí)現(xiàn)的方法包括:接收鍵號(hào)和對應(yīng)值,并識(shí)別該范圍中的起始鍵小于或等于接收到的鍵號(hào)的對象子集。該計(jì)算機(jī)實(shí)現(xiàn)的方法還包括:識(shí)別該對象子集中范圍中的結(jié)束鍵等于或大于接收到的鍵號(hào)的對象;在識(shí)別的對象中對接收到的鍵號(hào)的對應(yīng)值進(jìn)行更新。
4、該計(jì)算機(jī)實(shí)現(xiàn)的方法提供了在對象存儲(chǔ)系統(tǒng)中管理、更新和存儲(chǔ)微小的(即非常小的)對象的高效方法。該計(jì)算機(jī)實(shí)現(xiàn)的方法使用鍵值對高效地更新對象。此外,該計(jì)算機(jī)實(shí)現(xiàn)的方法提供了對該范圍中的起始鍵小于或等于接收到的鍵號(hào)的對象子集的高效和準(zhǔn)確的識(shí)別,進(jìn)一步實(shí)現(xiàn)了對該范圍中的結(jié)束鍵等于或大于接收到的鍵號(hào)的對象的準(zhǔn)確和可靠的識(shí)別。通過識(shí)別對象子集,具有接收到的鍵號(hào)的對象被更準(zhǔn)確和高效地識(shí)別。
5、在一種實(shí)現(xiàn)方式中,每個(gè)對象具有與該范圍中的起始鍵對應(yīng)的名稱。
6、有利的是,通過其對應(yīng)的起始鍵來命名對象能夠更高效地在對象存儲(chǔ)系統(tǒng)中定位該對象,同時(shí)降低時(shí)延。
7、在另一種實(shí)現(xiàn)方式中,該計(jì)算機(jī)實(shí)現(xiàn)的方法還包括基于后一對象的名稱推導(dǎo)對象的范圍中的結(jié)束鍵。
8、有利的是,基于后一對象的名稱推導(dǎo)對象的范圍中的結(jié)束鍵能夠更高效、更準(zhǔn)確地從對象存儲(chǔ)系統(tǒng)中的對象子集中識(shí)別和定位對象。
9、在另一種實(shí)現(xiàn)方式中,對值進(jìn)行更新包括讀取對象并使用更新后的值重寫對象。
10、在另一種實(shí)現(xiàn)方式中,讀取對象包括:讀取與對象相關(guān)的元數(shù)據(jù)以確定對象內(nèi)的多個(gè)子范圍,識(shí)別包括接收到的鍵號(hào)的子范圍,以及讀取識(shí)別的子范圍。
11、有利的是,讀取與對象相關(guān)的元數(shù)據(jù)并識(shí)別包括接收到的鍵號(hào)的鍵的子范圍消除了對讀取整個(gè)對象的要求,這提供了讀取對象的高效方式。
12、在另一種實(shí)現(xiàn)方式中,對值進(jìn)行更新包括基于本地存儲(chǔ)的數(shù)據(jù)重建對象。
13、有利的是,基于本地存儲(chǔ)的數(shù)據(jù)重建對象提供了一種更新對象存儲(chǔ)系統(tǒng)中的對象的高效方式,同時(shí)降低時(shí)延。
14、在另一種實(shí)現(xiàn)方式中,對值進(jìn)行更新包括:如果在對象內(nèi)未找到接收到的鍵號(hào),則添加新鍵值對。
15、有利的是,如果未找到接收到的鍵號(hào),則添加新鍵值對,這能夠更高效和準(zhǔn)確地保持對象存儲(chǔ)系統(tǒng)中對象的理想大小和范圍。
16、在另一種實(shí)現(xiàn)方式中,如果接收到的鍵位于識(shí)別的對象中的鍵值對的范圍的末尾,則更新值包括:如果對象中的鍵值對的數(shù)量大于預(yù)定義閾值,則生成包括新鍵值對的新對象。
17、有利的是,如果對象中的鍵值對的數(shù)量大于預(yù)定義閾值,則生成包括新鍵值對的新對象,這能夠在對象存儲(chǔ)系統(tǒng)中保持對象的理想大小。
18、在另一種實(shí)現(xiàn)方式中,如果接收到的鍵位于識(shí)別的對象中的鍵值對的范圍內(nèi),則更新值包括:如果對象中的鍵值對的數(shù)量大于預(yù)定義閾值,則將對象劃分為兩個(gè)或更多個(gè)對象。
19、有利的是,如果對象中的鍵值對的數(shù)量大于預(yù)定義閾值,則將對象劃分為兩個(gè)或更多個(gè)對象,這使得每個(gè)對象的大小相等。
20、在另一種實(shí)現(xiàn)方式中,該計(jì)算機(jī)實(shí)現(xiàn)的方法還包括:如果對象中的鍵值對的數(shù)量小于預(yù)定義閾值,則將對象與一個(gè)或多個(gè)相鄰對象合并。
21、有利的是,如果對象中的鍵值對的數(shù)量小于預(yù)定義閾值,則將兩個(gè)或更多個(gè)對象合并為一個(gè)對象,這使得每個(gè)對象的大小相等。
22、另一方面,本公開提供了一種計(jì)算機(jī)可讀介質(zhì),該計(jì)算機(jī)可讀介質(zhì)包括指令,這些指令在由處理器執(zhí)行時(shí),使該處理器執(zhí)行所述方法。
23、在執(zhí)行所述方法之后,該處理器實(shí)現(xiàn)了所述方法的所有優(yōu)點(diǎn)和技術(shù)效果。
24、又一方面,本公開提供了一種對象存儲(chǔ)系統(tǒng),包括用于執(zhí)行所述方法的一個(gè)或多個(gè)處理器。
25、該對象存儲(chǔ)系統(tǒng)實(shí)現(xiàn)了本公開的計(jì)算機(jī)實(shí)現(xiàn)的方法的所有優(yōu)點(diǎn)和技術(shù)效果。
26、需要說明的是,本技術(shù)中描述的所有設(shè)備、元件、電路、單元和模塊可以通過軟件或硬件元件或其任何類型的組合實(shí)現(xiàn)。本技術(shù)中描述的各種實(shí)體所執(zhí)行的所有步驟以及所描述的各種實(shí)體待執(zhí)行的功能均意在指相應(yīng)實(shí)體用于執(zhí)行相應(yīng)步驟和功能。雖然在以下具體實(shí)施例的描述中,外部實(shí)體執(zhí)行的具體功能或步驟沒有在執(zhí)行具體步驟或功能的實(shí)體的具體詳述元件的描述中反映,但是技術(shù)人員應(yīng)清楚,這些方法和功能可以通過相應(yīng)的軟件或硬件元件或其任何類型的組合實(shí)現(xiàn)。應(yīng)理解,本公開的特征易于以各種組合進(jìn)行組合,而不脫離由所附權(quán)利要求書所限定的本公開的范圍。
27、本公開的附加方面、優(yōu)點(diǎn)、特征和目的從附圖和結(jié)合以下所附權(quán)利要求書解釋的說明性實(shí)現(xiàn)方式的詳細(xì)描述中變得顯而易見。