创建一个web应用程序(在我的例子中是Django,但我认为问题更一般),即管理一群执行队列作业的工作人员,需要跟踪每个作业的进度。
当我使用数据库UPDATE (在本例中为PostgreSQL)执行此操作时,它会严重影响数据库性能,因为每次更新都会在表中创建一个新行,并且在我的示例中,只有清理DB会删除过时的行。每1分钟运行30个作业并报告进度的数据库可能需要每10天清理一次(这意味着所有使用系统的员工在前端的速度都会大大减慢)。
因为进度信息并不重要,例如。它不一定是持久的,你如何在不使用开销数据库的情况下从作业中进行进度更新?有30个worker服务器,每个服务器同时执行1到2个作业,1个前端服务器为用户提供web应用程序,以及1个数据库服务器。
发布于 2010-06-01 15:17:59
如果您正在进行基于键的插入/更新/检索(例如,您每次都是通过ID访问行),那么您可以将Django caching framework与任何可以在服务器之间共享的缓存后端一起使用。amwinter建议使用memcached。在django发行版中有一个memcached缓存后端。但是memecached不能保证它不会丢失你的数据。例如,您可能正在尝试存储大量数据,而memcached在达到一定的内存限制时将开始丢失数据。所以请记住这一点。memcached有一个扩展,可以让它持久化数据(忘记它叫什么了)。
您还可以考虑使用redis as a cache backend或MongoDB
https://stackoverflow.com/questions/2855277
复制相似问题