- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
🍊最近很多学弟学妹问我,我实习的工作是内容是什么?有没有一些可参考的学习路线?每次我都说是数仓开发,但是很多同学不太了解什么是数据仓库,于是我就写一篇博客,来介绍一下数据仓库,对往期内容感兴趣的小伙伴可以看下面的文章👇:
🍀本篇文章将从初学者的角度,来介绍一下什么是数据仓库,以及数据仓库的理论基础,至于涉及公司业务方面的内容,我就不做介绍。大家看完以下内容可能会有点懵,这很正常,因为理论的记忆需要实践来帮忙,亲手实践过会记忆深刻。
对于企业来说,数据大多都是存放在线上的业务系统中,比如:生产管理系统、销售系统、库存管理系统等,随着业务等进行,数据会源源不断的产生,一般都存储在业务数据库之中,如mysql、orcale中,用来支持业务系统的运行。
但是随着时间的流逝,业务系统中的数据会越来越多,存放在数据库中的数据需要进行分析的时候,会关联很多表、有些表访问次数多、有些表访问次数少,满足不了数据分析的需求。下面给大家看看我常看的几本书:
说到这里就想说一下数据库与数据仓库的区别,数据库的设计一般采用的是ER实体模型,严格要求满足3NF来尽可能减少数据的冗余,而数据仓库是不需要严格满足3NF的。可能有些同学忘记了3NF是什么?
接下来,我们需要介绍2个概念:OLTP和OLAP,这两个概念代表着对数据处理的两种方式,这两种处理方式,也就对应着数据库和数据仓库存储数据的意义。
OLTP和OLAP的区别:
特性 | OLTP | OLAP |
---|---|---|
特征 | 操作处理 | 信息处理 |
用户 | 办事员、DBA、数据库专业人员 | 数据分析师、项目经理、产品经理 |
功能 | 日常操作 | 长期信息需求、决策支持 |
DB设计 | 基于ER模型、面向应用 | 维度建模、面向主题 |
数据 | 当前的;确保最新 | 历史的;跨时间维护 |
汇总 | 原始的,高度详细 | 汇总的、统一的 |
视图 | 详细,一般关系 | 汇总、多维的 |
工作单位 | 短的、简单事务 | 复杂查询 |
存取 | 读/写 | 主要是读 |
关注 | 数据进入 | 信息输出 |
操作 | 关键字上的索引/散列 | 大量扫描 |
访问记录数 | 数十个 | 数百万 |
用户数 | 数千 | 数百 |
DB规模 | 100M到GB | 100GB到TB |
优先 | 高性能、高可用性 | 高灵活性,端点用户自治 |
用户数 | 数千 | 数百 |
度量 | 事务吞吐量 | 查询吞吐量,响应时间 |
T for transaction,单次查询数据量小、并发高、随机性强、毫秒级延迟、ACID
MySQL、PostgreSQL、SQL Server、Oracle
A for Analysis,大数据量、低并发、批量、秒级至分钟级延迟、不要求ACID,追求“最终一致性”
Hive、HBase、Spark、Clickhouse
ER模型,也称为实体关系模型( Entity Relationship, ER)用实体-关系-实体的模式来描述企业业务,在范式理论上符合 3NF。数据仓库中的 3NF 与 OLTP 系统中的 3NF 的区别在于,它是站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系的抽象。主要有以下特点:
维度建模师数据仓库工程领域最流行的数据仓库建模的方法 。 维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。其典型的代表是星形模型,以及在一些特殊场景下使用的雪花模型。这里我们介绍一下维度建模中的星形模型、雪花模型、星座模型。
其设计分为以下几个步骤:
Data Vault 模型是ER模型的衍生,其设计的出发点也是为了实现数据的整合,但不能直接用于数据分析决策。它强调建立一个可审计的基础数据层,也就是强调数据的历史性、可追溯性和原子性,而不要求对数据进行过度的一致性处理和整合;同时它基于主题概念将企业数据进行结构化组织,并引入了更进一步的范式处理来优化模型,以应对游、系统变更的扩展性。 Data Vault 模型由以下几部分组成:
Data Vault 模型比ER模型更容易设计和产出,它的ETL加工可实现配置化,Data Vault 的核心思想: Hub 可以想象成人的骨架,那么 Link 就是连接骨架的韧带,而 SateIIite 就是骨架上面的血肉。
数据模型分为多个层次,不同的公司根据业务的需要划分为不同的层次,但大多数都在以下的层次中。
很多同学都知道数据仓库需要分层,但是可能不清楚为什么要分层,这里列举出分层的好处:
这一部分我就简单介绍一下,数据仓库的开发从形式上来说,主要分为离线和实时。
总的来说,数仓开发需要各个组件都懂一些,对于spark和flink的详细机制需要更深入的了解,平常使用较多的是sql,也可以采用pysprak进行开发,偶尔需要编写一些自定义函数,需要会解决一些数据优化、治理方面的问题,为业务同学更好的提供数据保障。
Hortonworks 数据平台 HDP 3.0 有 spark 2.3 和 Hive 3.1,默认情况下 spark 2.3 应用程序(pyspark/spark-sql 等)使用 spark 数据
是否最好让一个软件仓库包含多个文件夹,这些文件夹映射到工作区中的不同路径。或者一个仓库中的多个文件夹映射到多个工作区,或多个仓库映射到多个工作区。 有人对此事有任何实用建议吗? 我还注意到,当我在仓库
Git 是分布式源代码控制系统,对吧。如何在没有集中存储库的情况下连接两个开发人员。 我们的团队使用 Github,如果两个开发人员想在同一个分支上工作,似乎需要将该分支推送到远程,然后他们才能访问它
Maven – 仓库 什么是 Maven 仓库? 在Maven 的术语中,仓库是一个位置(place),例如目录,可以存储所有的工程 jar 文件、library jar 文件、插件或任何其他的工
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 3年前关闭。 Improve this questi
我开始将 git 与我的 .git 目录以及网络根目录中的其他所有内容一起使用。进一步阅读后,这似乎是一种不好的做法。我现在将我的应用程序和系统文件夹放在网络根目录之外。我的网络根目录中唯一剩下的就是
有没有可能没有历史的 Git 仓库?例如,我有一个我工作的本地 Git 存储库,我想将最新版本推送到生产服务器。生产服务器上不应存储任何历史记录。我该怎么做? 最佳答案 你可以看到命令 git arc
Laravel 中的 Repositories 有什么优势?它似乎是从应用程序的业务逻辑中抽象出模型层。虽然这似乎只是让整个请求生命周期变得更加复杂,但收效甚微。 有人可以阐明 Laravel 存储库
我有一个本地 git 服务器在我的 NAS 上运行,我正在我的笔记本电脑和工作站上进行开发,所有这些都在我的本地网络中。所以,如果我想在一个新的空 repo 中开始一个项目,我会关注 this ans
我们正在使用 SVN 来存储 maven 依赖项(组织限制不能像现在那样使用 nexus 或 artifactory maven 存储库)。 SVN 在使用 https 协议(protocol)的网络
我想允许某人查看我在我的私有(private)存储库中所做的工作。我该怎么做? 我看了https://help.github.com/articles/making-a-private-reposit
我试图阻止同事在 git 中再次推送已删除的标签(因为它被错误地推送了一次)。 我知道如何在本地执行此操作以及如何将其推送到远程以及如何指示我的同事以正确的方式从他们的本地存储库中删除已删除的标签。
我已经使用 url 克隆了一个 friend 的 git repo git 克隆 https://github.com/user/repo_name.git 然后我创建了我的分支,提交并尝试将我的代码
我目前正在我的代理机构安排比赛。我想对开发人员可以使用的模块进行一些管理。 是否可以托管 Play 模块和 Maven 库的镜像存储库并将 play 配置为仅使用这些存储库? 我已阅读此内容 docu
我正在尝试在我的 readme.md 中嵌入图像用于在 GitHub 上显示。我以前在公共(public)存储库中没有遇到任何问题,格式如下: ![header image](https://raw.
我想访问公司内部Artifactory实例上自定义开发的Gradle插件。对于公司内部发生的每一个Gradle构建,我都希望如此。我是否缺少任何东西,或者建议的方法是在每个项目的每个Gradle构建之
我想保留我在 docker hub 帐户中使用的图像,同时保持对拉取图像的引用。就像你在 github 上 fork 一个项目一样。 目前我已经尝试过jwilder/nginx-proxy图片。现在我
Perforce 中是否有命令可以获取客户端从软件仓库映射到特定文件夹的信息? 示例: 我有仓库位置//depot/myfolder/somefile.java 我想知道哪些客户端将此位置映射到哪个路
我被指派为一个项目开发一项功能。在几周的时间里,我将花几天时间研究该功能。我将克隆中央仓库。然后我将在本地工作 3 周。在此过程中,我会多次将我的进度提交到我的 repo 协议(protocol)中。
我发现自己越来越喜欢将Rstudio与R markdown文件(.rmd)一起使用,并且我非常喜欢“编织HTML +发布到Rpubs”的便利与同事共享我的工作。不幸的是,发布的文件必须是公开可见的,而
我是一名优秀的程序员,十分优秀!