收集,管理数据并通过API提供

时间:2011-10-12 22:19:03

标签: php database web-services web-crawler

这是我的问题: 我有许多已知的位置(我对这些位置没有影响),包含大量数据。每个位置都为我提供了大量新数据的个别时段。有些给我差异更新,有些只是整个数据集,有些是通过xml,对于一些我必须构建一个webscrapper,一些需要身份验证等... 这些收集的数据应存储在数据库中。我必须编写一个api来以xml的形式发送请求的数据。

许多道路通往罗马,但我应该选择哪个?

您建议我使用哪种软件?

我熟悉C ++,C#,Java,PHP,MySQL,JS,但新东西仍然可以。

我的想法是使用cron jobs + php(或shell脚本)+ curl来获取数据。 然后我需要一个模块来解析并将数据插入数据库(mysql)。 来自客户端的数据请求可以回答php脚本。

我认为输入数据量约为1-5GB /天。

一个正确答案不存在,但你可以给我一些建议吗? 如果你能告诉我更聪明的方法,那将是很棒的。

非常感谢: - )

1 个答案:

答案 0 :(得分:1)

LAMP :坚持PHP和MySQL(并偶尔进入perl / python):PHP库的可用性,存储解决方案,可扩展性和API解决方案及其社区规模很好地弥补了其他任何其他因素环境产品。

API :在编写任何导入程序之前,请确保所设计的API查询(和存储/数据库)能够满足所有最终产品需求。日期范围,标记,特殊情况。

性能:如果您需要快速查询疯狂的大型数据集,sphinx-search 可以提供帮助。它不仅仅是文本搜索(标签,二进制等),还要确保用更多RAM来规定服务器要求。

IMPORTER :使其模块化:对于每个不同的数据源,编写一个可插入的导入器,可以由管理员启用/禁用,当然,也可以单独测试。选择一种基于最适合工作的语言和库:bash脚本是可以的。

在解析PHP的库方面,有很多。最近流行的一个是simplehtmldom,我发现它运作得很好。

TRANSFORMER :使数据转换例程模块化,以便在需要时编写。不要让导入器更改原始数据,只需使其成为索引数据库的最快方式。对于任何最终结果,转换例程(或更新的插件)应与API查询结合使用。

TIMING :cron执行没有任何问题,只要它们不会失控或导致您的输入源开始限制或阻止您,因此您需要这种意识。

VERSIONING :设计数据库,导入等,以便管理员可以轻松回滚错误数据。

供应商解决方案:查看scraperwiki - 他们通过抓取工具和数据存储创造了业务。

希望这会有所帮助。出于好奇,任何项目细节都是志愿者的?我的一位同事有兴趣交换笔记。