当前位置: 首页 > news >正文

漫谈“数据仓库演进史”

本文回顾了(数据/信息)仓库的发展历史,算是一个科普文。

1. 信息的起源

     

人类的发展,离不开信息的积累。从原始社会的口口相传,到需要将信息记录下来。那么如何记载信息呢?于是有了最早的记载方式——结绳记事

这个方法貌似可以,但是复述起来,简直呜呜呜…有没有更好的方式了,古人创造出来文字。通过文字将发生的历史记载下来。从最早的甲骨文,到后面文字的不断发展。聪明的古人,不断演进发展着文字。可以说文字的演进历史,就是人类的进化历史。

2. 计算机的诞生

     

伴随着人类的进步,存储的信息越来越多,有没有更好的方式存储管理这些信息呢?终于到了1946年,因为军事的的需要,第一台电子计算机在美国宾夕法尼亚大学诞生了。虽然很久之前就有了计算尺、机械计算机、模拟电子计算机,但无疑电子计算机的问世具备了划时代的意义,并且一直影响到我们现在。这是个庞大而笨重的家伙,是我们现在这个计算机时代的老祖先。

3. 数据库的诞生

     

时间迈入了1960年代,野心勃勃的美国人提出了登月计划,这在当时可以件大事情。可是要飞到月球去,得有个交通工具,美国人起了个希腊神话中太阳神来命名了这个飞船。要制作这个飞船,可以动用了美国庞大的社会资源,可是这个超复杂的东东有着数不清的零件,如何管理它们成了大难题?于是计算机业内的百年老店—IBM出场了,研发了一款叫做ICS的软件,专门用来管理这些零件信息。后来以此为基础诞生了大名鼎鼎的IMS(Information Management System)数据库。这可是现代数据库的祖先。直到今天,这一老当益壮的数据库还在某些银行重要的核心岗位发挥着余热。

4. 三大模型之争

     

IMS数据库是基于层次结构构建的,很容易实现从上往下找,但对于左右横向查询就不太好用。另一个老牌公司GE看到了,开发出了新的基于网状的数据库IDS。这个貌似蜘蛛网结构的数据库很快取得的不错的市场成绩。作为行业的老大,IBM自然不会坐以待毙,在一个超级英雄EF.Codd(下图中,曾获得图灵奖)的带领下,提出了关系模型。一时间,层次、网状、关系三大关系模型杀的浑天黑地。直到一个重要的语言-SQL的出现,改变了整个战局。这是一个如此简单易懂的语言,可以很容易描述数据访问需求,战局的天平倾斜了关系模型。后来,聪明人扎堆的加州大学伯克利分校开发了INGRES(就是现在的PostgreSQL)数据库,证明关系模型是靠谱的,才为这场战争画上了句号。

5. 数据仓库的诞生

     

随着关系模型的成功,一大批数据库产品纷纷涌现,从早期的Oracle、DB2、SyBase、Informix等等。这些数据库产品很好地满足了数据存储计算的需要。各大公司也是赚的盆满钵满。但是随着企业的发展,这些处理的数据量越来越大,而且还需要从更多的维度去分析这些数据。原来这些产品都不太能满足需要。于是一些小公司开始在这个领域深挖下去,1981年NCR公司建立了第一个面向分析的数据库,1983年Teradata公司为美国富国银行建立了第一个决策系统(BTW,直到今天Teradata仍然处于数据行业的龙头榜首)。直到1988年,又是来自IBM公司研究员第一次提出了新的术语来描述这个场景 — 数据仓库(Data Warehouse),真正为这类产品打开了一扇大门。

6. 数仓理论基础

     

