上海(hai)2020年5月13日(ri) /美通社/ -- 以(yi)鍵值對(Key-Value,簡稱KV)作為數(shu)據(ju)(ju)的(de)(de)(de)存(cun)(cun)(cun)(cun)儲(chu)方式,已經(jing)在(zai)很多場合(he)得到了成(cheng)功的(de)(de)(de)應用(yong)(yong)(yong)。KV存(cun)(cun)(cun)(cun)儲(chu)以(yi)其直觀性(xing),降低了很多應用(yong)(yong)(yong)程(cheng)序調用(yong)(yong)(yong)數(shu)據(ju)(ju)的(de)(de)(de)復雜度,可以(yi)獲得更高(gao)數(shu)據(ju)(ju)的(de)(de)(de)存(cun)(cun)(cun)(cun)取效率(lv),但也(ye)有(you)其局限性(xing)。寶存(cun)(cun)(cun)(cun)科技的(de)(de)(de)Open-Channel SSD 定義了一種通用(yong)(yong)(yong)的(de)(de)(de),高(gao)效率(lv)的(de)(de)(de)主機端直接訪問 FLASH 的(de)(de)(de)標準接口,百度基于(yu)此開發出一套高(gao)性(xing)能KV存(cun)(cun)(cun)(cun)儲(chu)引擎,有(you)效減少寫(xie)放大對設備性(xing)能的(de)(de)(de)影響。
當前KV的不足之處
目前KV的成熟應用場合有:
由于單機內(nei)存(cun)總量的(de)(de)限(xian)制,內(nei)存(cun)KV有(you)持久化到硬盤(pan)的(de)(de)需求,而基(ji)于硬盤(pan)的(de)(de)KV數據(ju)庫多使用LSM Tree的(de)(de)方(fang)式(shi)在文件(jian)系(xi)統(tong)中實(shi)現(xian)(如RocksDB),在實(shi)際應用中會(hui)出現(xian)以下(xia)問題:
盡管很(hen)多業務已(yi)經從KV的(de)使用(yong)中受益,但當前KV的(de)不(bu)足(zu)限制了(le)KV本該發揮(hui)的(de)作用(yong)。
百度在Open-Channel SSD上的KV實現
搜索引擎及相(xiang)關業務對KV有(you)很強的(de)(de)需求。結合(he)對KV的(de)(de)深(shen)入理(li)解以及SSD的(de)(de)發展方向(xiang),百度選擇在Open-Channel SSD平(ping)臺上實現一套(tao)高(gao)性能KV,以移除當前KV存在的(de)(de)不(bu)足,充分發揮KV在SSD上應有(you)的(de)(de)性能。
Open-Channel SSD是白盒化(hua)的(de)(de)NVMe SSD。SSD的(de)(de)底(di)層介(jie)質NAND Flash具有(you)先(xian)擦后寫(xie)、壽命(ming)有(you)限的(de)(de)特(te)點,因此(ci)將NAND Flash組織成(cheng)主機可見的(de)(de)硬(ying)(ying)盤需(xu)要實(shi)現(xian)地址映射、垃圾回收、磨損均衡(heng)、錯誤(wu)處理等(deng)主要邏輯(ji)。Open-Channel SSD將實(shi)現(xian)這些邏輯(ji)的(de)(de)基本接口(kou)傳遞(di)到(dao)主機層,用戶(hu)可以將業務邏輯(ji)和SSD邏輯(ji)結合實(shi)現(xian),使用軟硬(ying)(ying)件深(shen)度(du)捆綁優化(hua)的(de)(de)方式實(shi)現(xian)同樣(yang)硬(ying)(ying)件上的(de)(de)收益(yi)大幅(fu)度(du)提升(sheng)。
在百度的(de)(de)Open-Channel KV實現中,SSD不再以塊(kuai)設(she)備形(xing)式(shi)存在,而是以KV服務(wu)的(de)(de)形(xing)式(shi)呈(cheng)現給上(shang)層業務(wu),KV邏輯(ji)向上(shang)層提供KV接(jie)口。KV接(jie)口接(jie)收到的(de)(de)鍵值對將被一步寫到物(wu)理介質NAND的(de)(de)某個地址(zhi)上(shang)并在內存中記錄映射(she)關(guan)系,無需經過文件(jian)系統/虛擬內存/塊(kuai)設(she)備的(de)(de)層層轉換(huan),讀取時(shi)同理。數據的(de)(de)傳輸獲得的(de)(de)是軟件(jian)層面最短(duan)(duan)的(de)(de)路徑,因而延遲大幅(fu)度縮短(duan)(duan)。
按照這種方法實現的KV可以解決傳統KV存在的問題(ti):
性能對比實測:
Open-Channel平臺提供的助力
Open-Channel SSD作為軟硬(ying)件優化的(de)基礎,目前已(yi)(yi)經(jing)有(you)穩定的(de)開發(fa)平臺,Linux內核也已(yi)(yi)內置支持(chi)。百度Open-Channel KV使用的(de)硬件平臺具有(you)以下(xia)特點:
總結
作為一個(ge)獨(du)立的(de)(de)(de)存(cun)儲引擎,百(bai)度Open-Channel KV項目已(yi)成功(gong)(gong)(gong)接入多(duo)個(ge)重要業務(wu),實現了(le)同等(deng)級產品中(zhong)單獨(du)提升(sheng)(sheng)(sheng)存(cun)儲性(xing)能和單獨(du)優化軟件(jian)邏輯都(dou)無法達到(dao)的(de)(de)(de)業務(wu)性(xing)能提升(sheng)(sheng)(sheng)幅(fu)度。此次Open-Channel應(ying)用(yong)的(de)(de)(de)成功(gong)(gong)(gong)實踐,證(zheng)(zheng)明(ming)了(le)存(cun)儲類應(ying)用(yong)在(zai)(zai)(zai)Open-Channel SSD上獲得大幅(fu)度性(xing)能提升(sheng)(sheng)(sheng)的(de)(de)(de)可能性(xing),也(ye)驗證(zheng)(zheng)了(le)Open-Channel平臺(tai)的(de)(de)(de)可靠性(xing)。寶存(cun)科技基于Open-Channel的(de)(de)(de)更多(duo)創新項目已(yi)經在(zai)(zai)(zai)孵化中(zhong),未來我們可以看到(dao)Open-Channel SSD在(zai)(zai)(zai)更廣泛(fan)的(de)(de)(de)范圍(wei)內的(de)(de)(de)成功(gong)(gong)(gong)應(ying)用(yong),為高(gao)可靠性(xing)、高(gao)效率、高(gao)性(xing)價(jia)(jia)比的(de)(de)(de)IT基礎設施(shi)帶來獨(du)特的(de)(de)(de)價(jia)(jia)值。