1、数据库概述
数据库(Database)是按照一定的数据结构组织、存储和管理数据的仓库。数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。它是一个存储相关数据的集合,这些数据通常是结构化的,包括文本、数字、图像、音频等多种类型。数据库的主要目的是有效地管理和处理存储的数据,以便于用户进行查询、更新和维护。
2、数据库在生活中的应用
数据库在生活中无处不在,你可能还未意识到但是却在一直使用数据库。当你查询你的历史邮件信息时,是在使用数据库;当你在使用百度等搜索引擎网站进行资料查询时,是在使用数据库;当你登录系统或者网站平台需要通过账号密码登录时,也是在使用数据库;网站需要数据库来存储数据,学校需要数据库来存储学生、老师等信息,公司需要数据库来存储员工信息和资料。
3、数据库的分类
关系型数据库
在关系数据库(最常见的类型)中,数据组织为表,这些表保存有关每个实体的信息,并通过行和列表示预定义的类别。可以灵活高效地访问这种结构化数据。
关系数据库的示例包括 SQL Server、Azure SQL、MYSQL、PostgreSQL 以及MariaDB。
非关系型数据库
非关系数据库存储非结构化或半结构化数据。它们不会像关系数据库那样使用带有列和行的表。而是使用针对要存储的数据类型的特定要求进行了优化的存储模型。使用非关系数据库,可以快速访问、更新和分析大型分布式数据集。
非关系数据库的示例包括 MongoDB、Azure Cosmos DB、DocumentDB、Cassandra、Couchbase、HBase、Redis以及 Neo4j。
4、数据库的发展史
数据库系统初步形成
在20世纪60年代,数据库系统初步形成,人们通过人工和文件系统的方式来存储、管理数据。在人工管理时期,人们常使用穿孔纸带来管理数据,虽然穿孔纸带因不具备电子化特征、不能被称为数据库,但其代表着人们在数据存储结构上思考和实践的结果。
文件系统可以说是最早的数据库了,操作系统提供的文件管理方法使得程序可以通过文件名来访问文件中的数据,不必再寻找数据的物理位置。相比较手工处理的方式,文件系统使得管理数据变得简单一些,使用者不需要再翻来覆去地查找文件的位置,但是文件内的数据仍然没有组织起来,程序员需要在脑海中尝试构造出数据与数据的关系,再编写代码才能从文件中提取关键数据。除过数据结构和数据关系不完整的问题外,此时的数据只面向某个应用或者某个程序,数据的共享性也有着一定的问题。有必要单独提及此时主要是以文件系统为基础的简单的数据库管理系统(DBMS)。这些数据库系统主要是为特定应用场景而开发的,数据存储在应用程序中的文件里,使用文件操作语言进行数据操作。此时的数据库系统无法满足大量数据的存储和管理需求。
关系数据库兴起
1970年, IBM 实验室的Edgar Frank Codd 发表了一篇题为《大型共享数据库数据的关系模型》论文,提出基于集合论和谓词逻辑的关系模型,为关系型数据库技术奠定了理论基础。关系模型最大的创新点是拆掉了表与表之间的联系,将这种关系只存储在表中的一个字段中,从而实现了表与表之间的独立。关系数据库系统成为数据库技术的主流。关系数据库系统使用结构化查询语言(SQL)进行数据操作和管理,具有数据结构化、高度共享、低冗余、易于移植等特点,可以高效地管理结构化数据。
当时Codd提出这个模型后,受限于当时的硬件条件,这个模型遭到了很多批评,人们认为这种模型是难以实现的。正如上述这个例子,当在检索教研室这个表的数据时,碰到系编号这个字段时就需要再去遍历一遍这张表的数据,这种提取数据的方式让当时的机器难以承受。但是在摩尔定律的加持下,这些问题迎刃而解,这种建立在严格数学概念上的关系模型很快就得到了学术界和工业界的青睐。
1973年,IBM启动了验证关系型数据库系统的项目System R,同年伯克利大学的Michael Stonebraker等人启动了关系数据的研究项目 Ingres(interactive graphics andretrieval system)。
1974 年,Ingres 诞生,为后续大量基于其源码开发的PostgreSQL、Sybase、Informix 、Tandem和Sql Server等著名产品打下坚实基础。1976年,P.P.Chen提出了实体-联系模型(简称E-R模型),这种模型常被用来描述、抽象概念数据模型。1979年,Oracle诞生,从诞生之日起,Oracle就一直是数据库领域处于领先的产品。1983年,经过长达十年的开发与测试,IBM发布了Database2,这标志着DB2的正式诞生。
面向对象数据库系统
1985年,为存储、表达更为复杂的数据结构(例如嵌套表、非结构化数据等),人们提出了面向对象的数据模型,这种模型吸收了层次、网状和关系数据库等各类数据模型的特点,并借鉴了面向对象的设计方法。面向对象数据库系统(Object-Oriented Database Systems,OODBS)成为新的研究热点。面向对象的数据模型将所有事物都看作是一个对象,每个对象的定义包括状态和行为两个方面,其中状态由一组属性组成,行为由一组方法组成,具有相同属性和方法的对象构成一个对象类。面向对象数据库系统将面向对象程序设计方法应用于数据库领域,从而可以更好地支持复杂数据结构和对象的存储和管理。OODBS可以提供比关系数据库更好的安全性和更高的数据集成性。
虽然面向对象的数据模型很早就被提出来了,但在当时来说,仍然还是关系型数据库的天下。1986 年,美国国家标准局(ANSI)数据库委员会批准SQL作为数据库语言的美国标准并公布标准 SQL 文本。1987 年,国际标准化组织(ISO)也做出了同样决定,对 SQL 进行标准化规范并不断更新,使得 SQL 成为关系型数据库的主流语言。此后相当长的一段时间内,不论是微机、小型机还是大型机,不论是哪种数据库系统,都采用SQL 作为数据存取语言,各个公司纷纷推出各自支持SQL的软件或接口。
数据仓库概念
随着关系型数据库的发展以及不同业务场景的数字化,人们逐渐产生通过数据监控业务发展,并通过数据分析来辅助业务发展的想法。传统的关系数据库系统主要是面向事务处理系统的,无法满足决策分析的需求。,1988年,数据仓库的概念被正式提出。数据仓库是一个面向主题的、集成的、非易失的、随时间变化的用来支持管理人员决策的数据集合。
尽管当时的人们已经有了数据仓库的概念,但是对于数据仓库的实现方式,一直争论不休。直到1991年Bill Inmon出版了《Buildingthe Data Warehouse》(建立数据仓库)这本书,数据仓库实现方法的争论才告一段落。在这本书中,Inmon不仅对数据仓库提出了更精确的定义- 数据仓库是在企业管理和决策中面向主题的、集成的、与时间相关的、不可修改的数据集合,而且提出了范式建模的数据仓库建设方法。尽管后来范式建模受到了维度建模的挑战,但因Inmon的巨大影响力,他被尊称为“数据仓库之父”。
数据仓库的主要特点包括:面向主题、集成、非易失性、随时间变化等。数据仓库将多个异构的数据源按照主题进行集成,使用ETL(Extract-Transform-Load)工具进行数据的抽取、转换和加载。数据仓库中的数据是历史的、综合的、持久的,随着时间的积累,数据量会越来越大。此外,数据仓库还提供了多维分析、数据挖掘、报表生成等功能,支持决策分析的需求。
大数据时代的数据仓库
随着大数据时代的到来,数据仓库也需要适应大数据的需求。大数据具有数据量大、速度快、类型多、价值密度低等特点,需要使用分布式存储和计算技术进行处理。在大数据时代,数据仓库需要支持海量数据的存储和分析,Hadoop、Spark等大数据技术得到了广泛应用。