在数据仓库诞生之初,走过了一段黑暗的历史,很多实施项目都失败了。其后面原因是没有理论基础(都不会玩)。1992年,一个牛逼的老爷子Bill Inmon写了一本书《如何构建数据仓库》,第一次把如何玩数仓给讲明白了,真正为数据仓库大规模推广打下基础。这个老爷子也被后来被称为“数仓之父”。这本书指出“数据仓库是一个面向主题的、集成的、相对稳定的、反映历史变化的数据集合”。不过后来在实施路径上,又有新的做法,其代表性的人物就是Ralph Kimball,其在94年提出了《数据仓库的工具》一书,描述一种新的实施方式,掀起数据集市建设的热潮,大有从数据集市逐渐取代企业级数据仓库。两者争论不休,但各有利弊。前者主张数据仓库建设应采取自上而下的方式,以三范式进行模型设计;后者则建议采取自上而上的方式,以维度模型进行设计。到了1998年,Inmon提出了新的BI框架-CIF,把Kimball的数据集市包含进来。现在CIF已经成为建设数据仓库的红宝书。

7. 大数据的冲击

     

在很长一段时间,关系型数据库承载数据仓库的基础能力。但到了上世纪90年代,随着互联网的兴起,数据有了新的变化。需要数据库承载更大容量、更快速度、多样性结构等问题,整个数据库行业都在数据爆炸式的增长下瑟瑟发抖。就在这个时候,Google带来了一丝光亮,著名的三篇论文为整个数据行业带来巨大冲击。首次提出了大数据概念,拉开了“大数据”时代的大幕。各个公司(特别是互联网企业)纷纷抛弃传统手段,重起炉灶。原来令人困扰的问题,似乎一夜之间找到答案,粗暴计算模型+标准廉价硬件搞定一切,精巧设计、完美事务、标准SQL,都不如多招几个码农来的实惠。虽然数据库界,痛心疾首、奔走呼号,但似乎无人听到;仿佛一夜之间数据库几十年的积累被大数据吊打。

然而,这所谓没有完美的“银弹”。大数据的狂野架构,从诞生之日起就决定其“出身”。虽然在后来的大数据体系中引入SQL、MPP引擎、列存等等,也只不过吸取数据库几十年积累精华的一点皮毛。在其野蛮生长的基础,就很难改进。对于客户而言,大数据就如同一头怪兽,其能力强大但也不容驯服,需要一大批驯兽师(大数据专家)才能降服。这点远不如数据库来的亲近。于是就连Google这样的大厂也推出了Spanner这样的产品。

8. 回归数据库

     

数据库,在近些年来又迎来了春天。随着分布式协议的成熟,人们找到了一种新的方式来解决之前的痛点。分布式架构 + RDBMS = NEW SQL。之前面对的各种数据痛点:海量数据、极致性能、多模异构等问题,在新的架构下似乎也不是问题。而熟悉的SQL、数据一致性等又回来人们的身边。在数仓场景下,原来大数据方案中的各种工具组合,也终于可用一把瑞士军刀解决。于是乎,近两年无论是商业产品还是开源软件;无论是官方标准还是行业趋势,分布式数据库正逐步走入前台。

9. 云+数仓 = 云原生数据仓库

     

数据仓库,一直以来有些很困扰的问题。例如:面临着数据量爆炸性增长的问题,管理复杂、运维成本高的问题,价格昂贵、使用门槛较高问题等等。这些问题长期困扰着企业对数据仓库的使用。云的出现,为这些问题的解决开启一个新的方向。其从诞生之初,就致力于解决资源供给的问题。云与数仓的结合,提供了即开即用、无限扩展、简易运维、普惠大众,想想都会笑醒:)云原生数仓愈发受到人们的瞩目。它已经不仅仅是个概念,而是已经逐步走入成熟。

RECOMMEND

推荐阅读

01

《Apache Kylin权威指南(第2版)》

Apache,Kylin核心团队 著

点击链接了解详情并购买

推荐语:基于较新的ApacheKylin2.5,从架构设计、各模块的使用、与第三方的整合、二次开发以及开源实践等各个方面讲解ApacheKylin。

02

《Flink原理、实战与性能优化》

张利兵 著

点击链接了解详情并购买

推荐语:这是一部以实战为导向,能指导读者零基础掌握Flink并快速完成进阶的著作,从功能、原理、实战和调优等4个维度循序渐进地讲解了如何利用Flink进行分布式流式应用开发。作者是该领域的资深专家,现就职于第四范式。

