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