簡體   English   中英

Django 緩存實時數據帶DRF過濾排序

[英]Django cache real-time data with DRF filtering and sorting

我正在構建一個 web 應用程序來管理移動車隊。 每輛車都有一組固定數據(比如他們的車牌),另一組數據通過 websocket(他們的 state 和 GNSS 坐標)每秒更新 3 次。 這是實時數據。

在前端,我需要一個帶有顯示所有車輛的網格的視圖。 網格必須顯示每個數據的固定數據和實時數據的最新已知值。 用戶必須能夠按任何列進行排序或過濾。

我當前的堆棧是 Django + Django Rest Framework + Django Channels + PostgreSQL 用於后端,react-admin (React+Redux+FinalForm) 用於前端。

問題:在數據庫中存儲實時數據很容易滿足我的所有要求,因為我將從內置的 DRF 和 Django 的 ORM 排序/過濾中受益,但我相信每輛車每秒訪問 DB 3 次很容易成為擴大規模時的瓶頸。

我當前的解決方案涉及將 python 對象中的 RT 數據序列化/反序列化(pickle)到 Django 緩存(支持 REDIS)中,而不是將它們作為模型存儲在數據庫中。 但是,我必須手動檢索數據並在我的 DRF 視圖中對其進行 DRF 序列化。 因此,排序和過濾不起作用,因為不涉及 SQL 查詢。

如果 pgsql 有某種零磁盤訪問的內存支持表,那就太好了,但是,根據我的研究,目前還沒有這樣的功能。

所以我的問題是:解決我的問題的正確/通常方法是什么?

我認為你應該將你的服務代碼分成更小的服務:

  • 從車輛接收數據
  • 處理數據
  • 將車輛分成較小的組,每個組使用唯一的插座

嘗試批量更新最新值。

為您的數據庫使用 RAID。

而且我認為對實時數據使用緩存是浪費服務器資源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM