热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于COOKIE的点击流数据仓库构建思路(一)

网站数据是企业数据的重要组成部分,在大型企业中,数据通常以关系型数据仓库进行存储。当然,部分企业也在向基于Hadoop等开源框架的分布式非关系型数据仓库结构转变,但这仍只

网站数据是企业数据的重要组成部分,在大型企业中,数据通常以关系型数据仓库进行存储。当然,部分企业也在向基于Hadoop等开源框架的分布式非关系型数据仓库结构转变,但这仍只是少数。大部分公司仍然是关系型数据仓库(RDB)居于主流。接下来的三篇文章会介绍三种基于COOKIE的点击流数据仓库构建思路。本篇是第一篇,基于Adobe Sitecatalyst底层数据的数据仓库作为原型。

在用该工具的人都知道,在Marketing Cloud中有个DataWarehouse的工具,该工具的作用类似于Excel中的数据透视表,可以选择任意的纬度、量度,配合数据粒度、区段等进行数据输出。但实际上,这个工具还只是表层,底层有一套完整的数据仓库系统支持。

在介绍底层系统之前,我先假设这套工具的数据仓库就是DataFeed中的数据结构。(实际上我问过Adobe的研发和服务商,他们并不清楚Omniture上层的数据仓库结构,或许没有,不过这并不妨碍我们对本文的理解)

我们先看下DataFeed数据结构,由三部分组成:

格式化后的原始数据。数据是在日志基础上,经过Omniture元数据和清洗规则的控制后生成的数据,里面包括一张(或几张)压缩后BigTable。这些BigTable是数据仓库底层的事实表,里面包含了Adobe Sitecatalyst所有指标,共476个纬度和量度。

如下是其中的一条记录:

zh-cn 0 0 0 0 0 0 JAVA-1.2-AN 0 2 U 0 CNY 2 0.000000000000 0 460028469559100 1 2013-08-13 00:00:37 125.58.234.85 0 4.1.1 中国移动 2.2.7 860308028886394 WIFI 0bc916b5-382c-46cd-866a-64e2ee0ee8af A512 ac:f7:f3:44:9d:6e Android 206,208,120,121,122,123,124,125,127,128,135 0 1376323237 daqing chn 0 21 110142 2955631645905715200 5530175458409740267 1 1376323237 U 1 125.58.234.85 U 0 27 0 0 0 4035331 1 1 0 0 0 Y 0 0 U CNY 1376323237 460028469559100 4.1.1 中国移动 2.2.7 860308028886394 WIFI 0bc916b5-382c-46cd-866a-64e2ee0ee8af A512 ac:f7:f3:44:9d:6e Android 206,208,120,121,122,123,124,125,127,128,135 U 0 Y ;;;;;103=::hash::0|104=::hash::0 0 13/7/2013 0:0:36 2 -480 161611420 1889629931 0 ::hash::0 0 1 6 0 Y 0 0 0 ss 0 720x1280 www460.da2.omniture.com N 13/7/2013 0:0:36 2 -480 Mozilla/5.0 (Linux; U; Android 4.1.1; zh-cn; MI 2 Build/JRO03L) ????/2.2.7 2859193726 202091 gome-app 0 0 0 0 0 0 N 0 0 1 1 0 1376323237 1 1  

上面的记录中,数据粒度是每条ServerCall,可以理解为每一次触发的原始记录,因此是最细的原始数据(当然里面的没一段代码都有特定的含义,在此不做解释,大家需要理解的是,所有数据都在这一张表中)。

LookupTable。查找表将每次的固定参数值以数值型的类型对应出实际值,里面是数据仓库中的纬度表,包括浏览器、颜色、JAVA类型、搜索类型等共13个文件,另外有个时间纬度表需要单独下载。

比如下面是一个名为Connection_Type查找表的数据:

QQ图片20131216104057

Connection_Type Name0 Not Specified 1 Modem 2 LAN/Wifi 3 Unknown 4 Mobile Carrier 信息汇总文件。txt格式,里面包括当天日志的所有文件名、记录数、MD5等信息。

通过上面的基本分析,我们可以发现,Adobe的数据仓库模型属于典型的数据仓库结构——围绕一个事实表,延伸到不同纬度表的星型模型。

为什么他是星型结构而不是雪花型或其他?我猜测有以下几种原因:

该数据仓库是服务于Sitecatalyst报表系统和前台的DataWarehouse系统,由于这两个系统中,很多报表中的纬度、量度都可以让用户自定义,因此需要有一个底层的BigTable来满足用户任意“拖拽”和自定义的需求。 Adobe Sitecatalyst中超过200个字段是自定义参数,具体定义需要客户根据丰富的场景自定义,在这些eVar、Event和Prop被用户自定义前,Adobe也不清楚用户会如何使用这些变量,因此也无法根据纬度和量度设计数据仓库模型结构。 由于流量数据的特殊性,同一个COOKIEid在不同访问时间下,其属性特征很可能会发生改变,而纬度表的意义在于其固定对应关系,流量数据关系不像是交易数据或会员数据中具有非常稳定的对应特征,因此在流量数据中无法使用,也就没必要做过多的拆分。比如同一个COOKIEid上次访问的IP可能是北京,下次再回来可能变成广州;用户分辨率上次是1024*768,下次来可能是1280*800,所有的纬度属性都是可变的,更不用说事实属性。 用DataFeed做数据仓库的公司,可能都有自己的灵活需求,让用户自己根据底层大表数据来做数据仓库模型,以及后期的ETL可能会更适合。

