python - 使基于 SQL 的事件提要更快的好方法

标签 python sql django redis feed

需要一种方法来提高我网站基于 SQL 的事件源的性能。我们在 Heroku 上使用 Django。

现在我们正在使用 actstream,这是一个 Django 应用程序,它使用 Django ORM 中的通用外键实现事件提要。基本上,每个 Action 都有指向其参与者和它可能作用于的任何对象的通用外键,如下所示:

行动: (Clay - actor) 写了一篇 (comment - action object) (Andrew 对星巴克的评论 - 目标)

随着我们的扩展,它变得太慢了,这是可以理解的,因为它依赖于大型、昂贵的 SQL 连接。

我至少看到两个选项:

  1. 在 SQL 数据库之上放置一个 Redis 层,并从那里获取事件提要。
  2. 尝试绕过 Django ORM 并在原始 SQL 中执行所有查询,据我所知这可以提高性能。

任何人对这两个或其他想法有任何想法,我很想听听他们的意见。

最佳答案

您可能想看看物化 View 。由于您使用的是 Heroku,并且通常使用 PostgreSQL,因此您可以查看 Materialized View Support for PostgreSQL .它不像其他数据库服务器那样成熟,但据我所知,它可以工作。要使用 Django ORM,您可能必须为提要创建一个新的“实体”(不熟悉此处的 Django,因此请根据需要进行修改),然后对其进行查询,就好像它是一个表一样。 View 的手动管理是一个考虑因素,因此在您 promise 之前仔细研究它。

希望这对您有所帮助!

关于python - 使基于 SQL 的事件提要更快的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14073030/

相关文章:

python - Windows Gstreamer ALSA 替代方案?

sql - mysql select查询帮助--ORDER BY

sql - 删除 Oracle 表中的重复行

html - Django - 如何使用 View 删除对象

python - View 中没有功能的 Django URL

python - 将包添加到 pylint 异常

python - 方案中的斐波那契函数

python - 比较 numba 编译函数中的字符串

sql - 正则表达式检测 SQL 注入(inject)

python - 重构此 Python 代码以迭代容器