数据采集可以根据我们需要采集的数据类型分为不同的方式,目前主要有下面几种:传感器采集、爬虫、录入、导入、接口等。
传感器监采集数据,是指通过传感器进行数据采集,现在有一个应用比较广词:物联网。通过温湿度传感器、气体传感器、视频传感器等外部硬件设备与系统进行交互,将通过外部传感器监测到的数据传送到系统中进行采集使用。
第二种是指针对网页上的数据,可以事先编写好针对数据源的网络爬虫程序,在设置好数据源后通过此前编写的爬虫程序有目标性地抓取数据。
第三种是将已有的数据录入至系统中。
第四种方式是将数据进行批量结构化处理后通过开发导入工具将数据导入到系统中。
第五种方式则是利用API接口将其他系统中的数据采集到本系统中。
二、大数据技术的数据采集
(1)离线采集:
工具:ETL;
在数据仓库的语境下,ETL基本上就是数据采集的代表,包括数据的提取(Extract)、转换(Transform)和加载(Load)。在转换的过程中,需要根据具体的业务场景对数据进行针对性地调整处理,例如进行非法数据监测与过滤、格式转换与数据规范化、数据替换、保证数据完整性等。
(2)实时采集:
工具:Flume/Kafka;
进行实时数据采集,一般来说,使用在流处理的业务场景,比如,可以用来记录数据源执行的各种操作活动,如针对网络监控的流量管理、金融应用的股票记账和 web服务器记录的用户访问行为。在进行流处理的场景中,数据采集会成为Kafka的消费者,会如同一座水坝拦截住上游的数据,之后会根据业务场景的需要做相应的处理(例如去重、去噪、中间计算等),然后再将得到的数据按需求存储起来。整个过程有些像传统的ETL,但不同的是,它采用的是流式的处理方式,而不是定时的批处理Job,这些工具均采用分布式架构,能满足每秒数百MB的日志数据采集和传输需求
(3)互联网采集:
工具:Crawler, DPI等;
Scribe是一款由Facebook开发的数据(日志)采集系统。是一种网络机器人,也被人们叫做网页蜘蛛,是一种依照一定的规则,可以自动地采集互联网数据信息的程序脚本,它可以支持图片、音频、视频等文件或附件的采集。
除了采集网络中包含的内容之外,还可以通过DPI或DFI等带宽管理技术用以进行网络流量的采集。
(4)其他数据采集方法
对于企业在生产经营过程中产生的客户数据,财务数据等保密性要求较高的数据,可以通过与数据技术服务商合作,使用特定系统接口等相关方式采集数据。比如八度云计算的数据BDSaaS,无论是数据采集技术、BI数据分析,还是数据的安全性和保密性,都做得很好。
随着数据采集的数据量越来越大时,提取出来的有用数据也必然更多。因此,需要优化数据处理平台,才能够保证数据分析结果的有效性,助力企业实现数据驱动。
三、软件系统的数据采集方法
(1)软件接口方式
各个软件厂商提供数据接口,实现数据采集汇聚。
实现过程:
· 协调多方软件厂商工程师到场,了解所有系统业务流程以及数据库相关的表结构设计等,细节推敲,确定可行性方案;
· 编码
· 测试、调试阶段
· 交付使用
接口对接方式的数据可靠性与价值较高,一般不存在数据重复的情况;数据通过接口实时传输,满足数据实时性的要求。
接口对接方式的缺点是接口开发费用高;协调各个软件厂商,协调难度大、投入能力大;扩展性不高,如:由于业务需要各软件系统开发出新的业务模块,其和大数据平台之间的数据接口也需做相应修改和变动,甚至要推翻以前的所有数据接口编码,工作量大、耗时长。
(2)开放数据库方式
实现数据的采集汇聚,开放数据库是最直接的一种方式。
两个系统分别有各自的数据库,同类型的数据库之间是比较方便的:
1. 如果两个数据库在同一个服务器上,只要用户名设置的没有问题,就可以直接相互访问,需要在from后将其数据库名称及表的架构所有者带上即可。select * from DATABASE1.dbo.table1
2. 如果两个系统的数据库不在一个服务器上,建议采用链接服务器的形式处理,或者使用openset和opendatasource的方式,这个需要对数据库的访问进行外围服务器的配置。
而不同类型的数据库之间的连接就比较麻烦,需要做很多设置才能生效,这里不做详细说明。
开放数据库方式可以直接从目标数据库中获取需要的数据,准确性高,实时性也能得到保证,是最直接、便捷的一种方式。
但开放数据库方式也需要协调各个软件厂商开放数据库,难度大;一个平台如果同时连接多个软件厂商的数据库,并实时获取数据,这对平台性能也是巨大挑战。不过,出于安全性考虑,软件厂商一般不会开放自己的数据库。
(3)基于底层数据交换的数据直接采集方式
通过获取软件系统的底层数据交换、软件客户端和数据库之间的网络流量包,基于底层IO请求与网络分析等技术,采集目标软件产生的所有数据,将数据转换与重新结构化,输出到新的数据库,供软件系统调用。
技术特点如下:
1.不需要原软件厂商的配合;
2.可以进行实时数据采集,响应速度达秒级;
3.拥有较强的兼容性,可以采集基于Windows平台各种软件系统数据;
4.可以按照需求,将数据进行结构化处理,用以作为数据挖掘、大数据分析应用的基础;
5.自动创建数据间的相互关联,不仅实施周期短、更加简单高效;
6.支持自动导入历史数据,通过I/O人工智能自动将数据写入目标软件;
7.不仅配置简单、而且实施周期短。
直接进行底层数据交换的采集方式,可以避开与软件厂商的依赖。此外,直接从软件的系统中采集数据,可以精准地获取实时数据,结合上自动创建的数据关联,结构化的数据输出,使得整个过程安全、高效。