Smart Community(1)之设计规范

news2024/11/24 7:08:36

通过前面大数据开发相关知识的学习,准备做一个项目进行练习---我给他起了一个响亮的名字:基于HadoopHA的智慧社区服务平台

设计规范:

做一个项目之前肯定要先规定一些开发过程中的设计规范

(一)数据埋点规范:

数据埋点:是一种在软件、应用程序或网站中插入代码的技术,用于收集和跟踪用户行为和事件的数据。通过在关键位置插入代码片段(埋点),可以记录用户在应用程序中的操作和交互,以及其他有关系统和用户行为的信息。

(1)确保灵活、高可扩展

(2)兼顾后续的处理、分析的方便性

(3)确保可跟踪、数据正确性

(4)业务数据打通

(5)考虑不同C端产品特性与用户体验

(6)确保性能、敏感数据安全性

(二)数仓层次设计规范:

 ODS层:是原始数据层,是最接近数据源的一层,将数据源中的数据经过ETL之后装入ODS层,ODS的数据结构一般与数据来源保持一致,便于减少ETL工作的复杂性。

DWD层:是明细数据层,进行维度建模,该层的表结构和粒度与原始表保持一致,不过对ODS层数据进行清洗、维度退化、脱敏等,最终得到的数据是干净的,完整的,一致的数据。一般采用星型模型,呈现的状态一般为星座模型。 维度建模一般分为四步: 选择业务过程(先选择容易实现的)、 声明粒度(以最低的原子粒度处理数据)、 确认维度(考虑其他维度是否可以被属性化)、 确认事实(确认将那些事实---(指的是度量值,一些具体数据)放入事实表中)。

DWS层:服务数据层,基于DWD层的明细数据,按天轻度汇总成某一个主题域的服务数据,一般是宽表。DWS层统计各个主题对象的当天行为,以及一些业务明细数据,服务于DM(数据集市)层的某个主题。

(三)表命名规范:

英文在不是原意的情况下采用缩写,避免数字开头

能够合理的区分出表所描述的数据域、数据周期等。 命名规范设定:

层次_数据域_修饰/描述_范围/周期

订单相关数据表

dwd层: d_ord_info_d

dws层: s_ord_st_d

维度表(dimension

用户维度: dim_user_d

商品缓慢渐变维表: dim_product_l

ods层

对于ods层表,最好能够区分数据来源,包括在来自什么系统、源数据名称。

eg 从业务系统全量采集订单(loan_order)数据到ods层 业务系统编码: buss 业务系统订单表: loan_order ods层表命名: o_buss_loan_order_d

(四)脚本命名规范:

•ETL脚本名称尽可能和所产出的表同名 •数据采集、 数据推送脚本尽可能标识数据去向

•ETL脚本若产生多个表, 采用对应的数据域和语义描述命名

•Jar包命名以实际的业务处理逻辑语义描述为主,调度任务命名同样尽量以产出表名命名。

eg:

订单ETL过程 从表o_buss_loan_order_d整理数据并且装载到dwd层表d_ord_info_d中。

ETL脚本命名: d_ord_info_d.sh

ETL任务命名: d_ord_info_d 一个ETL脚本产出多个表,比如从商品表中分离出商品维度、厂家维度。

ETL脚本命名: dim_product_mfrs_d.sh

ETL任务名称: dim_product_mfrs_d 采集数据到ods层的表o_buss_loan_order_d imp_o_buss_loan_order_d.sh

数据表dm_ord_trsfm_d推送到BI系统 exp_bi_dm_ord_trsm_d.sh

(五)开发规范:

数仓中MR程序尽可能统一输入参数、输出参数,单个jar程序的功能模块清晰,避免多种处理逻辑写入一个jar包。

每个ETL脚本尽可能产出一张数仓表,方便任务排查,同时也减少数仓表的耦合性。

ETL脚本格式、备注清晰,避免大范围、格式杂乱的脚本,合理利用临时表。

字段列对齐 关键字列对齐

禁止使用Tab, 全部使用4个空格代替

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1015526.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python中异常处理4-4

在Python中的异常处理4-1_棉猴的博客-CSDN博客中提到,在try块中的代码运行时如果出现异常,会自动抛出这个异常。可以通过raise语句手动抛出异常。 1 raise语句手动抛出异常 raise后面跟要抛出的异常类或者异常类的实例,表示手动抛出该异常&…

位图+布隆过滤器+海量数据并查集(它们都是哈希的应用)

一)位图: 首先计算一下存储一下10亿个整形数据,需要多大内存呢,多少个G呢? 2^3010亿,10亿个字节 byte kb mb gb 100000000个字节/1024/1024/10241G 所以10亿个字节就是1G,所以40亿个字节就是4G,也就是10个整…

电脑重装系统之后设置

edge一直处于正在同步设置关闭系统自动更新更改默认安装路径 edge一直处于正在同步设置 解决办法:卸载重新安装 用电脑管家16可以卸载 电脑管家16 链接:https://pan.baidu.com/s/1f5T4uXrumL8Fne9hyvTHcg?pwd0122 提取码:0122 edge 链接&am…

Go Moonbeam:Ai智能写作助手

【产品介绍】 • 名称 Go Moonbeam • 具体描述 Moonbeam是一个人工智能驱动的长篇写作助手。你可以用它创建散文,故事,文章,博客,和其他长形式的内容,可以轻松的将混乱的笔记转换为大纲。同时它…

对象创建和内存分配

对象创建和内存分配 Java中类创建是在平常不过的操作了,但是一个类的创建到底经历 了哪些过程呢? 对象创建 创建方法 使用关键字new一个对象 使用反射机制 User user (User)Class.forName("xxx.xxx.User").newInstance(); User user Us…

