听闻Teradata退出中国,我想起了我经历过的一个数仓项目

昨天,Teradata撤出中国,我想起了我在20年前做的数据仓库项目。想当年Teradata是数据仓库的代名词啊,就如同现在搜索东西好多人说百度一下一样。

可惜我没有用过Teradata。2002年,我基于SQLServer的数据仓库+商业智能做了一套所谓的决策支持系统。决策支持系统DSS,这样的名字在当年很流行。

(1)

20年前的数据来源和现在仍然差不多:

  • 不少来自Excel,那就ETL抽进来

  • 有些想要采集的数据没有应用软件,那就用OA-无代码表单做个简单应用录入进来,然后再ETL抽进来

  • 有些数据是专门的应用软件沉淀下来的,ETL抽进来


所以第一个需要的就是ETL工具。我是2013年以前用SQLServer套件,记得SQLServer的ETL工具被命名为Integration Services

(2)

多种数据来源的数据抽进来,因为他们都来自不同系统,所以有些公用的数据事实上是主数据,但是过去企业上应用都是一块块上的应用,财务部门上财务软件供本部门的财务人员内部使用,销售部门上销售软件供本部门的销售人员内部使用,采购部门上采购部门供本部门的采购人员内部使用,所以事实上的主数据都是不统一的,事实上的同一个东西,在不同系统有不同名字、不同编码、不同字段。在日常应用软件各自部门使用时没啥问题,但是这次要做企业整体的决策支持系统,要给老板看数据,这就必须要做统一。所以必须要有主数据管理系统,这就涉及到了MDM(Master Data Mgt.)。

(3)

主数据要人为地定义下来标准,然后做清洗-整合-统一,或者以谁为主做互相映射,这就涉及到主数据的复制分发或同步。我记得SQLServer有一个专门的Replication Services。现在在新一代大数据技术中,大家更经常使用Kafka

(4)

除了主数据放在MDM里,那些业务数据ETL来-清洗好,就放在事实表里。这就涉及到ODS服务(Operational Data Store),以便下一步在数据仓库里建立模型-建立模型维度,然后把数据从ODS里再抽取到数据仓库里,按照维度存储取来,以后好做多维分析。

企业数据往往是文本型、结构性的,所以过去的ODS最擅长处理这类数据。互联网公司的数据更加多样化,博客文章、邮件、IM消息、文档、图片、视频,所以才发明了Hadoop来充当数据湖。不过Hadoop数据湖擅长处理非结构化、多媒体数据,反而又不擅长处理文本型、结构性数据,所以现在人们又在探索湖上架仓、湖仓一体,如Delta、Hudi、Iceberg就是这么探索着。

(5)

好,下一步这就涉及到了数据仓库。我学习到的数据仓库都是列式多维数据仓库。但是现在很多人说数据仓库就是个虚拟概念,不需要非得用多维数据仓库,普通的行式关系数据库就能搞数据仓库。这就让我比较懵啊,这和我的经历不一样啊。我想最起码你也得用OLAP型数据库啊,而不能用OLTP型数据库啊。

所以对于中国客户,目前的现状主要是出复杂的二维报表,而不是做多维分析,我的建议是不要搞多维数据仓库,不要用真正的数据仓库产品,用OLAP型数据库搞就行了。所以我更建议推荐类似Greenplum、ClickHouse、Apache Doris就可以。但是我坚决反对用OLTP关系数据库搞数据仓库。有的人是直接在OLTP SQLServer行式关系数据库或者MySQL行式关系数据库上搞所谓的数据仓库,把所谓的数据仓库、报表、商业智能都混为一谈,要么都叫数据仓库、要么都叫商业智能,真是偷梁换柱的可以啊。

(6)

按照领域-按照主题-按照模型-按照维度,把数据从ODS入仓。但是入仓过程中还有一个小插曲。因为有些复杂分析指标需要复杂计算出来,还得保存起来,以便以后做历史对比。

所以,需要专门的多维计算编程语言来做某些指标的复杂计算,计算出来结果再放进数仓里。像SQLServer里有DMX(多维扩展开发语言)就是干这事用的。现在在开源新一代大数据技术中,其实Flink或Spark它们干的就是这个事。

(7)

数据终于全都按维度条状入了仓后,人们做的最常见的事情就是出复杂分析报表,需要很多关联性的指标都配比出现在同一张报表里。所以这里就涉及到SQLServer的Rerport Service。

很多人不搞多维数仓,在OLTP关系数据库上直接出复杂配比综合分析报表,我见过有人写了1000多行的存储过程来出一张报表,根本很难阅读看懂、修改、调试跟踪。

