汪荣荣
同济大学软件学院,上海 201804
分类信息又称分类广告,它是WEB2.0的衍生物,是新一代互联网应用模式。日常在电视、报刊上所看到的广告,往往是被强加给观众和读者的,这类广告称为被动广告。而人们主动去查询招聘、租房、旅游等方面的信息,对这些信息,称它为主动广告,也即是本文所说的分类信息。分类信息的崛起,很好的弥补了传统分类广告的不足。它不仅信息量大,而且信息随时在线。更重要的是利用分类搜索,可以保证用户在任何时间、任何地点,都能非常方便快捷的查询。它也以内容编排精细化、及时、空间无限等特质,在大众生活及商务活动中备受关注和喜欢。
1)面向主题(Subject-Oriented):所谓主题是一个抽象的概念,是在较高层次上将企业信息系统中的数据综合、归类并进行分析利用的抽象。
2)集成性(Integrated):数据仓库的数据由于不是面向应用,所以并不关心细节数据,而是从原有的数据库中抽取出来的,并经过统一和综合,再进入数据仓库中。
3)稳定性(Non-Volatile):数据仓库的数据主要供企业决策分析之用,主要涉及的数据操作时数据查询,一般情况下并不进行修改操作。
4)时间变异性(Time-Variant):在数据仓库中,数据记录总含有一个时间属性,仓库中记录了数据随时间变化的历史。
1)数据源。是数据仓库系统的基础,是整个系统的源泉。
2)数据的存储与管理。是整个数据仓库系统的核心。数据仓库的真正关键是数据的存储与管理。数据仓库的组织管理方式决定了它有别于传统数据库,同时也决定了其对外部数据的表现形式。针对现有各业务系统的数据,进行抽取、清理、并有效集成,按照主题进行组织。该过程是通过ETL Server将数据源中的操作型数据经过必要的转换,重组导入数据仓库。
3)前段工具。主要包括各种报表工具、查询工具、数据分析工具、数据挖掘工具以及各种基于数据仓库或数据集市的应用开发工具。其中,数据分析工具主要针对OLAP服务器;报表工具、数据挖掘工具主要针对数据仓库。
4)数据用户。即历史数据等报表的使用者,一般为企业决策者。
ETL指的是数据抽取、数据转换与数据加载。
1)数据抽取。它完成从原有操作型数据库中选择与数据仓库主体域相关的细节数据抽取到数据仓库中。同时,数据抽取还要考虑源数据环境和ETL开发环境的接口问题,不同的业务系统有不同的平台,相应地采用不同的数据抽取接口,一般应根据实际情况选择可靠合适的源数据接口。比较典型的源数据接口有数据库接口和文件接口。
2)数据转换。数据仓库的源数据之间往往出现不一致的字段长、不一致的赋值等问题。数据转换负责将数据名称和格式进行统一,同时对不存在的数据赋缺省值,创建新的数据逻辑视图。数据转换的目标是将每个字段转换为符合数据仓库标准的数据格式。
3)数据加载。数据加载有插入、增加和刷新3种模式。插入式加载对目标表进行增量操作;增加式加载需要对目标表同时做更新及插入操作,根据主键,对于已有的记录进行更新,对于不存在的记录做插入操作。
本文分析的是某跨国公司需要将其多个国家不同平台的分类信息数据整合到统一格式的数据仓库系统。具体这些信息包括广告、用户、回复、目录、地址、支付、收费项目、网站等。它们的历史数据为决策者们提供决策依据。
1)广告:用户免费将广告发布到其所在地的分类信息平台。这些广告通常包括租房信息、工作招聘信息、闲置物品二手交易信息等。
2)用户:即广告投放者、回复广告用户以及注册用户。在该分类信息应用中,非注册用户也可以投放以及回复广告。
3)回复:当网页浏览者对广告感兴趣时,可以通过回复广告即发邮件给投放者与对方联系。
4)目录:广告的类别,又划分为多级子目录。根目录如工作、房屋、汽车、宠物、服务等,在工作的根目录下又细分为公寓出租、短期出租、旅游出租等。广告被放在最底目录下。
5)地址:分类信息一般为同城交易,因此广告也只对同一城市或者地区有效。这样,广告投放者所在的地址信息如国家、城市甚至地区就变得至关重要。
6)收费项目:包括延长广告有效期(默认免费广告有效期为3个月)、将广告靠前排放、彩色个性投放广告等。
本系统采用E-L-T,即先将源数据从各个国家的操作型数据库中抽取出来,再将这些数据直接装载到数据仓库平台的DBMS- Teradata,最后在Teradata中对数据进行清洗转换。由于Teradata有并行处理兼线性增长的数据处理功能,这样设计的成本与性能要强于传统的抽取-转换-装载流程。ETL的具体过程分为以下几步:
1)使用Shell脚本将需要的字段从源操作型数据库的表中选取出来,该步骤将抽取得到的数据生成由分割符和源数据组成的FLAT FILE。每次从不同的源数据平台上抽取数据时,只需编写对应的SELECT SQL语句;
2)使用Ab-initio将上一步骤中生成的FLAT FILE中的源数据载入Teradata的对应表中。在该步骤中,需要编写数据格式转换DML文件,该文件主要告诉Ab-initio如何读取FLAT FILE中的分割符,以及如何将源数据匹配地存入Teradata中对应的字段;
3)在上一步骤中,Teradata表中得到的数据是未经任何清洗和转换的临时表数据。在数据转换这一步骤里又分为两步:INSERT SQL以及UPSERT SQL。INSERT SQL主要完成数据转换工作,一般它需要左联接不经常变更的存放网站信息、地理信息、目录信息的一些维度表,并作必要的数据清理和转换工作,再讲这些结果存入数据仓库的临时表中。UPSERT SQL实际又分为UPDATE SQL和INSERT SQL,即把上一步中INSERT SQL最后所得的临时表数据导入最终表中。该最终表实际为最终数据用户使用的表,它已包含历史数据和其他国家平台的数据。也即UPSERT SQL完成的是数据仓库中的数据集成操作。