記憶體資料庫、關係型資料庫和非關係型資料庫
一、記憶體資料庫、關係型資料庫和非關係型資料庫
1.個人觀點:
二、記憶體資料庫(redis,mongodb,sqlite,oracle等):
三、raft分布式協議:
四、redis出現宕機,如何保證資料不丟失?
資料庫型別特性優點缺點
關係型資料庫:
sqlite,oracle,mysql等
1,關係型資料庫,是指採用了關係模型來組織資料的資料庫;
2,關係型資料庫的最大特點就是事務的一致性;
3,簡單來說,關係模型的指就是二維**模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個資料組織。
1,容易理解:二維表結構是非常貼近邏輯世界乙個概念,關係模型相對網狀,層次等其他模型來說更容易理解;
2,使用方便:通用的sql語言使得操作關係型資料庫非常方便;
3,易於維護:豐富的完整性(實體完整性,參照完整性和使用者定義的完整性)大大減低了資料冗餘和資料不一致的概率;
4,支援sql,可用於複雜的查詢1,為了維護一致性所付出的巨大代價就是其讀寫效能比較差;
2,固定的表結構;
3,高併發讀寫不行
4,海量資料的高效率讀寫
非關係型資料庫:
mongodb,redis,hbase等
1,使用鍵值對儲存資料;
2,分布式;
3,一般不支援acid特性;
如圖4所示,非關係型資料庫嚴格上不是一種資料庫,的英文應該一種資料結構化儲存方法的集合1,無需經過sql層的解析,讀寫效能很高;
2,基於鍵值對,資料沒有耦合性,容易擴充套件;
3,儲存資料的格式:nosql的的的儲存格式是鍵,值形式,文件形式,形式等等,文件形式,形式等等,而關係型資料庫則只支援基礎型別1,不提供sql支援,學習和使用成本較高;
2,無事務處理,附加功能雙向和報表等支援也不好;
關係型資料庫:在於關係,對資料操作(比如資料的增刪改查)之前需要考慮關係,具備acid特性(acid是原子原子性,一致性一致性,隔離性隔離性,耐用性永續性),高併發能力一般不行
基於記憶體,讀寫速度快,資料有可能會丟失,丟失率只能降到最低,但不能**。
redis:更偏重於程序順序寫入,雖然支援集群,也僅限於主-從模式。一般可用於「較小資料量的效能和運算,比如網路開發中的session儲存」。
一般分布式都會遵從的協議:有點類似美國的**選舉。
比如有乙個建議,有ñ個伺服器,有大於2n + 1的伺服器表示贊同,那麼這個建議就被通過。
假如建議是「一致性」,只要大於2n + 1的伺服器之間的資料一致,那他們就是一致。
假如建議是「主伺服器」,只要大於2n + 1的伺服器投票給要被選舉的伺服器,被選舉的伺服器也將變成主伺服器
還有很多思維:
一台伺服器:快照持久化(rdb),同時滿足在指定的時間間隔內和改動了幾個資料的兩個條件,生成記憶體中的資料集快照,然後寫入磁碟;日誌持久化(aof),滿足everysec(每秒)/always(每次操作)/no(預設30秒)條件,生成日誌,然後寫入磁碟快取
多台伺服器:redis正在開發的sentinel(哨兵監聽),具體**:
關係型資料庫和非關係型資料庫
關係型資料庫 mysql oracle等 非關係型資料庫 nosql hbase,mongodb,redis等 優勢 可以在乙個表以及多個表之間做複雜的資料查詢 支援事務,保持資料的一致性。優勢 基於鍵值對,不需要經過sql解析,資料之間沒有耦合,易水平擴充套件。資料儲存在快取中,查詢速度快。可以儲...
關係型資料庫和非關係型資料庫
關聯式資料庫是資料項之間具有預定義關係的資料項的集合。這些項被組織為一組具有列和行的表。表用於儲存有關要在資料庫中表示的物件的資訊。表中的每列都儲存著特定型別的資料,字段儲存著屬性的實際值。表中的行表示乙個物件或實體的相關值的集合。表中的每一行可標有乙個稱為主鍵的唯一識別符號,並且可使用外來鍵在多個...
關係型資料庫和非關係型資料庫
關係型資料庫 採用了關係模型來組織資料的資料庫 代表 sql server,mysql,oracle 優點 容易理解,二維表的結構貼近現實世界 使用方便,通用的sql語句使得操作關係型資料庫非常方便 易於維護,資料庫的acid屬性,大大降低了資料冗餘和不一致性 缺點 讀寫效能差,尤其是海量資料的高效...