03

《数据库系统内幕》

[美] 亚历克斯·彼得罗夫(Alex Petrov) 著

点击链接了解详情并购买

推荐语:高效内功修炼必备从数据库开发者角度,全景式解读现代数据库技术从存储引擎到分布式算法,涵盖所有常见组件和常用算法。

04

《数据库高效优化:架构、规范与SQL技巧》

点击链接了解详情并购买

推荐语:本书内容全面,从SQL优化、架构设计、开发规范、平台审核等多个角度展开,可以作为DBA日常工作中处理常见问题的备查手册。

05

《云原生:运用容器、函数计算和数据构建下一代应用》

季奔牛 译

点击链接了解详情并购买

推荐语:本书旨在能够提供一些基础知识,来帮助开发者和架构师更从容地开启云原生应用之旅。

更多精彩回顾

书讯 |9月书讯(下)| 开学季,读新书

书讯 |9月书讯(上)| 开学季,读新书

上新 | 一本书带你吃透Nginx应用与运维
书单 | 开学季——计算机专业学生必读的10本畅销经典

干货 | 巨详细!使用OpenCV和OpenVINO轻松创建深度学习应用

收藏 | 开学季——想打好数学基础?这些经典教材你最需要!

视频 | 4min视频带你了解阿里B2B电商算法

赠书 |【第20期】实践深度学习?先接住这三板斧再说

相关文章:

  • “设计”拍了拍“产品、技术、运营、管理”:求你看看《用户体验要素》
  • TIOBE 9 月编程语言:C++ 突起、Java 流行度下降
  • 数字化转型新视角:从国家和行业角度看数字化转型
  • ​用户画像从0到100的构建思路
  • 更新!更薄!更精华:《JavaScript编程精解》来了
  • 吐血整理:盘点19种大数据处理的典型工具
  • 前端工程师不可不知的Nginx知识
  • 基于大数据的用户画像构建小百科全书
  • 要马儿跑,又要马儿不吃草?聊聊联邦学习与分布式机器学习
  • 太忙没空去看湖景?来看阿里云DLA如何快速构建数据湖
  • 【第21期】以实际项目作驱动,换种方式学Java
  • 确定了!图灵奖得主John Hennessy将来CNCC 2020做特邀报告!
  • Webpack优化——将你的构建效率提速翻倍
  • 用 Python 画哆啦 A 梦
  • 红帽资深解决方案架构师魏新宇:云原生应用构建之路
  • 【347天】每日项目总结系列085(2018.01.18)
  • 2017年终总结、随想
  • extract-text-webpack-plugin用法
  • JavaScript-Array类型
  • js面向对象
  • js中的正则表达式入门
  • Mysql5.6主从复制
  • Redis提升并发能力 | 从0开始构建SpringCloud微服务(2)
  • Redux 中间件分析
  • select2 取值 遍历 设置默认值
  • springboot_database项目介绍
  • Vue学习第二天
  • webgl (原生)基础入门指南【一】
  • 分类模型——Logistics Regression
  • 两列自适应布局方案整理
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 爬虫进阶 -- 神级程序员:让你的爬虫就像人类的用户行为!
  • 前端知识点整理(待续)
  • 项目实战-Api的解决方案
  • 选择阿里云数据库HBase版十大理由
  • ​LeetCode解法汇总2304. 网格中的最小路径代价
  • ​云纳万物 · 数皆有言|2021 七牛云战略发布会启幕,邀您赴约
  • # C++之functional库用法整理
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (8)STL算法之替换
  • (Matlab)使用竞争神经网络实现数据聚类
  • (二)换源+apt-get基础配置+搜狗拼音
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (算法二)滑动窗口
  • (五)c52学习之旅-静态数码管
  • (一)基于IDEA的JAVA基础12
  • (转)visual stdio 书签功能介绍
  • ***测试-HTTP方法
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET开源项目介绍及资源推荐:数据持久层 (微软MVP写作)
  • .Net组件程序设计之线程、并发管理(一)