时间序列与爬虫

爬虫是个好东西,有人用来爬妹子图,有人用来分析时事,有人用来收集不可说的东西..

之前爬取了京东众筹的数据,做了一下简单的分析,但那仅仅是练手。之前使用Pyspider,结合我的VPS构建了一套分布式爬虫系统,而现在我打算借助Scrapy实现一个迷你爬虫,爬去时序数据,然后在此基础上做点事情。

TSDB 的思考

为了提前对大数据诊断课题做准备,研究时间序列就具备了迫切性,宇宙中时间序列数据无处不在,并且能以长期的视角描述出对象运行规律,而且任意数据库都可实现数据存取。但是时间序列数据相比于普通的关系数据,具有如下特点:

  • 频繁的插入操作
  • 极少的查询操作
  • 从数据完整性的角度上说不应有删除、更新操作
  • 查询指令中通常以获取一个时间段的数据集合为目的

因此大多数关系型数据库并没有针对此类数据做特定优化,而时间序列数据往往具有非常明显的结构化特性,因此使用非结构型数据库也并没有功能优势。在这种背景下,各种面向时间序列数据而设计的“TSDB(时间序列数据库)”就是最好的选择,并且通常结合了分布式技术与”Continuous Query”技术解决了海量时间序列数据的存储膨胀问题与快速响应需求。

在众多方案中重点关注了 InfluxDB 与 OpenTSDB 两个解决方案,前者轻量级号部署,后者依赖于Hadoop生态圈。目前,鉴于小型VPS的性能瓶颈,个人项目中主要使用 InfluxDB;而实验室的人工智能平台上还是准备使用 OpenTSDB 存储大量的训练样本。

TSDB与爬虫

因为是小项目,不想为此占用太多计算资源,使用 Scrapy 作为这次实践的爬虫框架。长期来看,人民币汇率下跌是必然趋势(仅仅是个人观点),因此想关注一下主流外汇,必要的时候也练练手炒一下外汇,可是大多数网站提供的汇率非常不友好,要么没有长期数据(XX银行,说你呢),要么没有对比数据,于是乎 我的爬虫数据DashBoard 应用而生。

其实,网站的原理简单不不值一提,没有用任何黑科技,只不过结合了我的使用需求与 InfluxDB 的 Continuous Query 策略,将一年期限内滚动保存的多国实时汇率数据所占用的空间压缩到了10MB以下,很开心!以最简单的方式解读 Continuous Query 的工作原理,就是说根据我的数据分析方式与网站的数据展示规律,TSDB自动在合适的时间节点上将大量时间序列数据提前处理好,在今后的多次查询中,数据库直接返回处理结果。

下面,我准备研究一下用什么样的算法帮我监测所有国家的汇率变化,看看没有实现实时汇率投资建议功能的可能 (〃 ̄︶ ̄) 。