通常,只需要使用主鍵甚至是部分鍵來(lái)檢索應用程序的數據。鍵/值數據庫可以被看作一個(gè)非常大的哈希表,該表在唯一的鍵下存儲了一些值。存儲的值可以通過(guò)鍵或者部分鍵高效地檢索到。因為該值對于數據庫是不透明的,所以如果需要按值來(lái)查找一條記錄的話(huà)就需要逐條掃描。
鍵/值數據庫中的鍵可以包含多個(gè)元素,甚至可以排序以提高查詢(xún)效率。一些鍵/值數據庫允許使用鍵的前綴進(jìn)行查找,從而可以使用復合鍵。如果數據可以通過(guò)一些簡(jiǎn)單的鍵嵌套查詢(xún),那鍵/值數據庫會(huì )是個(gè)不錯的選擇。
例如,我們將客戶(hù)xyz的訂單存儲在鍵/值數據庫中,可以使用客戶(hù)ID作為鍵的前綴,結合訂單號組成鍵“xyz-1001”來(lái)存儲訂單??梢允褂谜麄€(gè)鍵來(lái)檢索特定的訂單,也可以使用“xyz”前綴檢索客戶(hù)xyz的所有訂單。
說(shuō)明:鍵/值數據庫通常是比較便宜的,且具有高度可伸縮性的數據存儲。鍵/值數據庫能夠根據鍵對數據進(jìn)行分區甚至重分區。使用鍵/值數據庫時(shí),選擇鍵很重要,因為這將對數據存儲的規模和讀寫(xiě)性能產(chǎn)生重大影響。
上海聚搜信息技術(shù)有限公司是阿里云的代理商網(wǎng)址:http://www.4526.cn/可以直接在網(wǎng)站上聯(lián)系阿里云代理商客服進(jìn)行咨詢(xún)服務(wù)器架構和配置以及優(yōu)惠價(jià)格?。ň鬯?a href="http:///">營(yíng)銷(xiāo)介紹鏈接:http:///meiyou/)是一家致力于搜索引聚搜營(yíng)銷(xiāo)及全網(wǎng)營(yíng)銷(xiāo),致力于為客戶(hù)提供搜索營(yíng)銷(xiāo)領(lǐng)域的服務(wù),幫助廣告客戶(hù)在搜索引聚搜獲取的投資回報,包括搜索引聚搜競價(jià)服務(wù)(SEM),搜索引聚搜優(yōu)化服務(wù)(seo)和搜索營(yíng)銷(xiāo)代運營(yíng)服務(wù),能夠有效為廣告主帶來(lái)高效的投放回報,我們的理念一直是:讓搜索營(yíng)銷(xiāo)營(yíng)銷(xiāo)具有價(jià)值。
聚搜營(yíng)銷(xiāo)團隊于2015年在上海成立,團隊核心均來(lái)自百度搜索部門(mén)和國內知名服務(wù)商的成員,有非常豐富的產(chǎn)品和項目?jì)?yōu)化經(jīng)驗,這兩年來(lái),服務(wù)于國內很多大中型企業(yè)和很多初創(chuàng )公司,通過(guò)我們多年的經(jīng)驗和服務(wù),幫助他們在搜索營(yíng)銷(xiāo)領(lǐng)域上取得了不斷的成功。
02 文檔數據庫
文檔數據庫和鍵/值數據庫類(lèi)似,因為它也通過(guò)主鍵存儲文檔(值)。與鍵/值數據庫不同的是,文檔數據庫中的文檔需要符合某些定義好的結構,而鍵/值數據庫幾乎可以存儲任意值。這使得文檔數據庫可以啟用諸如維護二級索引的功能以及基于文檔查詢(xún)數據的功能。
通常存儲在文檔數據庫中的值是哈希圖(JSON對象)和列表(JSON數組)的組合。JSON格式在文檔數據庫中很常用,盡管許多數據庫引擎使用了更高效的內部存儲格式,例如MongoDB的BSON。
建議:當你從關(guān)系型數據庫轉換到基于文檔的數據庫時(shí),你需要思考如何去組織數據。許多人需要時(shí)間來(lái)過(guò)渡到這種不同的數據建模方法。
image
傳統關(guān)系型數據庫(如PostgreSQL)存儲的數據大部分也可以存儲在文檔數據庫中。它們正變得越來(lái)越流行,與關(guān)系數據庫不同,這些存儲的文檔可以很好地映射成編程語(yǔ)言中的對象,并且不需要對象關(guān)系映射(ORM)工具。
這些數據庫通常不強制要求定義數據模式(schema),這對于在軟件持續交付(CD)過(guò)程中需要更新數據模式的情形具有一些優(yōu)勢。
說(shuō)明:不強制要求定義模式的數據庫通常被稱(chēng)為“讀時(shí)模式(schema on read)”,因為盡管數據庫未強制要求模式,但是在使用數據的應用中存在固有的模式,并且需要知道如何轉化讀到的數據。
03 關(guān)系型數據庫
關(guān)系型數據庫將數據組織到稱(chēng)為表的二維結構中,該結構由列和行組成。一張表中的數據可以與另一表中的數據有關(guān)聯(lián),數據庫系統可以保證這種關(guān)聯(lián)。關(guān)系型數據庫通常強制執行嚴格的模式,也稱(chēng)為“寫(xiě)時(shí)模式(schema on write)”,在該模式中,向數據庫寫(xiě)入的數據必須符合數據庫中定義的結構。
關(guān)系型數據庫已經(jīng)存在很長(cháng)時(shí)間了,許多開(kāi)發(fā)人員都有使用它們的經(jīng)驗。迄今為止,最流行和最常用的數據庫仍然是關(guān)系型數據庫。這些數據庫非常成熟,可以處理包含大量關(guān)系的數據,并且擁有大量知道如何使用它們的工具和應用程序生態(tài)系統。
在文檔數據庫中可能很難使用多對多關(guān)系,但是在關(guān)系型數據庫中這非常簡(jiǎn)單。如果應用的數據具有很多關(guān)系,尤其是有事務(wù)處理的需求,那么這些數據庫可能很合適。
04 圖數據庫
圖數據庫存儲兩種類(lèi)型的信息:邊和節點(diǎn)。邊定義了節點(diǎn)之間的關(guān)系,你可以把節點(diǎn)看作實(shí)體。節點(diǎn)和邊都具有屬性,其中存儲了該節點(diǎn)或邊的一些信息。邊通常會(huì )定義關(guān)系的方向或性質(zhì)。
圖數據庫可以很好地分析實(shí)體之間的關(guān)系。圖數據也可以存儲在任何其他數據庫中,但是當圖的遍歷變得越來(lái)越復雜時(shí),其他類(lèi)型的存儲可能很難滿(mǎn)足圖數據對性能和伸縮性的需求。
05 列族數據庫
列族數據庫(column family database)將數據組織成行和列,乍一看可能與關(guān)系型數據庫非常相似。你可以將列族數據庫視為行和列組成的表格數據,但是列被分了組,稱(chēng)為列族。
每個(gè)列族包含了一組邏輯上相關(guān)的列,通常被作為一個(gè)單元進(jìn)行檢索或操作。能被單獨訪(fǎng)問(wèn)的數據可以存儲在單獨的列族中。在一個(gè)列族中,可以動(dòng)態(tài)添加新列,并且行可以是稀疏的(也就是說(shuō),行不需要在每個(gè)列下面都有值)。
06 時(shí)序數據庫
時(shí)序數據庫是針對時(shí)間進(jìn)行優(yōu)化的數據庫,可根據時(shí)間來(lái)存儲值。這些數據庫通常需要支持大量的寫(xiě)操作。它們通常被用于從大量數據源實(shí)時(shí)收集大量數據。這些數據很少更新,刪除操作通常是批量進(jìn)行的。寫(xiě)入時(shí)序數據庫的記錄通常很小,但記錄的量很多。
時(shí)序數據庫非常適合存儲遙測數據。流行的用途包括物聯(lián)網(wǎng)(IoT)傳感器或應用程序/系統的計數器。時(shí)序數據庫通常會(huì )提供數據保持、下采樣以及根據數據使用模式的配置將數據保存到其他存儲中的功能。
07 搜索引擎
搜索引擎數據庫通常用于搜索保存在其他存儲和服務(wù)中的數據。搜索引擎數據庫可以對大量的數據建立索引,并提供近實(shí)時(shí)的索引查詢(xún)。
除了搜索像網(wǎng)頁(yè)這樣的非結構化的數據,許多應用程序還使用它為其他數據庫中的數據提供結構化和即時(shí)搜索功能。有一些數據庫也能提供全文索引功能,但是搜索數據庫還具備通過(guò)詞干和泛化將單詞縮減為詞根的功能。