用于大规模分析的Python策略(即时或延期)

时间:2011-09-30 07:39:51

标签: python sql large-data

要分析大量网站或财务数据并提取参数数据,最佳策略是什么?

我将以下策略分类为“即时”或“延迟”。哪个最好?

  1. 即时:即时处理数据并将参数数据存储到数据库中
  2. 延期:将所有源数据以ASCII格式存储到文件系统中,稍后发布,或使用processing-data-daemon
  3. 延期:将所有网页存储为数据库中的BLOB以便稍后进行后处理,或使用processing-data-daemon存储
  4. 1号是最简单的,特别是如果你只有一台服务器。单个服务器的#2或#3能否更高效,或者您只看到多台服务器的电源?

    是否有任何python项目已经针对这种分析?

    编辑:最好的,我的意思是最快的执行,以防止用户轻松编程作为次要

2 个答案:

答案 0 :(得分:2)

我会在单个或多台计算机上使用celery,并采用“即时”策略。您可以拥有一个聚合任务,用于获取数据,以及一个进程任务,用于分析它们并将它们存储在数据库中。这是一种高度可扩展的方法,您可以根据计算能力进行调整。

在一次通过中处理数据的意义上,“即时”策略更有效。另外两个涉及额外的步骤,从您保存它们的地方重新检索数据并在此之后处理它们。

当然,一切都取决于数据的性质和处理方式。如果流程阶段比聚合慢,则“即时”策略将挂起并等待处理完成。但同样,您可以将celery配置为异步,并在有数据尚未处理的情况下继续聚合。

答案 1 :(得分:2)

首先:“阻止用户等待的最快执行”意味着某种延迟处理。一旦您决定推迟处理 - 因此用户没有看到它 - 平面文件和数据库之间的选择与最终用户等待时间基本无关。

第二:数据库很慢。平面文件很快。但是,由于您将使用celery并避免最终用户等待时间,因此平面文件和数据库之间的区别变得无关紧要。

  

将所有源数据以ASCII格式存储到文件系统中,稍后发布,或使用processing-data-daemon

这是最快的。芹菜加载平面文件。