非關係型資料庫 持續更新

2021-08-15 02:14:38 字數 1807 閱讀 9311

非關係型資料(nosql = not only sql)redis和mongodb

redis快取技術

shell指令碼程式設計

mongodb 是乙個基於分布式檔案儲存的資料庫。由 c++ 語言編寫。旨在為 web 應用提供可擴充套件的高效能資料儲存解決方案。

mongodb 是乙個介於關聯式資料庫和非關聯式資料庫之間的產品,是非關聯式資料庫當中功能最豐富,最像關聯式資料庫的。

mongodb中有三元素:資料庫,集合,文件,其中「集合」就是對應關聯式資料庫中的「表」,「文件」對應「行」。

mongodb的視覺化工具robomongo

在插入資料時候即使沒當前列屬性,能橫向插入資料並且儲存

$lt/$lte/$gt/$gte/$ne,依次等價於/>=/!=

優點:- 高可擴充套件性

- 分布式計算

- 低成本

- 架構的靈活性,半結構化資料

- 沒有複雜的關係

缺點:- 沒有標準化

- 有限的查詢功能(到目前為止)

- 最終一致是不直觀的程式

與關係型資料庫相比,mongodb的缺點:

一.mongodb不支援事務操作。

所以事務要求嚴格的系統(如果銀行系統)肯定不能用它。(這點和優點①是對應的)

二.mongodb占用空間過大。

關於其原因,在官方的faq中,提到有如下幾個方面:

1、空間的預分配:為避免形成過多的硬碟碎片,mongodb每次空間不足時都會申請生成一大塊的硬碟空間,而且申請的量從64m、128m、256m那 樣的指數遞增,直到2g為單個檔案的最大體積。隨著資料量的增加,你可以在其資料目錄裡看到這些整塊生成容量不斷遞增的檔案。

2、欄位名所占用的空間:為了保持每個記錄內的結構資訊用於查詢,mongodb需要把每個欄位的key-value都以bson的形式儲存,如果 value域相對於key域並不大,比如存放數值型的資料,則資料的overhead是最大的。一種減少空間占用的方法是把欄位名盡量取短一些,這樣占用 空間就小了,但這就要求在易讀性與空間占用上作為權衡了。我曾建議作者把欄位名作個index,每個欄位名用乙個位元組表示,這樣就不用擔心欄位名取多長 了。但作者的擔憂也不無道理,這種索引方式需要每次查詢得到結果後把索引值跟原值作乙個替換,再傳送到客戶端,這個替換也是挺耗費時間的。現在的實現算是 拿空間來換取時間吧。

3、刪除記錄不釋放空間:這很容易理解,為避免記錄刪除後的資料的大規模挪動,原記錄空間不刪除,只標記「已刪除」即可,以後還可以重複利用。

4、可以定期執行db.repairdatabase()來整理記錄,但這個過程會比較緩慢

三.mongodb沒有如mysql那樣成熟的維護工具,這對於開發和it運營都是個值得注意的地方。

bson:類json的一種二進位制形式

舉例子:

這是乙個簡單的bson結構體,其中每乙個element都是由key/value對組成的

redis的優點

效能極高 – redis能支援超過 100k+ 每秒的讀寫頻率。

豐富的資料型別 – redis支援二進位制案例的 strings, lists, hashes, sets 及 ordered sets 資料型別操作。

原子 – redis的所有操作都是原子性的,同時redis還支援對幾個操作全並後的原子性執行。

豐富的特性 – redis還支援 publish/subscribe, 通知, key 過期等等特性。

redis的缺點

是資料庫容量受到物理記憶體的限制,不能用作海量資料的高效能讀寫,因此redis適合的場景主要侷限在較小資料量的高效能操作和運算上。

總結: redis受限於特定的場景,專注於特定的領域之下,速度相當之快,目前還未找到能替代使用產品。

關係型資料庫 非關係型資料庫

關係型資料庫,是指採用了關係模型來組織資料的資料庫。關係模型是在1970年由ibm的研究員e.f.codd博士首先提出的,在之後的幾十年中,關係模型的概念得到了充分的發展並逐漸成為主流資料庫結構的主流模型。簡單來說,關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個...

關係型資料庫 非關係型資料庫

2019 02 25 20 38 36 關係型資料庫和非關係型資料的比較 一 關係型資料庫 關係型資料庫最典型的資料結構是表,由二維表及其之間的聯絡所組成的乙個資料組織 優點 1 易於維護 都是使用表結構,格式一致 2 使用方便 sql語言通用,可用於複雜查詢 3 複雜操作 支援sql,可用於乙個表...

關係型資料庫與非關係型資料庫

關係型資料庫與非關係型資料庫的區別 非關係型資料庫的優勢 1.效能 nosql是基於鍵值對的,可以想象成表中的主鍵和值的對應關係,而且不需要經過sql層的解析,所以效能非常高。2.可擴充套件性 同樣也是因為基於鍵值對,資料之間沒有耦合性,所以非常容易水平擴充套件。關係型資料庫的優勢 1.複雜查詢 可...