NoSQL 鍵值資料庫介紹

2022-06-20 10:30:12 字數 2570 閱讀 1764

鍵值資料庫是一類輕量級結合記憶體處理為主的nosql資料庫。

為什麼說他是輕量級???

1.他的儲存資料結構特別簡單,資料庫系統本身的規模也比較小

2.以記憶體為主的執行處理,目的是為了更快的實現對大資料的處理

鍵值儲存實現:

鍵值資料庫的設計原則是以提高資料處理速度為第一目標

一、鍵值資料庫實現的基本原理

且鍵下的內容必須具有唯一性,目的是為建立索引及資料查詢提供方便,但任然起著唯一位址的作用。

只有資料儲存結構和資料,資料得不到永久儲存不能稱為真正的資料庫。於是通過各種鍵值資料庫系統的各種儲存策略,以一定時間週期把資料複製到本地硬碟、快閃儲存器盤,鍵值資料庫就初步成型了。但是在大資料環境下單機的記憶體要受容量限制,那麼引入分布式處理方式便成為鍵值資料庫的必然選擇也是其基本特徵之一。

二、鍵值資料庫儲存的基本要素

key(鍵)

起唯一索引值的作用,確保一致鍵值結構李資料記錄的唯一性,同時也起資訊記錄的作用,可以採用複雜的自定義結構,只要保持唯一即可

注意:

鍵不是越長越好(不要超過1024位元組),鍵的內用越多,記憶體開銷越大,從而降低查詢效率,而且在大資料環境下,給資料查詢這類計算帶來更大的執行負擔

鍵的內容太短也不好,可讀性不高

在同一類資料集合中,鍵的命名規範最好統一

value(值)

值是對應鍵相關的資料,通過鍵來獲取,可以存放任何型別的資料,鍵值資料庫的值由二進位製大物件(blob)進行儲存,這意味著任何型別的資料都可以儲存,無需預先定義資料型別,在關係型資料庫中是強制要求預先定義儲存資料型別的

注意:不同的鍵值資料庫對值會有不同的約束,特別是在值儲存的大小上,不同資料庫,甚至不同資料庫裡的不同資料集物件的約束是不一樣的。例如redis中乙個string的值,最大可以儲存位元組數為512m

鍵值對(key-value pair)

鍵和值的組合就構成了鍵值對,他們之間的關係是一對一

命名空間(namespace):

命名空間是由鍵值所構成的集合,通常是一類鍵值對資料構成乙個集合。

在鍵值對的基礎上增加命名空間,是為了在記憶體中訪問該資料集時,該資料集具有唯一的名稱,類似傳統關係型資料庫對應的表

ps:可以把namespace看做是乙個最小的鍵值資料庫,當然鍵值資料庫更多指的是多namespace。部分鍵值資料庫也稱之為桶,即鍵值資料庫和桶是乙個意思

三、基本資料操作方式

nosql的鍵值資料庫有了儲存結構和資料,就需要考慮對資料的讀寫刪除的操作要求了,由於nosql資料庫沒有sql概念,他們對資料操作的實現是通過put、get、delete實現的

put命令:

用於寫或者更新鍵值儲存裡指定位址的值,當指定位址有值時,更新值,沒有值時,新增乙個值

get命令:

用於讀取鍵值儲存裡指定位址的值,如果沒有值,返回一條錯誤提示資訊

delete命令:

用於刪除鍵值儲存指定位址的鍵和值,如果鍵值儲存裡沒有該鍵,就返回一條錯誤提示資訊

鍵值儲存的特點

優點

簡單:

資料儲存結構只有鍵和值,並成對出現,值理論上可以儲存任意資料,並支援大資料儲存,凡是具有類似關係的資料應用,可以考慮鍵值資料庫,如熱門網頁排行

快速:

以記憶體為主的設計思路使鍵值資料庫擁有了快速處理資料的優勢

高效計算:

資料結構簡單化,而且資料集之間關係的簡單化(沒有傳統資料庫中多表關聯關係),基於記憶體的資料集計算,為大量使用者訪問情況下,提供高速計算並響應的應用提供了技術支援

分布式處理:

分布式處理能力使鍵值資料庫具備了處理大資料的能力

缺點

對值進行多值查詢功能很弱

鍵值資料庫在設計之初就以鍵為主要物件進行各種資料操作,包括查詢功能,對值直接進行操作的功能很弱

缺少約束,意味著更容易出錯

鍵值資料庫不用強制命令預先定義鍵和值所儲存的資料型別,那麼在具體業務使用過程中,原則上值裡什麼資料都可以存放,甚至放錯了都不會報錯。這在某些應用場景上很致命,例如商品**,需要程式猿對業務**進行程式設計約束,避免潛在問題,由於沒有值的型別定義,當有多名程式猿程式設計的情況下,需要更加重視設計文件的建立,否則可能a把**當做整型資料,b把**看做字串,c把**看做浮點數,容易引起**編寫混亂,也給後續的軟體系統的**維護**了麻煩

不容易建立複雜關係

鍵值資料庫的資料集,不能像傳統關係型資料庫那樣建立複雜的橫向關係,鍵值資料庫侷限於兩個資料集之間的有限計算,例如redis資料庫裡做交、並、補集運算

NoSQL資料庫介紹(1)

最近看了一些英文文件,其中有一篇把分布式系統和第一代nosql的大背景介紹得很清楚,雖然文件本身是10年寫的,而且沒有介紹某種特定nosql資料庫的使用,但很多思想性的東西到今天看都非常有價值,於是決定翻譯一下,翻譯中的各種bug請各位指出。原文可以在 找到。另外由於工作量浩大 原始文件有140多頁...

redis介紹(非關係型資料庫NOsql)

非關係型資料庫nosql not noly sql 使用c語言編寫 效能好,快 開源 免費。記憶體。在記憶體運算元據,僅次於cpu.永續性 把資料從記憶體發到硬碟裡面。k v key value redis的應用場景 1.資料的告訴快取和web會話快取 session cache 2.排行榜應用。時...

常見的NoSQL資料庫及相關介紹

nosql資料庫 not only sql nosql,泛指非關係型的資料庫。1 鍵值 key value 儲存資料庫 這一類資料庫主要會使用到乙個雜湊表,這個表中有乙個特定的鍵和乙個指標指向特定的資料。key value模型對於it系統來說的優勢在於簡單 易部署。但是如果dba只對部分值進行查詢或...