Redis ORM是一個可怕的主意嗎? -DEV社群

banq發表於2020-04-21

我們的應用處理許多資料,這些資料的變動速度非常快。我們的主資料庫(MySQL)根本無法跟上,因此我們在Redis中儲存了很多“當前狀態”資料。
現在,我們使用JSON對物件進行反序列化並儲存整個物件。這導致了幾個問題,因此我們將切換為單獨儲存每個欄位。用於管理所有這些欄位的程式碼很快就會變得棘手,因此我正在考慮為Redis構建通用ORM。其中一些已經存在,但沒有我需要的所有功能(例如,具有管道的事務)和鎖。
這是一個可怕的主意嗎?我只是在構建一種我不知道的其他地方已經存在的產品嗎?

回答:
1.為了避免維護兩個不同儲存之間的資料一致性的巨大痛苦。看一下Apache Ignite資料網格。使用它可以獲得以下好處:
  • 透明快取
  • 訪問資料作為鍵值儲存
  • 使用分散式SQL查詢訪問與關聯式資料庫相同的資料
  • 全面的交易支援
  • 在儲存和效能方面接近線性水平可擴充套件性
  • 每個“表”(Ignite術語為“快取”)的可調冗餘和一致性特徵

它還提供其他服務,例如佇列,釋出訂閱,分散式計算,內建檔案系統以及更多有用的東西。

2. 我認為為該用例構建的MongoDB與像Marshal.ts這樣的高效能序列化器/ ORM結合起來最適合這裡。儘管Redis可用於許多用例,但我認為這在效能,可維護性和其他功能(例如查詢資料)方面不會勝過MongoDB。

3.如果要使用Redis作為文件(物件)的儲存引擎,為什麼不使用像mongoDB這樣的noSQL文件資料庫並使用記憶體中的引擎(如果使用ssd的速度不足以僅查詢鍵),並使用該工具經過良好測試的資料庫。
我認為最好是找到合適的工具而不是修改工具,而Redis是一個出色的鍵/值資料庫,但是如果您要擴充套件功能,也許是更合適的工具。


 

相關文章