程序员一定要学好数据库

只会写代码的是码农;学好数据库,基本能混口饭吃;在此基础上再学好操作系统和计算机网络,就能当一个不错的程序员。

如果能再把离散数学、数字电路、体系结构、数据结构/算法、编译原理学通透,再加上丰富的实践经验与领域特定知识,就能算是一个优秀的工程师了。

这么说其实是有一些道理的,因为计算说穿了就是两个东西:数据与算法。

目前市面上常见的软件应用,大部分都属于数据密集型应用。通俗的话来讲,就是这些应用干的事儿就是把数据收集起来,需要的时候再拿出来。而这些操作都需要数据库来进行承载。

所以说,数据库离我们很近,也是一项开发者们非常需要掌握的技能。

内容重点:

  • 数据库解析
  • 数据库发展史
  • 对开发者的建议

1、啥是数据库?

640-68.jpeg

名词解析:数据库

数据库,简而言之可视为电子化的文件柜 —— 存储电子文件的处所,用户可以对文件中的数据运行新增、截取、更新、删除等操作。所谓“数据库”系以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库技术产生于 20 世纪 60 年代末 70 年代初,设置的主要目的是有效地管理和存取大量的数据资源。

数据库其实就是存放数据的仓库。它的存储空间很大,可以存放百万条、千万条、上亿条数据。但是数据库并不是随意地将数据进行存放,是有一定的规则的,否则查询的效率会很低。
随着互联网的发展,当今世界是一个充斥着大量数据的世界。数据的来源有很多,比如出行记录、消费记录、浏览的网页、发送的消息等等。除了文本类型的数据,图像、音乐、声音都是数据。

数年来,数据库技术和计算机网络技术的发展相互渗透,相互促进,已成为当今计算机领域发展迅速,应用广泛的两大领域。数据库技术不仅应用于事务处理,并且进一步应用到情报检索、人工智能、专家系统、计算机辅助设计等领域。

数据库的概念实际包括两层意思:

数据库是一个实体,它是能够合理保管数据的“仓库”,用户在该“仓库”中存放要管理的事务数据,“数据”和“库”两个概念结合成为数据库。

数据库是数据管理的新方法和技术,它能更合适的组织数据、更方便的维护数据、更严密的控制数据和更有效的利用数据。

数据库技术研究和管理的对象是数据,所以数据库技术所涉及的具体内容主要包括:

通过对数据的统一组织和管理,按照指定的结构建立相应的数据库和数据仓库;

利用数据库管理系统和数据挖掘系统设计出能够实现对数据库中的数据进行添加、修改、删除、处理、分析、理解、报表和打印等多种功能的数据管理和数据挖掘应用系统;

利用应用管理系统最终实现对数据的处理、分析和理解。

按照层级架构,数据库的架构一般可以划分为三层:

  • 内层:最接近实际存储体,亦即有关数据的实际存储方式;
  • 外层:最接近用户,即有关个别用户观看数据的方式;
  • 概念层:介于两者之间的间接层。

从其应用方式来看,数据库技术主要起着两方面的作用:

信息系统开发作用:利用数据库技术以及互联网技术,结合具体的编程语言,可以开发一个信息系统,从而解决业务数据的输入和管理问题.

数据分析与展示作用:利用RDBMS的数据查询功能对数据库中的数据进行关联组合或逐级汇总分析,并以表格,图形或报表形式将分析结果进行展示,从而解决业务数据的综合利用问题。

2、数据库发展阶段

640-69.jpeg

从原理来看,不难知道数据库技术的核心和基础就是「数据模型」。所以业内回顾数据库的发展阶段时,一般也是根据数据模型的演进作为相关的时间节点。
在数据库的发展历史上,数据库先后经历了层次数据库、网状数据库和关系数据库等各个阶段的发展。在这短短几十年的发展过程中,数据库的发展一般划分为下面这三代:

  • 第一代:网状和层次数据库系统;
  • 第二代:是关系数据库系统;
  • 第三代:以面向对象数据模型为主要特征的数据库系统。

🔸第一代:网状和层次数据库系统
第一代数据库系统是层次和网状数据库系统。层次数据库系统的典型代表是 1969 年 IBM 公司研制出的层次模型的数据库管理系统IMS。

🔸第二代:关系数据库系统
第二代数据库系统是关系数据库系统。1970 年 IBM 公司的 San Jose 研究试验室的研究员 Edgar F. Codd 发表了题为《大型共享数据库数据的关系模型》的论文,提出了关系数据模型,开创了关系数据库方法和关系数据库理论,为关系数据库技术奠定了理论基础。

20 世纪 70 年代是关系数据库理论研究和原型开发的时代,大量的理论成果和实践经验终于使关系数据库从实验室走向了社会,因此,人们一般把 20 世纪 70 年代称为数据库时代。

🔸第三代:以面向对象数据模型为主要特征的数据库系统
1990 年高级 DBMS 功能委员会发表了《第三代数据库系统宣言》,提出了第三代数据库管理系统应具有的三个基本特征:

1.应支持数据管理、对象管理和知识管理;
2.必须保持或继承第二代数据库系统的技术;
3.必须对其他系统开放。

随着云计算的发展和大数据时代的到来,关系型数据库越来越无法满足需要,这主要是由于越来越多的半关系型和非关系型数据需要用数据库进行存储管理。

于此同时,分布式技术等新技术的出现对数据库的技术提出了新的要求,传统的关系型数据库慢慢不能完成满足遇到的新需求,越来越多的非关系型数据库就开始出现。

这类数据库更强调数据库数据的高并发读写和存储大数据,这类数据库一般被称为 NoSQL(Not only SQL)数据库。但传统的关系型数据库在一些传统领域,依然保持了强大的生命力。

3、为什么建议开发者学好数据库?

640-71.jpeg

就像开头我们说的,现在的应用大部分都属于数据密集型应用,除非我们准备从轮子造起,不然根本没那么多机会去搞看起来很高端的数据结构和算法。

甚至写代码的能力可能也没那么重要,这个大家应该都懂。大部分需求都有现成的轮子可以使用,主要的创造性工作往往在数据模型与数据流设计上。

实际生产中,数据表就是数据结构,索引与查询就是算法。而应用代码往往扮演的是胶水的角色,处理IO与业务逻辑,其他大部分工作都是在数据系统之间搬运数据。

架构师最重要的能力之一,就是能够灵活地权衡取舍、集成拼接数据系统。绝大多数工程师都不会去从零开始编写存储引擎,因为在开发应用时,数据库已经是足够完美的工具了。关系型数据库则是目前所有数据系统中使用最广泛的组件,可以说是程序员吃饭的主要家伙,重要性不言而喻。

我曾经采访过很多 SegmentFault 社区的用户,都表示上学的时候没有好好学数据库,现在发现基础真的很重要又翻出来重新学了一遍。假如你还在上学,建议你抓住现在的机会,好好掌握这些基础的原理,工作之后很难再有时间和机会去”找补“了。

留下评论

电子邮件地址不会被公开。 必填项已用*标注