一般数据仓库是基于维度建模,主要使用星型模型。 1.维度表:一般是对事实的描述信息。 每一张维表对应现实世界中的一个对象或者概念。 例如:用户、商品、日期、地区等。 维表的特征: 维表的范围很宽(具有多个属性、列比较多) 跟事实表相比,行数相对较小:通常<10万条 内容相对固定:编码表 2.事实表:分为事务型事实表(每个事务或事件为单位,一旦产生就固定)和周期型事实表(不会保留所有数据,只保留固定时间间隔的数据,比如每天、每月销售额)以及累积性事实表(累积型快照事实表用于跟踪业务事实的变化,比如订单的状态变化情况)。 如果需要后面状态还会改变的就是周期型事实表,一旦确定了,就是事务性事实表。 事实表中的每行数据代表一个业务事件(下单、支付、退款、评价等)。 “事实”这个术语表示的是业务事件的度量值(可统计次数、个数、金额等),例如,订单事件中的下单金额。 每一个事实表的行包括:具有可加性的数值型的度量值、与维表相连接的外键、通常具有两个和两个以上的外键、外键之间表示维表之间多对多的关系。 事实表的特征: 非常的大 内容相对的窄:列数较少 经常发生变化,每天会新增加很多。 对于不同的表我们使用不同的同步策略:包括全量表,增量表,新增及变化,拉链表。 日志表:(商品点击,商品详情,商品详情页表,广告表,错误日志表,消息通知表等) 1.商品点击:用户的基本信息字段,动作,商品id,种类等。 2.商品详情页:入口,上一页面来源,商品id,加载时间,种类。 3.广告表:入口,内容,行为,展示风格等。 4.错误日志:错误详情 5.消息通知表:通知类型,展示时间,通知内容等 这些记录性质的,都使用每日增量。 业务表:(购物车,评分,评论,订单表,订单详情表,退货表,用户表,商家表,商品分类表(一级,二级,三级),支付流水,物流信息等) 1.购物车详情:用户id,商品id,商品价格,商家id,商品型号,商品分类等。 同步策略:这属于周期型事实表,因为它可能会随时改变,所以得用每日新增及变化。 2.评分表:评分时间,评分用户,评分商品,分数等。 同步策略:这是事务性事实表,一般可以用每日增量就可以了,因为评论只能增加,不能修改。 3.评论表:评论时间,评论用户,评论商品,评论内容。 同步策略:这个跟评分差不多,用每日新增。 4.订单表:订单状态,订单编号,订单金额,支付方式,支付流水,创建时间等 同步策略:因为订单的状态会随时发生改变,比如下单,支付,商家发货,用户收到货,确认收货,等这一系列的状态会比较长,然后订单也比较多。所以,要做历史快照信息的话,最好使用拉链表。 5.订单详情表:订单编号,订单号,用户id,商品名称,商品价格,商品数量,创建时间等。 6.用户表:用户id,性别,等级,vip,注册时间等等。 同步策略:因为表不是很大,每次做全量表。 7.商家表:商家id,商家地址,商家规模等级,商家注册时间,商家分类信息。 同步策略:每次做每日全量。 总结: 1.实体表,不大,就可以做每日全量。 2.对于维度表,比如说商品分类,这种不是很大,也可以做每日全量,有一些不太会发生改变的维度,就可以固定保存一份值,比如说:地区,种族等。 3.像事务型事实表,比如说交易流水,操作日志,出库信息,这种每日比较大,且需要历史数据的,就根据时间做每日新增,可以利用分区表,每日做分区存储。 4.像周期型事实表的同步策略,比如订单表,有周期性变化,需要反应不同时间点的状态的,就需要做拉链表。记录每条信息的生命周期,一旦一条记录的生命周期结束,就开始下一条新的记录。并把当前的日期放生效开始日期。