1. 程式人生 > >學習MySql和MongoDB筆記

學習MySql和MongoDB筆記

value couchdb 用戶信息 postgres 了解 之間 edi acid server

首先了解下關系型數據庫和非關系型數據庫

關系型數據庫

SQL關系型數據庫采用了關系模式來組織數據,即關系模式為二維表格模型。

主要的數據庫:SQL Server,Oracle,Mysql,PostgreSQL。

優點:容易理解,使用方便,易於維護

缺陷:對於高並發量的讀寫效率,高擴展性和可用性(難以橫向擴展)

為了維護一致性犧牲了讀寫性能

非關系型數據庫

NoSQL非關系型數據庫是非關系型的、分布式的,用於超大規模數據的存儲。這些類型的數據存儲不需要固定的模式,無需多余操作就可以橫向擴展。

主要的數據庫:MongoDB,Redis,CouchDB

NoSQL提出了另一種理念,以鍵值來存儲,且結構不穩定,每一個元組都可以有不一樣的字段,這種就不會局限於固定的結構,可以減少一些時間和空間的開銷。使用這種方式,為了獲取用戶的不同信息,不需要像關系型數據庫中,需要進行多表查詢。僅僅需要根據key來取出對應的value值即可。

分類:
1.面向高性能並發讀寫的key-value數據庫

2.面向海量數據訪問的面向文檔數據庫

3.面向可拓展的分布式數據庫

缺陷:由於Nosql約束少,所以也不能夠像sql那樣提供where字段屬性的查詢。因此適合存儲較為簡單的數據。一些不能夠持久化數據,需要和關系型數據庫結合。

補充:
關系型數據庫適合存儲結構化數據,例如用戶信息:

1.這些數據通常需要做結構化查詢;

2.這些數據的規模。增長的速度是可預期的;

3.事務性、一致性,適合存儲比較復雜的數據。

非關系型數據庫存儲非結構化數據,比如:文章、評論:
1.這些數據通常用於模糊處理,例如全文搜索、機器學習,適合存儲較為簡單的數據;

2.這些數據是海量的,並且增長的速度是難以預期的;

3.按照key獲取數據效率很高,但是對於join或其他結構化查詢的支持就比較差。

數據庫系統必須維護事務的四個特性(ACID):

原子性 (Atomicity) :事務包含的所有操作要麽全部成功,要麽全部失敗回滾;成功必須要完全應用到數據庫,失敗則不能對數據庫產生影響;

一致性 (Consistency) :事務執行前和執行後必須處於一致性狀態;

隔離性 (Isolation) :當多個用戶並發訪問數據庫時,數據庫為每一個用戶開啟的事務,不被其他事務的操作所幹擾,多個並發事務之間要相互隔離;

持久性 (Durability) :一個事務一旦被提交了,那麽對數據庫中的數據的改變就是永久性的,即便在數據庫系統遇到故障的情況下也不會丟失事物的操作。

推薦:https://blog.csdn.net/lzj3462144/article/details/70973368

學習MySql和MongoDB筆記