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对于一个新需求创建一个新的工作项. 这里假定,有一个新的需求,需要创建五个报表. 然后开发的工作流程如下: 这个流程总结起来大致如下: 首 ...
随机推荐
- SpringBoot集成RabbitMQ 从零到一,学会MQ异步和解耦--
RabbitMQ 概念 RabbitMQ 即一个消息队列,_主要是用来实现应用程序的异步和解耦,同时也能起到消息缓冲,消息分发的作用._RabbitMQ使用的是AMQP协议,它是一种二进制协议.默认启 ...
- 面试简单整理之zookeeper
157.zookeeper 是什么? ZooKeeper 是一个开源的分布式协调服务,由雅虎创建,是 Google Chubby 的开源实现. 分布式应用程序可以基于 ZooKeeper 实现诸如数据 ...
- 关于CDN与缓存(浏览器和CDN)
本文目录:一.引入 二.CDN定义 三.关于缓存 四.浏览器缓存 一.引入 客户端直接从源站点获取数据,当服务器访问量大时会影响访问速度,进而影响用户体验,且无法保证客户端与源站点间的距离足够短,适合 ...
- Python学习心得--变量类型篇
1.Python允许同时为多个变量赋值.例如:a = b = c = 1 2.Python允许多个对象指定多个变量.例如:a1, b1, c1 = 1, 2, "john" 3.使 ...
- Dockerfile制作自定义镜像
本文介绍最精简的Dockerfile文件构建镜像,Docker启动的时候可以启动一个shell脚本 1.首先编写Dockerfile文件 说明 1.启动的这个shell脚本一定是不退出的,比如服务器的 ...
- jieba库词频统计
一.jieba 库简介 (1) jieba 库的分词原理是利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组:除此之外,jieba 库还提供了增加自定义中文 ...
- H5新特性-canvas绘图--渐变对象路径(最复杂)--图片--变形操作
今天的目标 3.1:canvas绘图--(重点掌握:渐变对象.路径.图片.变形) 3.2:canvas绘图--渐变对象 线性渐变: linearGradient 径向渐变: var g = ctx.c ...
- 运用PIL库 用来美白,磨皮,瘦脸等操作!
1.安装pillow库: 在cmd下,输入简单的命令: pip install pillow 即可安装pillow库. 2.PIL库的简介: 1. PIL库主要有2个方面的功能: (1) 图像归档: ...
- Linux环境下Flask部署至apache
https://blog.csdn.net/rainbowlemonade/article/details/79725328
- Codeforces 873 简要题解
文章目录 A题 B题 C题 D题 E题 F题 传送门 A题 传送门 题意: 一个人要做nnn件事,时间花费分别为a1,a2,...,an,a1≤a2≤a3≤...≤ana_1,a_2,...,a_n, ...