在90年代用Powerbuilder出复杂报表时有个工具叫Cross Table,我们叫交叉报表,我看在Excel里叫Pivotal叫透视表。这都是做复杂配比综合分析平面报表的常见工具。

(8)

还有一种根本不是报表,但被人们称作报表,其实我把它称为查询Query,只不过用Grid显示为Table格式。我想这类东西就不应该用多维数据仓库搞,只需要从ODS事实表里出就行。不过现在新一代大数据技术中,主要使用Presto这样的大数据查询引擎来搞。

SQLServer商业智能套件里还有一个服务叫Index Services,就是全文检索服务。不过现在新一代大数据技术中,主要使用ElasticSearch这样的大数据搜索引擎来搞。

(9)

还有一种更复杂的可视化分析,它既带有可视化的特点,又带有分析的特点,我们把它叫做Cube

我在SQLServer商业智能套件里、在IBM Cognos套件里,都使用过Cube。它可以上钻下钻、旋转、切片。我看在新一代大数据技术中,Kylin就在重点做这个。

(10)

除了Cube这种既带有可视化特点又有分析特点的工具之外,还有一种真正的分析,在SQLServer里叫Analysis Services。也有人称作是数据挖掘。

我用Analysis Services做过分类算法、聚类算法、决策树算法、线性回归算法、时序算法。当时微软还没提供神经网络算法。现在新一代大数据技术Spark套件中,也有MLLib,就是机器学习算法库,也是这些。不过现在人工智能Tensorflow平台和Pytorch平台上的,都已经是深度学习的各种算法和模型了,这和机器学习算法库是另外的路数了。

(11)

我几乎把SQLServer商业智能套件里的产品都用了遍,不过事实结果是:

  • 卖的不好,可以在宣传和打单时展示实力,但实际上没卖出几套。

  • 实施很复杂,要做很多SQL编写工作。过去的实施顾问还会数据库结构和SQL,现在的实施顾问只会功能界面配置了。虽然已经内置了不少业务分析模板,但是总要做一些从展示修改到数据计算修改到数据ETL抽取修改的东西。

  • 客户使用过程中,倒是出了很多内置的复杂的配比指标报表可视化和图表可视化,但是很不幸,客户业务专业能力水平比较低,看不懂这么复杂的配比综合报表。


真是有什么样水平的甲方,就需要匹配什么样水平的乙方。

(12)

你问我这十多年来产生了那么多新一代大数据技术,到底解决了啥问题?

我想说的是:这些新一代大数据技术,主要适用于互联网公司,他们主要是多模态的数据,而且是真正的海量数据。而中国企业内部应用,主要是文本型结构性数据,而且是假的海量数据(每天连十万条重要的业务数据记录都产生不了),所以我的观点是:中国企业内部应用数据分析,建议还是用20多年前老的商业套件来搞,不要赶时髦。因为新一代大数据技术,又不适合,又更复杂,没那么必要。

不过,我也知道我这么说也是白说。乙方总得要讲新故事新产品,管你需不需要新一代大数据技术,搞就是了。挣钱嘛,不寒碜。



往期推荐:


技术琐话 



以分布式设计、架构、体系思想为基础,兼论研发相关的点点滴滴,不限于代码、质量体系和研发管理。

相关推荐

  • 如何实现一个任务调度系统?
  • Redis 替代品强势来袭,性能提升一倍!!
  • ChatGPT核心方法可用于AI绘画,效果飞升47%,通讯作者:已跳槽OpenAI
  • ​ACL 2023 Workshop | “多语言文档对话”挑战赛启动!
  • 关于AGI与ChatGPT,Stuart Russell与朱松纯这么看
  • 16岁男生筋膜枪按摩眼睛致白内障;明天起香港口罩令全面取消;日本新生儿跌破80万人......|酷玩日爆
  • 不要和XX人说累 | 每日一冷
  • 这个事,日本真干了!
  • 不能忍,得罪人也得揭它老底,别再被五常大米忽悠了!
  • 加强半导体基础能力建设 点亮半导体自立自强发展的“灯塔”
  • 冲牙器,真的太太太太好用了!
  • 互联网大厂要给大家“发钱”,为啥还被骂?
  • ChatGPT思考:探索智能的极限
  • 如何设计一个通用的风控系统
  • 没写过复杂 React 组件?来实现下 AntD 的 Space 组件吧
  • “毒列车”数百万升毒废水或注入得州地下;圣彼得堡普尔科沃机场附近现“不明飞行物”;意大利黑手党头目用床单索降越狱 | 每日大新闻
  • 3 个骚气满满的 ChatGPT 开源项目!
  • 百度工程师浅谈分布式日志
  • 高并发场景下常见的限流算法及方案介绍
  • Pigsty v2 正式发布:更好的RDS PG开源替代