論 業務系統 架構 的 簡化 (二) 用 關係數據庫 做 緩存

一般, 分佈式緩存 是 NoSql 數據庫, 好比 Redis  。數據庫

 

但 實際上 咱們 能夠用 關係數據庫 來 做 緩存  。緩存

好比 經常使用的 商品列表 等, 能夠用 關係數據庫 來做 緩存, 查詢 排序 維護 都很方便 。架構

這種狀況 其實 就是 在 主數據庫 外 再建一個 數據庫 用於 查詢, 分佈式

經過 Job 定時 同步 主數據庫 的 資料 到 這個 「緩存」數據庫 就能夠 。spa

 

根據須要, 咱們能夠在 主數據庫 外 創建 多個 「緩存」數據庫, 也能夠 稱爲 外圍數據庫, 周圍數據庫, 衛星數據庫  。.net

經過 Job 定時 同步數據 到 這些 衛星數據庫  。線程

 

這樣的架構,  井井有理 。對象

 

在 大環境 上, 硬件技術 和 關係數據庫技術 在 近幾年 取得了 長足 的 進步,  而且這一趨勢在將來還將延續 。blog

能夠看看這篇文章   《CAP, BASE, 最終一致性和五分鐘原則》    https://blog.csdn.net/u013613428/article/details/55259924排序

裏面提到  「內存是硬盤,  硬盤是磁帶」  。

 

分佈式緩存 , 好比 Redis ,  能夠做爲 集羣 的 共享內存,  Server 們 經過 Redis 來 共享數據, 通訊, 同步協做 。

Redis 提供的一些數據類型仍是 頗具價值 的,  好比 隊列 Queue,  以及 Block Pop 等 Block 操做 。

能夠用於 Server 間   共享數據, 通訊, 同步協做  。

Server 間 的 共享數據, 通訊, 同步協做   和   線程間 的   共享數據, 通訊, 同步協做  是 相似的 ,

線程間 經過 內存 來 共享數據, 經過 Lock 來 同步協做,

Server 間 則 利用 Redis 這樣的 分佈式緩存 做爲 共享內存, 利用 Redis 提供的 Lock ,  或者 Block 操做 來 同步協做 。

 

用 關係數據庫 做爲 緩存 的好處是, 訪問 緩存 和 訪問 數據庫 的 代碼 是同樣的,  處理數據 的 方式 也是同樣的, 

訪問 和 處理 數據 的 思惟 是同樣的 。

只須要 工廠方法 返回 適當的 鏈接對象(Connection) 便可 。

這樣好像 回到了 十多年前 甚至 更早, 好像 回到了 遠古 的 草原 和 森林, 啊, 呼吸着新鮮的空氣  。

又好像回到了 大學 的 某個 早晨, Sql 代碼,再加一杯 咖啡, 再來一抹陽光,  So Fresh ~~   。

 

我不同意 把 關係數據 變成 Key-Value 數據, 再在 應用程序 裏用複雜的 對象關係 把 Key-Value 數據 包起來  。

 

Sql , 數據 , 代碼 , 咖啡 , 陽光 ,  豈不甚好  ?

相關文章
相關標籤/搜索