Linux开发工具之编译器gcc/g++

gcc/g是编译代码的,gcc/g都可以编译c语言的代码,但是c的代码只能用g来编译 在linux中,只要我们对源文件用gcc/g进行编译,就会生成一个可执行程序a.out,然后我们执行该程序就可得到结果了,下面来细看一下gcc…

深入了解==和equals的区别

1. 浅说和equals的区别 (1)比较的类型 不一样 可以比较基础数据类型和引用类型,比较基础数据类型的数据时比较的是值,比较引用对象时比较的是引用的地址。 equals比较引用类型,默认比较的是两个引用对象的引用地址&a…

Acwing 3302. 表达式求值

Acwing 3302. 表达式求值 题目描述思路讲解代码展示 题目描述 思路讲解 代码展示 #include <iostream> #include <cstring> #include <algorithm> #include <stack> #include <unordered_map>using namespace std;stack<int> num; stack…

redis链接阻塞,导致程序没有响应

目录 一、场景二、原因三、排查1、使用 info client 命令查看redis链接统计情况2、使用 client list 命令查看redis链接信息3、关闭程序&#xff0c;看阻塞的链接是否有所减少4、排查使用 blpop 命令的相关代码 四、解决 一、场景 1、程序在运行一段时间后&#xff0c;会出现没…

【分布式】分布式ID

目录 前言一、雪花算法snowflake1. 组成2. 优缺点3. 时钟回拨怎么解决a. 时钟回拨b. 解决方案 4. 项目中如何使用 二、基于Redis三、基于Zookeeper四、号段模式五、指定步长的自增ID六、UUID参考 六、扩展总结 前言 分布式场景下&#xff0c;一张表可能分散到多个数据结点上。因…

【数据结构】C++实现二叉搜索树

二叉搜索树的概念 二叉搜索树又称为二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有结点的值都小于根结点的值。若它的右子树不为空&#xff0c;则右子树上所有结点的值都大于根结…

问道管理:注册制对涨幅的限制?

注册制作为中国证券商场变革的重中之重&#xff0c;其本质是将发行商场转移到审阅商场&#xff0c;实现商场准入的有效管控。与此同时&#xff0c;注册制关于股票商场的涨幅也有必定的约束。 首先&#xff0c;注册制能够经过严厉的审阅来制约公司发行股票的数量和节奏。传统IP…

Linux 多线程( 进程VS线程 | 线程控制 )

文章目录 Linux进程 VS 线程进程的多个线程共享 进程和线程的关系线程创建 pthread_create获取线程ID pthread_self线程等待 pthread_join终止线程进程分离线程ID及进程地址空间布局 Linux进程 VS 线程 进程是资源分配的基本单位。线程是OS调度的基本单位。 线程共享进程数据…

Michael.W基于Foundry精读Openzeppelin第34期——MerkleProof.sol

Michael.W基于Foundry精读Openzeppelin第34期——MerkleProof.sol 0. 版本0.1 MerkleProof.sol 1. 目标合约2. 代码精读2.1 processProof(bytes32[] memory proof, bytes32 leaf) && processProofCalldata(bytes32[] calldata proof, bytes32 leaf)2.2 verify(bytes32[…

图像处理之频域滤波DFT

摘要&#xff1a;傅里叶变换可以将任何满足相应数学条件的信号转换为不同系数的简单正弦和余弦函数的和。图像信号也是一种信号&#xff0c;只不过是二维离散信号&#xff0c;通过傅里叶变换对图像进行变换可以图像存空域转换为频域进行更多的处理。本文主要简要描述傅里叶变换…

Heap及其应用

目录 堆的相关知识 什么是堆&#xff1f; 堆的性质&#xff1a; 堆的实现&#xff1a; 堆的结构&#xff1a; &#xff08;一&#xff09;堆的插入 向上调整法&#xff1a; 寻找父节点 循环结束条件 代码&#xff1a; &#xff08;二&#xff09;堆的删除 删除根节点…

Huggingface:免费开源AI人工智能API工具平台

| 【产品介绍】 • 名称 Huggingface • 成立/上线时间 2016年 • 具体描述 HuggingFace是一个开源的自然语言处理AI工具平台&#xff0c;它为NLP的开发者和研究者提供了一个简单、快速、高效、可靠的解决方案&#xff0c;让NLP变得更加简…

R绘制箱线图

代码大部分来自boxplot()函数的帮助文件&#xff0c;可以通过阅读帮助文件&#xff0c;调整代码中相应参数看下效果&#xff0c;进而可以理解相应的作用&#xff0c;帮助快速掌握barplot()函数的用法。 语法 Usage(来自帮助文件) barplot(height, ...)## Default S3 method: …

lua环境搭建数据类型

lua作为一门计算机语言&#xff0c;从语法角度个人感觉还是挺简洁的接下来我们从0开始学习lua语言。 1.首先我们需要下载lua开发工具包 在这里我们使用的工具是luadist 下载链接为&#xff1a;https://luadist.org/repository/下载后的压缩包解压后就能用。 2.接下来就是老生…

听GPT 讲Istio源代码--istioctl

在 Istio 项目的 istioctl 目录中&#xff0c;有一些子目录&#xff0c;每个目录都有不同的作用和功能。以下是这些子目录的详细介绍&#xff1a; /pkg: pkg 目录包含了 istioctl 工具的核心代码和库。这些代码和库提供了与 Istio 控制平面交互的功能&#xff0c;例如获取和修改…