大数据项目之电商数仓

2024-03-12 01:10
文章标签 数据 项目 商数 之电

本文主要是介绍大数据项目之电商数仓,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

大数据项目之电商数仓(用户行为数据采集)数据仓库简介

1.什么是数据库

数据库(Database)是按照数据结构来组织、存储和管理数据的建立在计算机存储设备上的仓库。数据库是长期存储在计算机内、有组织的、可共享的数据集合。数据库中二点数据指的是以一定的数据模型组织、描述和储存在一起、具有尽可能小的冗余度、较高的数据独立性和易扩展性的特点并可在一定范围内为多个用户共享。
常用的数据库有:Mysql、ORACLE、SQLServer等。作用不一样,数据库是用来支撑业务的,需要响应速度特别快,没有延时,查询起来都是一条条查询,把相关的数据全部得到,适合用这种关系型数据库。数据仓库用来主要用来支撑分析的。
**此时设计到一个问题。什么是业务**?
业务就是:系统会和自己用户打交道的系统,为业务系统。例如滴滴打车,乘客(叫车,上车,确认上车,确认到达,好评),司机,自己公司的员工,公司就会开发出配套的it系统。公司的一个员工:考勤系统、财务系统,都需要有对应的数据库做支持    

OLAP和OLTP的区别:
OLAP(On-line Analytical Processing)联系分析处理,也称为面向交易的处理过程,其基本特征是前台接收的用户数据可以立即传送到计算中心进行处理,并在很短的时间内给出处理结果,是对用户操作快速响应的方式之一。应用在数据仓库,使用对象是决策者。OLAP系统强调的数据分析,响应速度要求没那么高。
OLTP(On-line Transaction Processing)联机事务处理,它使分析人员能够迅速、一致、交互地从各个方面观察信息,以达到深入理解数据的目的。它具有FASMI(Fast Analysis of Shared Multidimensional Information),即共享多维信息的快速分析的特征。主要应用是传统关系型数据库。OLTP系统强调的是内存效率,实时性比较高。
以下是OLAP和OLTP的OLTP的比较:
在这里插入图片描述

2.什么是数据仓库?

数据仓库是决策支持系统(dss)和联机分析应用数据源的结构化数据环境。数据仓库研究和解决从数据库中获取信息的问题。

## 2.1数仓的特征

数据仓库的特征在于面向主题、集成性、稳定性和时变性,用于支持管理决策。数据仓库存在的意义在于对企业的所有数据进行汇总,为企业各个部分提供统一的、规范的数据出口。

面向主题:数据仓库中的数据是按照一定的主题域进行组织的,每一个主题对应一个宏观的分析领域。数据仓库排除对于决策无用的数据,提供特定主题的简明视图。
面向主题(一种看待问题的角度):用户分析,财务分析,销售分析,订单分析....。主题不一样,需要的分析指标不一样,不同的指标的数据(表和字段)和分析的指标就不一样。
集成的:企业内不同业务部门数据的完整集成。对于企业内所有数据的集成要注意一致性(假设财务系统中对于性别F/M,而OA系统对性别使用A/B,这就是数据不一致,如果想搭建企业级的数据仓库,需要数据具有一致性)。
稳定的:数仓里不存在数据的更新和删除操作。
变化的:数仓里会完整的记录某个对象在一段时期内的变化情况

数据的一致性怎么理解?
在数据仓库里面有各种数据的来源,最终我们创建数据仓库需要把这些不同的数据整合,而很有可能这些数据不一致,例如:业务系统数据库在建模的时候,会采用关系建模,遵循三范式,减少冗余,尽量保证数据的一致性。
现实情况中假设有500张表,10张表都有性别这个字段,但是因为开发java后台的时候,有可能是多个团队,多个阶段,多个项目组来实现…数据仓库需要把这些数据全部导入,需要做一致性的处理。
数据仓库的目标是实现集成、稳定、反映历史变化有组织有结构的存储数据的集合。

第一章 数据仓库概念

在这里插入图片描述

