redis(1)NoSQL資料庫簡介

Silent丿丶黑羽發表於2023-02-23

1.1 技術發展

redis是用來解決效能問題的資料庫

技術的分類:

  1. 解決功能性問題:Java、Jsp、RDBMS、Tomcat、HTML、Linux、JDBC、SVN
  2. 解決擴充套件性問題:Struts、Spring、SpringMVC、Hibernate、Mybatis
  3. 解決效能問題:NoSQL、Java執行緒、Hadoop、Nginx、MQ、ElasticSearch
     

1.1.1 Web1.0時代

在Web1.0時代,資料訪問量很有限,用一夫當關的高效能的單點伺服器可以解決大部分問題。


 

1.1.2 Web2.0時代

隨著Web2.0的時代的到來,使用者訪問量大幅度提升,同時產生了大量的使用者資料。加上後來的智慧移動裝置的普及,所有的網際網路平臺都面臨了巨大的效能挑戰。如果我們依然使用單體的架構服務,那麼伺服器無法承受大量使用者的訪問,會導致伺服器的CPU有很大的壓力,並且資料庫有IO壓力。


 

1.1.3 解決CPU及記憶體壓力

問題:session我們儲存在哪?

  1. 儲存在cookie中
    缺點:cookie一般儲存在客戶端中,所以不安全

  2. 儲存在檔案伺服器或者資料庫裡
    缺點:會有大量的IO效率問題

  3. session複製,使用者一開始訪問,伺服器A儲存了使用者的資訊,第二次使用者訪問的時候,請求走向了伺服器B,但此時session在伺服器A上,所以就將session複製一份給伺服器B即可
    缺點:session資料冗餘,節點越多越浪費

  4. 儲存在快取資料庫中
    優點:完全儲存在記憶體中,讀取速度更快,資料結構簡單
     

1.1.4 解決IO壓力


當你資料庫中的資料越來越多,那麼一般你就會使用分庫分表的技術,但是它會破壞一定的業務邏輯來換取效能,它不是最好的處理方式,我們可以把頻繁查詢的資料放入快取資料庫中,它能極大的提高你的查詢速度,減少io的讀操作。
 

1.2 NoSQL

 

1.2.1 NoSQL資料庫概述

NoSQL(Not Only SQL),意思是"不僅僅是SQL",泛指非關係型資料庫
NoSQL不依賴業務邏輯方式儲存,而是以簡單的key-value模式儲存。因此大大的增加了資料庫的擴充套件能力。

它有以下特性:

  • 不遵循SQL標準
  • 不支援ACID
  • 遠超SQL的效能

 

1.2.2 NoSQL適用場景

  • 對資料高併發的讀寫
  • 海量資料的讀寫
  • 對資料高可擴充套件性的

1.2.3 NoSQL不適用場景

  • 需要事務支援
  • 基於sql的結構化查詢儲存,處理複雜的關係,需要即席查詢

總結:用不著SQL和用了SQL也解決不了的情況,請考慮使用NoSQL
 

1.2.4 常見的NoSQL資料庫

  • Memcache
    • 很早出現的NoSQL資料庫
    • 資料都在記憶體中,一般不持久化
    • 支援簡單的key-value模式,支援型別單一
    • 一般是作為快取資料庫輔助持久化的資料庫
  • Redis
    • 幾乎覆蓋了Memcached的絕大部分功能
    • 資料都在記憶體中,支援持久化,主要用作備份恢復
    • 除了支援簡單的key-value模式,還支援多種資料結構的儲存,比如list、set、hash、zset等
    • 一般是作為快取資料庫輔助持久化的資料庫
  • MongoDB
    • 高效能、開源、模式自由的文件型資料庫
    • 資料都在記憶體中,如果記憶體不足,把不常用的資料儲存到硬碟中
    • 雖然是key-value模式,但是對value(尤其是json)提供了豐富的查詢功能
    • 支援二進位制資料及大型物件
    • 可以根據資料的特點替代RDBMS,成為獨立的資料庫。或者配合RDBMS,儲存特定的資料

 

相關文章