【数据仓库系列文章 - 传送门】
一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法)一篇文章搞懂数据仓库:三种事实表(设计原则,设计方法、对比)_不吃西红柿-CSDN博客_事实表三种类型
一篇文章搞懂数据仓库:元数据分类、元数据管理 一篇文章搞懂数据仓库:元数据分类、元数据管理_不吃西红柿-CSDN博客
一篇文章搞懂数据仓库:总线架构、一致性维度、一致性事实 一篇文章搞懂数据仓库:总线架构、一致性维度、一致性事实_不吃西红柿-CSDN博客
一篇文章搞懂数据仓库:数据应用--OLAP 一篇文章搞懂数据仓库:数据应用--OLAP_不吃西红柿-CSDN博客
一篇文章搞懂数据仓库:数据仓库架构-Lambda和Kappa 一篇文章搞懂数据仓库:数据仓库架构-Lambda和Kappa对比_不吃西红柿-CSDN博客
一篇文章搞懂数据仓库:数据仓库规范设计 一篇文章搞懂数据仓库:数据仓库规范设计_不吃西红柿-CSDN博客
一篇文章搞懂数据仓库:常用ETL工具、方法 一篇文章搞懂数据仓库:常用ETL工具、方法_不吃西红柿-CSDN博客_数据仓库etl
一篇文章搞懂数据仓库:四种常见数据模型 一篇文章搞懂数据仓库:四种常见数据模型(维度模型、范式模型等)_不吃西红柿-CSDN博客
一篇文章搞懂数据仓库:数据治理(目的、方法、流程) 一篇文章搞懂数据仓库:数据治理(目的、方法、流程)_不吃西红柿-CSDN博客_数据仓库 数据治理
一篇文章搞懂数据仓库:维度表(设计原则、设计方法) 一篇文章搞懂数据仓库:维度表(设计原则、设计方法)_不吃西红柿-CSDN博客
一篇文章搞懂数据仓库:数据仓库的8个发展阶段 一篇文章搞懂数据仓库:数据仓库的8个发展阶段_不吃西红柿-CSDN博客_数据仓库发展史
一篇文章搞懂数据仓库:三范式与反范式 一篇文章搞懂数据仓库:三范式与反范式_不吃西红柿-CSDN博客_数据仓库三范式
目录
5、数据中台、数据仓库、大数据平台、数据湖的关键区别是什么?
光阴似箭,岁月如刀。小编已经从刚毕业时堤上看风的白衣少年,变成了一个有五年开发经验的半老程序员。五年——是一个非常重要的时间节点,意味你见过很多套技术构架,学过很多技术组件,写过很多行代码,有了自己的技术理解、知识体系和编码风格。这个时候我们对待技术的态度已经从扩宽广度,慢慢转变成沉淀深度为主了。
也是刚刚面试了北京各大厂,顺利拿到4个offer,趁热打铁,呕(dao)心(chu)沥(fu)血(zhi)总结了一些数据仓库的面试基础知识,希望能帮到大家,有需要内推的小伙伴加文末微信。
权威定义:数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合,用于支持管理决策。
1)数据仓库是用于支持决策、面向分析型数据处理;
2)对多个异构的数据源有效集成,集成后按照主题进行重组,并包含历史数据,而且存放在数据仓库中的数据一般不再修改
从目标、用途、设计来说
1)数据库是面向事务处理的,数据是由日常的业务产生的,并且是频繁更新的;数据仓库是面向主题的,数据来源多样化,经过一定的规则转换得到的,用于分析和决策
2)数据库一般用来存储当前事务性数据,如交易数据;数据仓库一般存储的是历史数据
3)数据库设计一般符合三范式,有最大的精确度和最小的冗余度,有利于数据的插入;数据仓库设计一般不符合三范式,有利于查询
数据仓库模型的选择是灵活的,不局限与某种模型方法;数据仓库数据是灵活的,以实际需求场景为导向;数仓设计要兼顾灵活性、可扩展性、要考虑技术可靠性和实现成本
1)调研:业务调研、需求调研、数据调研
2)划分主题域:通过业务调研、需求调研、数据调研最终确定主题域
3)构建总线矩阵、维度建模
总线矩阵:把总线架构列表形成矩阵形式,行表示业务处理过程,即事实,列表示一致性的维度,在交叉点上打上标记表示该业务处理过程与该维度相关(交叉探查)
4)设计数仓分层架构
5)模型落地
6)数据治理
数据中台是通过数据技术,对海量数据进行采集、计算、存储、加工,同时统一标准和口径。数据中台把数据统一之后,会形成标准数据,再进行存储,形成大数据资产层,进而为客户提供高效服务。这些服务和企业的业务有较强关联性,是企业所独有且能复用的,他是企业业务和数据的积淀,其不仅能降低重复建设,减少烟囱式协助的成本,也是差异化竞争的优势所在。
数据中台是通过整合公司开发工具、打通全域数据、让数据持续为业务赋能,实现数据平台化、数据服务化和数据价值化。数据中台更加侧重于“复用”和“业务”。
1)基础能力上的区别
数据平台:提供的是计算和存储能力
数据仓库:利用数据平台提供的计算和存储能力,在一套方法论的指导下建设的一整套的数据表
数据中台:包含了数据平台和数据仓库的所有内容,将其打包,并且以更加整合以及更加产品化的方式对外提供服务和价值
数据湖:一个存储企业各种各样原始数据的大型仓库,包括结构化和非结构化数据,其中湖里的数据可供存取、处理、分析和传输
2)业务能力上的区别
数据平台:为业务提供数据主要方式是提供数据集
数据仓库:相对具体的功能概念是存储和管理一个或多个主题数据的集合,为业务提供服务的方式主要是分析报表
数据中台:企业级的逻辑概念,体现企业数据产生价值的能力,为业务提供服务的主要方式是数据API
数据湖:数据仓库的数据来源
总的来说,数据中台距离业务更近,数据复用能力更强,能为业务提供速度更快的服务,数据中台在数据仓库和数据平台的基础上,将数据生产为一个个数据API服务,以更高效的方式提供给业务。数据中台可以建立在数据仓库和数据平台之上,是加速企业从数据到业务价值的过程的中间层。
数仓设计中心:按照主题域、业务过程,分层的设计方式,以维度建模作为基本理论依据,按照维度、度量设计模型,确保模型、字段有统一的命名规范
数据资产中心:梳理数据资产,基于数据血缘,数据的访问热度,做成本的治理
数据质量中心:通过丰富的稽查监控系统,对数据进行事后校验,确保问题数据第一时间被发现,避免下游的无效计算,分析数据的影响范围。
指标系统:管理指标的业务口径、计算逻辑和数据来源,通过流程化的方式,建立从指标需求、指标开发、指标发布的全套协作流程
数据地图:提供元数据的快速索引,数据字典、数据血缘、数据特征信息的查询,相当于元数据中心的门户。
数据中台在企业落地实践时,结合技术、产品、数据、服务、运营等方面,逐步开展相关工作
1)理现状:了解业务现状、数据现状、IT现状、现有的组织架构
2)定架构:确认业务架构、技术架构、应用架构、组织架构
3)建资产:建立贴近数据层、统一数仓层、标签数据层、应用数据层
4)用数据:对数据进行输出、应用
5)数据运营:持续运营、持续迭代
中台建设需要有全员共识,由管理层从上往下推进,由技术和业务人员去执行和落地是一个漫长的过程,在实施数据中台时,最困难的地方就是需要有人推动。
个人认为是数据集成和数据质量
企业的数据通常存储在多个异构数据库中,要进行分析,必须对数据进行一致性整合,整合后才能对数据进行分析挖掘出潜在的价值;
数据质量必须有保障,数据质量不过关,别人怎么会使用你的数据?
1)概念模型CDM:概念模型是最终用户对数据存储的看法,反映了最终用户综合性的信息需求,以数据类的方式描述企业级的数据需求
概念模型的内容包括重要的实体与实体之间的关系,在概念模型中不包含实体的属性,也不包含定义实体的主键
概念模型的目的是统一业务概念,作为业务人员和技术人员之间的沟通桥梁,确定不同实体之间的最高层次的关系
2)逻辑模型LDM:逻辑模型反映的是系统分析人员对数据存储的观点,是对概念模型的进一步分解和细化,逻辑模型是根据业务规则确定的,关于业务对象,业务对象的数据项以及业务对象之间关系的基本蓝图
逻辑模型的内容包括所有的实体和关系,确定每个实体的属性,定义每个实体的主键,指定实体的外键,需要进行范式化处理
逻辑模型的目标是尽可能详细的描述数据,并不考虑物理上如何实现
3)物理模型PDM:物理模型是在逻辑模型的基础上,考虑各种具体的技术实现因素,进行数据体系结构设计,真正实现数据在数据仓库中的存放
物理模型的内容包括确定所有的表和列,定义外键用确认表之间的关系,基于用户的需求可能要进行反范式化等内容
slowly changing dimensions 缓慢变化维度
常见的缓慢变化维处理方式有三种:
1)直接覆盖:不记录历史数据,薪数据覆盖旧数据
2)新加一行数据(纵向扩展):使用代理主键+生效失效时间或者是代理主键+生效失效标识(保存多条记录,直接新添一条记录,同时保留原有记录,并用单独的专用字段保存)
3)新加两个字段(横向扩展):一个是previous,一个是current,每次更新只更新这两个值,但是这样职能保留最近两次的变化(添加历史列,用不同的字段保存变化痕迹,因为只保存两次变化记录,使用与变化不超过两次的维度)
传送门:一篇文章搞懂数据仓库:元数据分类、元数据管理 —— 一篇文章搞懂数据仓库:元数据分类、元数据管理_不吃西红柿-CSDN博客
狭义来讲就是:元数据就用来描述数据的数据
广义来讲,除了业务逻辑直接读写处理的业务数据,所有其他用来维护整个系统运转所需要的数据,都可以认为是元数据
在数仓中,元数据可以帮助数仓人员方便找到他们所关系的数据,是描述数仓内部数据的结构和建立方法的数据。按照用途可分为:技术元数据、业务员数据
主题是在较高层次上将数据进行综合、归类和分析利用的一个抽象概念,每一个主题基本对应一个宏观的分析领域,在逻辑意义上,他是对企业中某一宏观分析领域所涉及的分析对象。
面向主题的数据组织方式,就是在较高层次上对分析对象的数据的一个完整并且一致的描述,能刻画各个分析对象所涉及的企业各项数据,以及数据之间的联系。
主题域通常是联系较为机密的数据主题的集合,可以根据业务的关注度,将这些数据主题划分到不同的主题域(也就是说对某个主题进行分析后确定的主题的边界)。
关于主题域的划分,可以考虑几方面:
1、按照业务或者业务过程划分:比如一个靠销售广告位置的门户网站主题域可能会有广告域,客户域等,而广告域可能就会有广告的库存,销售分析、内部投放分析等主题;
2、根据需求方划分:比如需求方为财务部,就可以设定对应的财务主题域,而财务主题域里面可能就会有员工工资分析,投资回报比分析等主题;
3、按照功能或者应用划分::比如微信中的朋友圈数据域、群聊数据域等,而朋友圈数据域可能就会有用户动态信息主题、广告主题等;
4、按照部门划分:比如可能会有运营域、技术域等,运营域中可能会有工资支出分析、活动宣传效果分析等主题;
总而言之,切入的出发点逻辑不一样,就可以存在不同的划分逻辑。在建设过程中可采用迭代方式,不纠结于一次完成所有主题的抽象,可先从明确定义的主题开始,后续逐步归纳总结成自身行业的标准模型。
传送门:一篇文章搞懂数据仓库:数据治理(目的、方法、流程)—— 一篇文章搞懂数据仓库:数据治理(目的、方法、流程)_不吃西红柿-CSDN博客_数据仓库 数据治理
1)校验机制,每天对比数据量,比如count(*),早发现,早修复
2)数据内容的比对,抽样对比
3)复盘、每月做一次全量
构建数据仓库有两种方式:自上而下、自下而上
Bill Inmon推崇自上而下的方式,一个企业建立唯一的数据中心,数据是经过整合、清洗、去掉脏数据、标准的、能够提供统一的视图。要从整个企业的环境入手,建立数据仓库,要做很全面的设计。偏数据驱动
Ralph Kimball推崇自下而上的方式,认为数据仓库应该按照实际的应用需求,架子啊需要的数据,不需要的数据不要加载到数据仓库中。这种方式建设周期短,用户能很快看到结果。偏业务驱动
数仓建模需要按照一定的数据模型,对整个企业的数据进行采集,整理,提供跨部门、完全一致的报表数据。
合适的数据模型,对于大数据处理来讲,可以获得得更好的性能、成本、效率和质量。良好的模型可以帮助我们快速查询数据,减少不必要的数据冗余,提高用户的使用效率。
数据建模进行全方面的业务梳理,改进业务流程,消灭信息孤岛,更好的推进数仓系统的建设。
传送门:一篇文章搞懂数据仓库:四种常见数据模型 —— 一篇文章搞懂数据仓库:四种常见数据模型(维度模型、范式模型等)_不吃西红柿-CSDN博客