数据仓库概念:数据仓库(DataWarehouse),是为企业所有决策制定过程,提供所有系统数据支持的战略集合。通过对数据仓库中数据的分析,可以帮助企业,改进业务流程,控制成本、提高产品质量等。

数据仓库,并不是数据的最终目的地,而是为了数据最终的目的地做好准备。这些准备包括对数据的:清洗,转义,分类,重组,合并,拆分,统计等等。

日志数据:通过sdk(softdevelopmentkit)做数据采集(js采集,java代码),所谓sdk就是我们开发的一些工具,采集用户和前端交互的数据(点赞、浏览、点击、广告、错误日志),采集方式是通过监控事件的方式,采集之后对数据进行加密,压缩,转码,采用实时发送,定时发送,还可能根据网络情况发送,需要发送给后端日志服务器。

业务数据:记录在数据库中的数据,这些数据基于事务机制记录每个业务过程的数据。
去企业,大部分情况是做报表(分析各种指标),画像,推荐,机器学习都需要掌握算法,风控:风险控制,金融行业–>银行,最重要的是看你有没有还款能力。
大数据里面做的各种菜,当成我们大数据的各种产品,数仓的作用就是相当于这个牛逼的惨痛的后厨,采购各种原材料,分类和加工,买回来的菜清洗一下,小虫,农药清理干净

穿插两个面试题
1.数据来源?
日志采集系统,写日志,写入到文件里面去,xxx.long,js前端埋点,前端工程师写一些js代码,js代码会捕捉各种事件(各种行为),把这些事件按照对应的数据格式以一条条日志的方式,发送给后台。sdk,java对面,主要用在收集app上…
业务系统的数据:写入到mysql的数据

2.数据仓库为什么业务支撑?
几乎所有做大数据的公司都会做报表。用户画像,精准化下营销,推荐系统的基础,最重要的工作就是给用户打标签,京东刻画用户标签有5000多个
标签分为人口属性标签,年龄,学历,家庭信息… 统计类,某个人每天上网时长。时间分布等等
挖掘类标签:–>算法,有没有钱(有钱人,普通人,屌丝,薅羊毛)
风控:判断出你这个人有没有信用,会不会违约,会不会按时还钱

第二章 项目需求及架构设计

2.1项目需求分析

项目需求

用户行为数据采集平台搭建
业务数据采集平台搭建
数据仓库维度建模分析,用户、流量、会员、商品、销售、地区、活动等电商核心主题,统计的报表指标近100个。完全对比中型公司采用即席查询工具,随机进行指标分析对集群性能进行监控,发生异常需要报警。

二、思考题
项目技术如何选型?
我们在进行技术选项的时候,尽量选择成熟的技术,没有必须追求最新的技术。主要考虑的因素有:数据量的大小、业务需求、行业内经验、技术成熟度、开发维护成本、总成本预算。

系统数据流程设计

我们这里可以使用kafka也可以使用多个flume。那我们为什么要使用kafka呢?
1.我们的业务有实时的业务,spark可以和flume做整合的
2.削峰平谷,处理一些高并发的场景
3.解耦,适合这种多场景对数据的多次使用。
埋点的数据是如何被采集的?
采集的都是用户的行为,写一些代码(js,sdk),往后台发送,实时发送,每隔一段时间发送一个数据包(加密、压缩、转码,一次性发送多条)
框架版本如何选型?
版本分为 apache、cdh、hdp

2020年2月,CDH不再免费,Cloudera把cdh和hdp整合为cdp,针对节点收费,收费的标准是一万美元一个节点,这个就会使后续越来越多的公司使用apache的版本。hdp用的非常少,稳定性差,并不建议使用
具体版本型号

hive的版本是2.3,后续我们需要数据的质量监控。不建议使用最新版本问题。因为最新版本有一些未知的坑。兼容性。一般来说,选比较新的常用版本。
服务器使用物理机还是云主机?
一般来说,用云主机的好处是,运维方便,不需要请运维,使用起来可以根据自己的需求来定,公司起步阶段,对服务器这一块的数据量,访问都比较少,需求有限,选一个低配置的。数据不会丢失,安全性会好一点。
但是,一般大厂都睡考虑自己搞物理服务器。中小型公司,会更喜欢云主机。但是一些不差钱的金融公司,为了方便,会选择云主机,大规模的买。