经过以上分析,我们可以得出这样一种数据仓库模型。结构如下:

这种数据仓库结构的好处在于底层数据表结构一致,且字段完整,在做上层ETL时方便程序设计,并且业务在做海量数据抽取时减少SQL复杂程度和出错几率,便于业务数据抽取操作。当然,坏处在于该表如果数据量过大,会导致每次更新数据库压力大,数据响应及时性变差;并且由于数据冗余过多,储存效率低。

实际上,我们并不需要过于担心这种数据仓库模型的好坏,关键在于适合企业上层的数据集市、数据挖掘、EDW的整合、报表的构建就好。没有一种数据仓库模型是100%适合任何场合的,适合公司实际情况的就是最好的。

 

推荐阅读
  • 深入解析:存储技术的演变与发展
    本文探讨了从单机文件系统到分布式文件系统的存储技术发展过程,详细解释了各种存储模型及其特点。 ... [详细]
  • 从理想主义者的内心深处萌发的技术信仰,推动了云原生技术在全球范围内的快速发展。本文将带你深入了解阿里巴巴在开源领域的贡献与成就。 ... [详细]
  • 【MySQL】frm文件解析
    官网说明:http:dev.mysql.comdocinternalsenfrm-file-format.htmlfrm是MySQL表结构定义文件,通常frm文件是不会损坏的,但是如果 ... [详细]
  • 在Android应用开发过程中,开发者经常遇到诸如CPU使用率过高、内存泄漏等问题。本文将介绍几种常用的命令及其应用场景,帮助开发者有效定位并解决问题。 ... [详细]
  • H5技术实现经典游戏《贪吃蛇》
    本文将分享一个使用HTML5技术实现的经典小游戏——《贪吃蛇》。通过H5技术,我们将探讨如何构建这款游戏的两种主要玩法:积分闯关和无尽模式。 ... [详细]
  • 本文详细介绍了如何搭建一个高可用的MongoDB集群,包括环境准备、用户配置、目录创建、MongoDB安装、配置文件设置、集群组件部署等步骤。特别关注分片、读写分离及负载均衡的实现。 ... [详细]
  • 如何在U8系统中连接服务器并获取数据
    本文介绍了如何在U8系统中通过不同的方法连接服务器并获取数据,包括使用MySQL客户端连接实例的方法,如非SSL连接和SSL连接,并提供了详细的步骤和注意事项。 ... [详细]
  • 一关于t1表和testtb的索引设计二把主键放到二级索引的后面,会否占据更多的物理空间?三InnoDB的主键该如何选择,业务ID和自增 ... [详细]
  • 【转】强大的矩阵奇异值分解(SVD)及其应用
    在工程实践中,经常要对大矩阵进行计算,除了使用分布式处理方法以外,就是通过理论方法,对矩阵降维。一下文章,我在 ... [详细]
  • Python学习day3网络基础之网络协议篇
    一、互联网协议连接两台计算机之间的Internet实际上就是一系列统一的标准,这些标准称之为互联网协议,互联网的本质就是一系列网络协议。二、为什么要有互联网协议互联网协议就相当于计 ... [详细]
  • 大数据领域的职业路径与角色解析
    本文将深入探讨大数据领域的各种职业和工作角色,帮助读者全面了解大数据行业的需求、市场趋势,以及从入门到高级专业人士的职业发展路径。文章还将详细介绍不同公司对大数据人才的需求,并解析各岗位的具体职责、所需技能和经验。 ... [详细]
  • 本文整理了关于Sia去中心化存储平台的重要网址和资源,旨在为研究者和用户提供全面的信息支持。 ... [详细]
  • 8个IDC大数据基础定义解析丨IDC
    本文针对IDC数据行业相关名词术语进行解析,分为4组相关概念,希望大家读完 ... [详细]
  • 近年来,区块链技术备受关注,其中比特币(Bitcoin)功不可没。尽管数字货币的概念早在上个世纪就被提出,但直到比特币的诞生,这一概念才真正落地生根。本文将详细探讨比特币、以太坊和超级账本(Hyperledger)的核心技术和应用场景。 ... [详细]
  • Java EE 平台集成了多种服务、API 和协议,旨在支持基于 Web 的多层应用程序开发。本文将详细介绍 Java EE 中的 13 种关键技术规范,帮助开发者更好地理解和应用这些技术。 ... [详细]
author-avatar
廖小廖童鞋
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有