一、基本方法
数据采集根据采集数据的类型可以分为不同的方式,主要方式有:传感器采集、爬虫、录入、导入、接口等。
传感器监测数据:通过传感器,即现在应用比较广的一个词:物联网。通过温湿度传感器、气体传感器、视频传感器等外部硬件设备与系统进行通信,将传感器监测到的数据传至系统中进行采集使用。
第二种是新闻资讯类互联网数据,可以通过编写网络爬虫,设置好数据源后进行有目标性地爬取数据。
第三种通过使用系统录入页面将已有的数据录入至系统中。
第四种方式是针对已有的批量的结构化数据可以开发导入工具将其导入系统中。
第五种方式,可以通过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. 配置简单、实施周期短。
基于底层数据交换的数据直接采集方式,摆脱对软件厂商的依赖,不需要软件厂商配合,不仅需要投入大量的时间、精力与资金,不用担心系统开发团队解体、源代码丢失等原因导致系统数据采集成死局。
直接从各式各样的软件系统中开采数据,源源不断获取精准、实时的数据,自动建立数据关联,输出利用率极高的结构化数据,让不同系统的数据源有序、安全、可控的联动流通,提供决策支持、提高运营效率、产生经济价值。