更新時(shí)間:2023-06-30 來源:黑馬程序員 瀏覽量:
鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫是NoSQL數(shù)據(jù)庫中的一種類型,也是最簡(jiǎn)單的NoSQL數(shù)據(jù)庫。鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫中的數(shù)據(jù)是以鍵值對(duì)的形式來存儲(chǔ)的。鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫的結(jié)構(gòu)示意圖,如圖所示。
從圖中可以看出,鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫的結(jié)構(gòu)實(shí)際上是一個(gè)映射,即鍵(key)是查找每條數(shù)據(jù)的唯一標(biāo)識(shí)符,值(value)是該數(shù)據(jù)實(shí)際存儲(chǔ)的內(nèi)容。鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫結(jié)構(gòu)是采用哈希函數(shù)來實(shí)現(xiàn)鍵到值的映射。當(dāng)查詢數(shù)據(jù)時(shí),基于鍵的哈希值會(huì)直接定位到數(shù)據(jù)所在的位置,實(shí)現(xiàn)快速查詢,并支持海量數(shù)據(jù)的高并發(fā)查詢。
常見的鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫有Redis、Tokyo Cabinet/Tyrant、Voldemort 以及OracleBDB等數(shù)據(jù)庫。鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫主要應(yīng)用于會(huì)話存儲(chǔ)和購物車等場(chǎng)景,具體介紹如下。
會(huì)話存儲(chǔ)指的是一個(gè)面向會(huì)話的應(yīng)用程序(如Web應(yīng)用程序)在用戶登錄時(shí)啟動(dòng)會(huì)話,并保持活動(dòng)狀態(tài)直到用戶注銷或會(huì)話超時(shí),在此期間,應(yīng)用程序?qū)⑺信c會(huì)話相關(guān)的數(shù)據(jù)存儲(chǔ)在內(nèi)存或鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫中。會(huì)話數(shù)據(jù)包括用戶資料信息、消息、個(gè)性化數(shù)據(jù)和主題、建議、有針對(duì)性的促銷和折扣。每個(gè)用戶會(huì)話具有唯一的標(biāo)識(shí)符,除了主鍵之外,任何其他鍵都無法查詢會(huì)話數(shù)據(jù),因此鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫更適合于存儲(chǔ)會(huì)話數(shù)據(jù)。
購物車指的是電子商務(wù)網(wǎng)站中的購物車功能。在假日購物季,電子商務(wù)網(wǎng)站可能會(huì)在幾秒鐘內(nèi)收到數(shù)十億份的訂單,鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫可以處理海量數(shù)據(jù)的擴(kuò)展和極高的狀態(tài)變化,同時(shí)通過分布式處理和存儲(chǔ),為數(shù)百萬并發(fā)用戶提供服務(wù)。此外,鍵值對(duì)存儲(chǔ)數(shù)據(jù)庫還具有內(nèi)置冗余的功能,可以處理丟失的存儲(chǔ)結(jié)點(diǎn)。