繁体   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