我有一个从数据库表构建列表并实时运行的进程。新数据不时被添加到数据库表中。不时地从表中查询数据既麻烦又费时,这需要与possible.What一样的实时性才是解决问题的正确方法?
该过程如下
list从执行2-4秒的SQL查询中获取生成。
进程A使用List执行某些功能
数据会不断添加到数据库表中。我们只需要将新的数据附加到列表中,流程A就会实时使用这些数据。
我还没有尝试编写任何代码,我仍然不确定它应该是什么样的设计。Python是我们唯一可以使用的语言,因为已经部署了10,000行Python代码作为系统的一部分。
有人能帮助我正确的方法,模块等吗?
编辑
进程A是程序中的一个过程。我正在考虑的Pusedo代码是这样的
def processA(list):
while 1:
parse file
do something
def run():
list = generate list from run sql query
processA(list)
if __name__=="__main__":
run()发布于 2010-01-09 18:22:48
如果您上次查询之后出现的所有新数据,那么再次查询数据库不是很有意义吗?类似于key > highest_key_in_list或date > highest_date_in_list的东西,而不是再次加载整个程序。
发布于 2010-01-09 18:22:57
这感觉很麻烦,但是在最初的查询中创建一个临时表来保存结果。向表中添加一个列,它是一个递增的数字,我将调用id。在表中添加一个触发器,以更新临时表的数据更改。返回数据库,只查询id大于初始拉力中最后一个元素的记录。因为这将是一个更快的查询,它应该使您尽可能接近实时。重用持久连接也可能略有帮助。
我还会检查您的数据库是否为这个查询建立了良好的索引,2-4秒似乎是很长的时间。也许您还可以对查询进行一些优化。
发布于 2010-01-09 18:27:51
对不起,很难推断出你到底想做什么。
有一点不太清楚:
进程(python脚本)是吗?要运行
重置取决于数据库架构和数据添加/更新的方式。插入后会不会发生变异?如果没有,您只能选择数据“自上次调用”,方法是使用表中的时间戳字段(如果有时间戳字段)或标识字段(实际上不可靠)。它在MySQL中是有点可靠的,但同样也不是很可靠)。
如果数据可能被更新,那么您将不得不重新读取整个数据集(除非您有方法只选择新的/更新的条目)。
至于2-4秒,-可能有很多原因说明为什么需要这么长时间--您是否正在运行查询,其中提到了未索引字段?
https://stackoverflow.com/questions/2034338
复制相似问题