BI项目记(二):给我接套数据
这次故事的主角还是小D,小D工作在一家传统公司的信息部门,负责数据仓库系统的运维和开发。
话说有一天,小D被教导老板的office,老板给布置了一个任务,让小D在现有数据仓库里接入刚上线的两个系统的数据。
于是小D找到了对应系统的开发团队。可能是对方刚上线的缘故,最终也没有人搭理小D,于是直接把数据库只读权限open给了小D,让小D需要什么数据自己去抓取,如果一个查询不知道怎么写再单独去发邮件问。
话说其中一个系统还好,是SQL Server,这个跟小D的数据仓库一致,直接抽取就行。
但是另外一个系统就麻烦了,是Oracle,于是小D查阅了很多资料,安装Oracle相应的组件在数据仓库中,然后磕磕绊绊的终于连接到了这个数据库。
收集完报表的需求,确认了用户需要看到的每一个原子数据在界面上的位置,然后在开发平台通过抓取的方式也获取到了相应的查询方式,有些实在抓取不到的就发邮件问,虽然对方很忙但邮件回复的也还算及时。(数据建模的故事这里暂且不谈,话题太大。)
但是随后问题就来了,小D发现这两个接口经常报错,多数错误集中在源端数据结构的变更,比如名字变了,类型变了,长度变了,是否允许为空变了。
这个也可以理解,因为对端源系统用的是敏捷开发方式,几个礼拜上线一个变更是家常便饭。而对于源端系统团队,下游到底拿了哪些数据,他们也无法获知,所以也不能在第一时间通知到下游受影响的部门。
所以小D想到一个方法,就是把他所要的数据,提交给源端系统,让源端系统负责帮忙组织这些数据,放在一个平面文件里,在这个平面文件中,所有的字段名都是提前约定好的。
这样一来,源端系统知道了下游系统需要什么数据,在每次做变更的时候,就会有一个地方知晓,这个变更对于下游的影响。而对于有些变更,完全在可以不改变这个接口的情况下实现,减少了下游系统的开发和测试成本。
小D对于这个方法还是很满意的,只是对于那个Oracle的系统,操作系统是Linux,他们只支持用SFTP的连接,而这个工具在Windows下是没有微软自带工具解决的,不过还好通过第三方工具都可以搞定,而且第三方工具也都支持ETL接口编程,调度起来也都还方便。
这个方法确实方便了小D,但源端系统如果得不到实惠其实也是很难推动的,而这里对于源端系统来说,最主要的一个实惠就是,对于同一份数据,可能下游好几个系统都需要,相比先前的方案,他们只导出一次就可以了,避免先前的数据库直连,同样的数据要被访问多次,影响系统的性能。
小D同时也发现,相比先前的数据库直连,这个方法有效的避免了,数据仓库由于某些特殊原因失败,错过数据的加载的时间的问题。先前有好几次就是由于小D的数据仓库后半夜莫名其妙的打补丁重启,然后错了了约定的数据加载时间,结果等问题被发现的时候,源端业务系统已经开始新一天的业务运营,先前的数据根本追不回来。
于是,接口顺利的运行了好长时间。
再后来,报表的需求越来越多,更多的明细数据提了出来,而此时通过平面文件的导出就显得很笨拙,跟传统数据库直连的方法来比较,这个方法多出了额外的IO开销,以及序列化和反序列化成本,直接导致的问题就是直到第二天上班的时候,要么是文件还没有导出完毕,要么是文件还没有加载完毕。
于是,通过中间数据库的方法被小D提起。就是在源系统和数据仓库间,建立另外一个单独的数据库,每天源系统会把下游系统系统需要的数据送到这里,下游系统随后直接从这个中间库加载数据。
就这样,系统平稳的运行了好久好久。
再后来,随着大数据的火热,好多部门都搭建起来了自己的大数据平台。突然有一天小D被通知道:请求的数据可以直接从大数据平台里获取,就不需要再走中间库了。
于是小D做了一番研究,发现源端系统每次是把数据发送给大数据平台存储,他们主要是方便自己部门报表平台,主要是Tableau系统的对接。
就这样,小D也跟着踏上了大数据之路。。。
BI项目记(二):给我接套数据的更多相关文章
- BI项目记笔记索引
这个笔记系列主要记录了在BI项目中,如何搭建环境进行源代码管理以及文档管理. 用到的产品包括: TFS Express Sharepoint Visual Studio SQL Server 配置 ...
- [BI项目记]-搭建代码管理环境之服务端
上一篇介绍如何搭建环境进行文档版本的管理,这篇主要介绍搭建环境进行代码版本的管理. 即使是BI项目也要进行代码版本管理.代码版本管理的工具有很多,VSS, SVN等都是当下大家经常提起的,这里主要介绍 ...
- [BI项目记]-搭建代码管理环境之创建团队项目
此篇主要介绍如何基于TFS环境创建团队项目来进行项目代码的版本管理工作,这一系列将侧重于BI项目,当然对于其它项目也同样适用. 在TFS里开始一个项目,我们首先需要创建一个团队项目. 在Team Ex ...
- [BI项目记]-搭建代码管理环境之签入代码
此篇主要介绍如何基于TFS环境创建进行BI项目最简单的代码签入和签出工作. 首先介绍BI项目中的SSAS项目.SSAS项目主要包含Cube多维数据集和数据挖掘模型,是在微软BI产品体系中重要的一个组件 ...
- [BI项目记]-对项目文件进行规划
BI项目中会有很多不同种类的项目,此篇会对这些项目进行一个总结,并且在TFS中进行分类. 根据笔者对BI项目的经验和理解,主要将BI项目中的项目类型进行如下分类: DB脚本 DB脚本是BI项目中重要的 ...
- [BI项目记]-DB脚本同步
BI项目中会有很多不同种类的项目,其中比较比较大的一部分就是对DB脚本的处理.然而DB的脚本毕竟无法在项目中进行维护,所以这里介绍如何对DB的脚本进行版本上的维护. 数据库脚本本身没有项目模板支持,很 ...
- [BI项目记]-TFS Express备份和恢复
在项目中对TFS进行备份操作是日常重要的工作之一,此篇主要描述如何对TFS Express进行备份,并且在另外一台服务器上进行恢复. 以下是操作的几个关键点: 备份数据库,在TFS管理工具中就可以完成 ...
- [BI项目记]-新任务处理
上一篇主要介绍如何借助TFS创建一个新的工作项,此篇主要演示如何对其进行处理. 首先回顾下新工作项不同阶段的定义. 接下来进入到开发阶段,根据需求创建五个报表.打开SQL Server Data To ...
- [BI项目记]-新任务创建
上一篇介绍了如何处理一个Bug工作,此篇主要介绍如何借助TFS对于一个新需求创建一个新的工作项. 这里假定,有一个新的需求,需要创建五个报表. 然后开发的工作流程如下: 这个流程总结起来大致如下: 首 ...
随机推荐
- 执行python文件报错SyntaxError: Non-ASCII character '\xe8' in file, but no encoding declared
在文件头部加上: # -*- coding: utf-8 -*
- js计算日期相减天数
代码: <!DOCTYPE html> <html> <head> <meta charset="utf-8"> </head ...
- Oracle 存储过程笔记.
业务说明: 主要用于计算采购加权平均价.入参为年份和月份,首先判断输入的年月是否已经结账,如果已经结账就将所有物料和供应商的采购加权平均价返回. 要点说明: 1.如何在存储过程中定义临时表 答:ora ...
- 将Windows系统移到另一个硬盘
原先的128GB SSD,给Windows用是够了,最近虚拟机用得多,靠以前的SSD外挂着用,实在有点不爽,就入手一个256GB的,重装系统是个令人头疼的事情,当然不能干.想起来以前另一个机器操作的时 ...
- 十六、IDEA创建一个maven工程
1.点击Create new Project 2.选择maven,使用的jdk,点击next; 3.填写GroupId和工程名,点击next; 4.默认不做其他修改,点击Finish; 5.创建成功
- 处理ajax数据;数据渲染
当我们用ajax把数据拿到前台,该如何渲染到页面,有以下几种方式: 一:使用字符串拼接的方法 声明一个空变量,然后拼接 var st=""; st+="<div&g ...
- Eclispe 错误:找不到或无法加载加载主类
解决办法: Project --> Clean Clean 操作会将该 project 以前的所有编译信息清空,然后默认将所有工程的所有 .java 文件都进行一次编译,这样的话就可以方便的进行 ...
- 第一章 odoo的配置(centos7 版)
一: 简述 (1) odoo是python开发的一款erp软件,目前的最新版本为odoo 11, 支持Python2和Python3, 但odoo 11目测是一个过渡版本,为了稳定,我们还是上odoo ...
- OO第一单元三次作业总结
写在前面 第一单元作业是针对输入的多项式进行格式合法判断,然后进行求导,结果长度优化,最后输出.三次难度递增,不断添加新的需求,总体感觉在实现方面没有多大困难(?),个人主要困扰环节是寻找自己未知bu ...
- CommonsChunkPlugin VS SplitChunksPlugin
等了好久终于等到你, webpack团队人员卧薪尝胆五个多月的时间终于带来的webpack4.0,个人觉得webpack4带来的最大优化便是对于懒加载块拆分的优化,删除了CommonsChunkPlu ...