【参考文献】

添加公众号「信息技术智库」:
🍅 硬核资料:20G,8大类资料,关注即可领取(PPT模板、简历模板、技术资料)
🍅 技术互助:技术群大佬指点迷津,你的问题可能不是问题,求资源在群里喊一声。
🍅 面试题库:由各个技术群小伙伴们共同投稿,热乎的大厂面试真题,持续更新中。
🍅 知识体系:含编程语言、算法、大数据生态圈组件(Mysql、Hive、Spark、Flink)、数据仓库、前端等。
👇👇送书抽奖丨技术互助丨粉丝福利👇👇
我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i
有时我需要处理键/值数据。我不喜欢使用数组,因为它们在大小上没有限制(很容易不小心添加超过2个项目,而且您最终需要稍后验证大小)。此外,0和1的索引变成了魔数(MagicNumber),并且在传达含义方面做得很差(“当我说0时,我的意思是head...”)。散列也不合适,因为可能会不小心添加额外的条目。我写了下面的类来解决这个问题:classPairattr_accessor:head,:taildefinitialize(h,t)@head,@tail=h,tendend它工作得很好并且解决了问题,但我很想知道:Ruby标准库是否已经带有这样一个类? 最佳
我正在尝试使用Curbgem执行以下POST以解析云curl-XPOST\-H"X-Parse-Application-Id:PARSE_APP_ID"\-H"X-Parse-REST-API-Key:PARSE_API_KEY"\-H"Content-Type:image/jpeg"\--data-binary'@myPicture.jpg'\https://api.parse.com/1/files/pic.jpg用这个:curl=Curl::Easy.new("https://api.parse.com/1/files/lion.jpg")curl.multipart_form_
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
本教程将在Unity3D中混合Optitrack与数据手套的数据流,在人体运动的基础上,添加双手手指部分的运动。双手手背的角度仍由Optitrack提供,数据手套提供双手手指的角度。 01 客户端软件分别安装MotiveBody与MotionVenus并校准人体与数据手套。MotiveBodyMotionVenus数据手套使用、校准流程参照:https://gitee.com/foheart_1/foheart-h1-data-summary.git02 数据转发打开MotiveBody软件的Streaming,开始向Unity3D广播数据;MotionVenus中设置->选项选择Unit
文章目录一、概述简介原理模块二、配置Mysql使用版本环境要求1.操作系统2.mysql要求三、配置canal-server离线下载在线下载上传解压修改配置单机配置集群配置分库分表配置1.修改全局配置2.实例配置垂直分库水平分库3.修改group-instance.xml4.启动监听四、配置canal-adapter1修改启动配置2配置映射文件3启动ES数据同步查询所有订阅同步数据同步开关启动4.验证五、配置canal-admin一、概述简介canal是Alibaba旗下的一款开源项目,Java开发。基于数据库增量日志解析,提供增量数据订阅&消费。Git地址:https://github.co
我正在尝试在Rails上安装ruby,到目前为止一切都已安装,但是当我尝试使用rakedb:create创建数据库时,我收到一个奇怪的错误:dyld:lazysymbolbindingfailed:Symbolnotfound:_mysql_get_client_infoReferencedfrom:/Library/Ruby/Gems/1.8/gems/mysql2-0.3.11/lib/mysql2/mysql2.bundleExpectedin:flatnamespacedyld:Symbolnotfound:_mysql_get_client_infoReferencedf
文章目录1.开发板选择*用到的资源2.串口通信(个人理解)3.代码分析(注释比较详细)1.主函数2.串口1配置3.串口2配置以及中断函数4.注意问题5.源码链接1.开发板选择我用的是STM32F103RCT6的板子,不过代码大概在F103系列的板子上都可以运行,我试过在野火103的霸道板上也可以,主要看一下串口对应的引脚一不一样就行了,不一样的就更改一下。*用到的资源keil5软件这里用到了两个串口资源,采集数据一个,串口通信一个,板子对应引脚如下:串口1,TX:PA9,RX:PA10串口2,TX:PA2,RX:PA32.串口通信(个人理解)我就从串口采集传感器数据这个过程说一下我自己的理解,
SPI接收数据左移一位问题目录SPI接收数据左移一位问题一、问题描述二、问题分析三、探究原理四、经验总结最近在工作在学习调试SPI的过程中遇到一个问题——接收数据整体向左移了一位(1bit)。SPI数据收发是数据交换,因此接收数据时从第二个字节开始才是有效数据,也就是数据整体向右移一个字节(1byte)。请教前辈之后也没有得到解决,通过在网上查阅前人经验终于解决问题,所以写一个避坑经验总结。实际背景:MCU与一款芯片使用spi通信,MCU作为主机,芯片作为从机。这款芯片采用的是它规定的六线SPI,多了两根线:RDY和INT,这样从机就可以主动请求主机给主机发送数据了。一、问题描述根据从机芯片手
前言一般来说,前端根据后台返回code码展示对应内容只需要在前台判断code值展示对应的内容即可,但要是匹配的code码比较多或者多个页面用到时,为了便于后期维护,后台就会使用字典表让前端匹配,下面我将在微信小程序中通过wxs的方法实现这个操作。为什么要使用wxs?{{method(a,b)}}可以看到,上述代码是一个调用方法传值的操作,在vue中很常见,多用于数据之间的转换,但由于微信小程序诸多限制的原因,你并不能优雅的这样操作,可能有人会说,为什么不用if判断实现呢?但是if判断的局限性在于如果存在数据量过大时,大量重复性操作和if判断会让你的代码显得异常冗余。wxswxs相当于是一个独立