物理机又分为哪几种呢?
物理机:分为刀片服务器、塔式服务器,其实本质就是电脑主机,一直得通电,一直得运行,稳定性要求特别好,扩展性也特别好,方便我们加配置(多个cpu,多块硬盘,多个内存条),配置和我们得平常用的有点不一样,i3,i5,i7,i9
例:华为2288H V5服务器主机 25盘 2U机架式,2颗金牌5120 28核2.2|900W2128G内存|181.2T 10K|SR430,需要把这些服务器放在机房,需要人管理这些服务器,这样的人叫运维。
中国的互联网企业,有两个流派,分为阿里流和腾讯流
京东–腾讯系、拼多多–腾讯系、美团–腾讯系
优酷–阿里系、微博–阿里系

如何确认集群规模?
根据日志文件的大小(一般每条日志的大小在0.5k-2k)。假设,每台服务器8T磁盘,128G内存。现在我们这个app每天日活跃用户100万,每人一天平均100条:100万100条=1亿条。然后假设每条日志1k左右,每天1一条的话:100000000/1024/1024=约100G,半年内不扩容服务器来算:100G180天=约18T 。然后假设保存3副本:18T*3=54T。预留20%~30%Buf=54T/0.7=77T。这时候就需要10个服务器。

如果考虑数仓分层?数据采用压缩?需要重新再计算
数仓分层是数据仓库设计中十分重要的一个环节,优秀的分层设计能够让整个数据体系更容易理解和使用。对于日志文件而言,每条日志大小在0.5k-2k之间,大小和数据的字段多少有关,取平均1k比较合理。数据仓库建模,数据分层,备份,数据量会增加2-3倍,如果这些数据还考虑一些压缩的格式,就会把数据存储的空间变小,变成之前的1/5-1/20。性能和成本之间找一个平衡。业务数据占日志的占比一般来说2-10%

这篇关于大数据项目之电商数仓的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/799681

相关文章

大模型研发全揭秘:客服工单数据标注的完整攻略

在人工智能(AI)领域,数据标注是模型训练过程中至关重要的一步。无论你是新手还是有经验的从业者,掌握数据标注的技术细节和常见问题的解决方案都能为你的AI项目增添不少价值。在电信运营商的客服系统中,工单数据是客户问题和解决方案的重要记录。通过对这些工单数据进行有效标注,不仅能够帮助提升客服自动化系统的智能化水平,还能优化客户服务流程,提高客户满意度。本文将详细介绍如何在电信运营商客服工单的背景下进行

基于MySQL Binlog的Elasticsearch数据同步实践

一、为什么要做 随着马蜂窝的逐渐发展,我们的业务数据越来越多,单纯使用 MySQL 已经不能满足我们的数据查询需求,例如对于商品、订单等数据的多维度检索。 使用 Elasticsearch 存储业务数据可以很好的解决我们业务中的搜索需求。而数据进行异构存储后,随之而来的就是数据同步的问题。 二、现有方法及问题 对于数据同步,我们目前的解决方案是建立数据中间表。把需要检索的业务数据,统一放到一张M

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

异构存储(冷热数据分离)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。 异构存储Shell操作 (1)查看当前有哪些存储策略可以用 [lytfly@hadoop102 hadoop-3.1.4]$ hdfs storagepolicies -listPolicies (2)为指定路径(数据存储目录)设置指定的存储策略 hdfs storagepolicies -setStoragePo

Hadoop集群数据均衡之磁盘间数据均衡

生产环境,由于硬盘空间不足,往往需要增加一块硬盘。刚加载的硬盘没有数据时,可以执行磁盘数据均衡命令。(Hadoop3.x新特性) plan后面带的节点的名字必须是已经存在的,并且是需要均衡的节点。 如果节点不存在,会报如下错误: 如果节点只有一个硬盘的话,不会创建均衡计划: (1)生成均衡计划 hdfs diskbalancer -plan hadoop102 (2)执行均衡计划 hd

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定