關聯式資料庫與非關聯式資料庫

2022-01-10 19:30:58 字數 1579 閱讀 5471

關聯式資料庫,也就是以關係為核心來組織資料的資料庫,資料被看作關係的集合。它的理念是把資料盡可能拆分成多個二維**,不同的表之間通過某種關係來連線起來。這樣的好處有:

如果資料的某一部分需要變動,只需要變動該資料所處的表就行,而不需要重新設計整個資料庫。(前提是最開始就把關係模型設計得足夠好。。)

可以進行複雜的 sql 查詢

保證事務的一致性

關聯式資料庫保證事務滿足以下四個特性:

原子性(atomicity):整個事務中的所有操作,要麼全部完成,要麼全部不完成,不存在只有一部分完成的情況。如果事務在執行過程中觸發了異常,整個事務都會失敗並中止,資料庫不會被改變。(因為沒有commit

永續性(durability):一旦事務成功執行,它所作的更改就會一直存在於資料庫中,不會丟失。(實際上永續性有很多的級別,保證資料絕對不丟失的方法並不存在)

隔離性(isolation):在併發事務下,各事務相互獨立互不干擾。(或者說乙個事務所做的修改在最終提交以前,該修改對其他事務不可見)

isolation level

dirty reads

non-repeatable reads

phantoms(幻讀)

read uncommitted

may occur

may occur

may occur

read committed

don't occur

may occur

may occur

repeatable read

don't occur

don't occur

may occur

serializable

don't occur

don't occur

don't occur

一致性(consistency):如果事務是併發多個,其外在表現也必須與序列事務一致。也就是說事務開始和結束之間的中間狀態不會被其他事務看到。

aid 是手段,c 是目的。

mysql 的 innodb 引擎預設的隔離級別為 repeatable read,而 sql server、postgrelsql、oracle 都以 read committed 為預設隔離級別。隔離級別可手動修改。

傳統的關聯式資料庫有如下缺點:

對一致性的要求導致其在高併發下不堪重負

資料讀寫必須經過 sql 解析,大量資料、高併發下讀寫效能不足

「阻抗失諧」,即資料庫中儲存的物件與實際的物件實體有一定的差別

擴充套件困難,關係模型一旦確定就很難修改。

於是 nosql 異軍突起,關聯式資料庫的缺點與 nosql 的優點幾乎一一對應,兩者可以說是互補的關係。

非關聯式資料庫的優點:

nosql 只要求「弱一致性」,或者說「最終一致」,能勝任高併發場景

無需經過 sql 層的解析,讀寫效能很高

鍵值模型(或文件模型、圖模型)與物件導向的資料表達方式更相似更自然

資料之間沒有耦合,很容易修改拓展

關聯式資料庫與非關聯式資料庫

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

關聯式資料庫與非關聯式資料庫

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

關聯式資料庫與非關聯式資料庫都有哪些?

關係性資料庫 sql 使用關係模型 二維 模型 來組織資料的資料庫 常見 mysql oracle microsoft sql server 優點 二維表結構貼近開發邏輯 支援sql語句,可以做非常繁雜的查詢 提供對事務的支援,並且提供事務的恢復 回滾 併發控制和死鎖問題的解決 資料存在磁碟中,安全...