本技術涉及存儲,具體是鍵值數據庫領域,一種基于數據屬性感知的鍵值數據庫存儲系統及數據管理方法。
背景技術:
::1、lsm-tree是許多現代存儲系統中廣泛采用的數據結構,它專為管理高寫入負載而設計,在數據庫、鍵值存儲和分布式存儲中被廣泛應用。lsm-tree的每次合并操作通常涉及讀取和重寫大量數據。因此,實際寫入存儲設備的數據量可能比輸入數據要大得多,導致嚴重的i/o放大效應。2、內存表(memtable)是lsm-tree中的主要內存數據結構。它作為一個臨時寫緩沖區,在將鍵值對持久化到磁盤上作為sstable之前,有效地處理傳入的鍵值對。當系統達到預設的sstable閾值或者磁盤上的總數據量超過一定限值時,會觸發合并過程,并通過合并和重組sstable來增強讀取性能。由于合并過程涉及數據的排序和組織,需要將來自不同sstable的數據重新定位和重組。這些過程導致實際寫入的數據量大于最初插入的數據量,從而導致大量的寫放大。3、在lsm-tree中,數據只按照鍵的字典序來排序,不同更新頻率的冷數據和熱數據在sstable內部混合在一起,一小組頻繁更新的kv數據可能會重復引起部分sstable的合并操作,從而導致sstable中的冷數據不斷重復寫入新的sstable,從而產生巨大的i/o開銷。合并操作會將這些熱數據迅速分散到同級別的其他sstable中,從而污染大量的sstable使其夾雜冷數據和熱數據,這進一步放大了放大效應。在實際工作負載中,鍵值范圍往往會產生聚集,某些范圍的鍵較為密集,而另一些很稀疏。一個sstable中某一小部分過于稀疏的鍵可能會導致其在進行合并時包含過多的下層sstable從而引發很多不必要的數據重寫,從而導致大量的i/o放大。4、需要說明的是,在上述
背景技術:
:部分公開的信息僅用于加強對本技術的背景的理解,因此可以包括不構成對本領域普通技術人員已知的現有技術的信息。技術實現思路1、針對現有技術存在的問題,本發明提供了基于數據屬性感知的鍵值數據庫存儲系統和數據管理方法,通過分析數據熱度和密度等屬性,將具有不同屬性的數據分離到不同的數據分區中,從而減輕壓縮過程中重復讀寫導致的i/o放大。2、為了解決所述技術問題,本發明采用的技術方案是:基于數據屬性感知的鍵值數據庫存儲系統,包括k-means分類器、內存組件和磁盤組件,k-means分類器與寫請求相連,用于記錄并定期更新當前數據庫內部更新頻繁的熱鍵,內存組件包括冷數據區和熱數據區,冷數據區包括冷數據內存表memtable和冷數據不可變內存表immutable?memtable,熱數據區包括熱數據內存表memtable和熱數據不可變內存表immutable?memtable,磁盤組件,磁盤組件包括冷sstable和熱sstable;通過k-means分類器將寫請求中的鍵值對聚類為冷鍵值對和熱鍵值對,然后存入內存組件的相應位置。3、進一步的,通過記錄鍵的更新頻率以表示鍵值對的數據熱度,鍵的更新頻率由一個時間段內數據庫的寫訪問次數表示。4、進一步的,在磁盤組件中,對熱鍵值對增加前綴,使熱鍵值對與冷鍵值對形成不重疊的鍵值范圍,冷鍵值對與熱鍵值對被分到冷sstable和熱sstable。5、進一步的,修改鍵值數據庫的合并過程,在合并操作提取sstable中的鍵值對并形成排序好的鍵值對序列后,逐個取出鍵值對并計算每兩個相鄰鍵值對之間的二進制差值,若差值大于設定的閾值,則停止填充當前sstable,創建新的sstable。6、進一步的,設定的閾值基于工作負載特性動態調整,通過統計分析負載特征確定sstable的拆分閾值。7、進一步的,定期計算第0層sstable的平均密度,并根據統計結果計算每個級別的分割閾值,具體計算公式如下:8、,9、其中
threshold(i)代表第
i層的sstable拆分閾值,
αi代表第
i層拆分閾值的系數,
avgdensity
(l0
)代表第0層sstable的平均密度,
diff(i)表示差值分割閾值,
βi表示第
i層差值分割閾值的系數。
10、本發明還公開一種基于數據屬性感知的鍵值數據庫數據管理方法,本方法包括基于數據熱度屬性的寫入和基于數據密度屬性的合并兩部分,基于數據熱度屬性的寫入是使用一維k-means聚類算法將數據聚類到2個集群中,表示該鍵被判定為冷或熱,同時內存組件包括冷數據區和熱數據區,冷數據區包括冷數據內存表memtable和冷數據不可變內存表immutable?memtable,熱數據區包括熱數據內存表memtable和熱數據不可變內存表immutable?memtable,磁盤組件包括冷sstable和熱sstable,通過基于數據熱度屬性的寫入策略實現冷熱數據的分離存儲;基于數據密度屬性的合并是在合并操作提取sstable中的鍵值對并形成排序好的鍵值對序列后,逐個取出鍵值對并計算每兩個相鄰鍵值對之間的二進制差值,若差值大于設定的閾值,則停止填充當前sstable,創建新的sstable。11、進一步的,通過記錄鍵的更新頻率以表示鍵值對的數據熱度,鍵的更新頻率由一個時間段內數據庫的寫訪問次數表示。12、進一步的,設定的閾值基于工作負載特性動態調整,通過統計分析負載特征確定sstable的拆分閾值。13、進一步的,定期計算第0層sstable的平均密度,并根據統計結果計算每個級別的分割閾值,具體計算公式如下,14、,15、
其中threshold(i)代表第
i層的sstable拆分閾值,
αi代表第
i層拆分閾值的系數,
avgdensity
(l0
)代表第0層sstable的平均密度,
diff(i)表示差值分割閾值,
βi表示第
i層差值分割閾值的系數。
16、本發明的有益效果:針對鍵值數據的特殊屬性進行識別和處理,對不同屬性的數據進行隔離,從而減少合并過程中的無效數據重寫,大大減少鍵值數據庫的讀寫放大。通過提取工作負載特性,針對不同的工作負載自適應調整存儲分離粒度,以使我們的存儲分離架構適用于各種環境。17、以上的總體描述和下文中的描述僅是示例性和解釋性的,不用于限制本技術。當前第1頁12當前第1頁12