这是我的问题: 我有许多已知的位置(我对这些位置没有影响),包含大量数据。每个位置都为我提供了大量新数据的个别时段。有些给我差异更新,有些只是整个数据集,有些是通过xml,对于一些我必须构建一个webscrapper,一些需要身份验证等... 这些收集的数据应存储在数据库中。我必须编写一个api来以xml的形式发送请求的数据。
许多道路通往罗马,但我应该选择哪个?
您建议我使用哪种软件?
我熟悉C ++,C#,Java,PHP,MySQL,JS,但新东西仍然可以。
我的想法是使用cron jobs + php(或shell脚本)+ curl来获取数据。 然后我需要一个模块来解析并将数据插入数据库(mysql)。 来自客户端的数据请求可以回答php脚本。
我认为输入数据量约为1-5GB /天。
一个正确答案不存在,但你可以给我一些建议吗? 如果你能告诉我更聪明的方法,那将是很棒的。
非常感谢: - )
答案 0 :(得分:1)
LAMP :坚持PHP和MySQL(并偶尔进入perl / python):PHP库的可用性,存储解决方案,可扩展性和API解决方案及其社区规模很好地弥补了其他任何其他因素环境产品。
API :在编写任何导入程序之前,请确保所设计的API查询(和存储/数据库)能够满足所有最终产品需求。日期范围,标记,特殊情况。
性能:如果您需要快速查询疯狂的大型数据集,sphinx-search 可以提供帮助。它不仅仅是文本搜索(标签,二进制等),还要确保用更多RAM来规定服务器要求。
IMPORTER :使其模块化:对于每个不同的数据源,编写一个可插入的导入器,可以由管理员启用/禁用,当然,也可以单独测试。选择一种基于最适合工作的语言和库:bash脚本是可以的。
在解析PHP的库方面,有很多。最近流行的一个是simplehtmldom,我发现它运作得很好。
TRANSFORMER :使数据转换例程模块化,以便在需要时编写。不要让导入器更改原始数据,只需使其成为索引数据库的最快方式。对于任何最终结果,转换例程(或更新的插件)应与API查询结合使用。
TIMING :cron执行没有任何问题,只要它们不会失控或导致您的输入源开始限制或阻止您,因此您需要这种意识。
VERSIONING :设计数据库,导入等,以便管理员可以轻松回滚错误数据。
供应商解决方案:查看scraperwiki - 他们通过抓取工具和数据存储创造了业务。
希望这会有所帮助。出于好奇,任何项目细节都是志愿者的?我的一位同事有兴趣交换笔记。