数据库简介
概念
- 数据库:按照数据结构来组织、存储、管理数据的仓库。
诞生
计算机的发明是为了做科学计算的,而科学计算需要大量的数据输入和输出。
早期,可以使用打孔卡片的孔、灯泡的亮灭来表示数据输入、输出。
- 1940年,数据可以存储在磁带上,顺序的读取、写入磁带。
- 1956年IBM发明了磁盘驱动器这个革命性产品,支持随机访问。
- 随着信息化时代的到来,有了硬件存储技术的发展,有大量的数据需要存储和管理。
数据库DBMS发展
- 萌芽期:文件管理
- 第一代:层次数据库、网状数据库
- 第二代:SQL、关系型数据库
- 第三代:面向对象的DBMS(OODBMS),对象关系的DBMS(ORDBMS)
文件系统管理
- 磁盘上一个个文件,数据鼓励,数据冗余
- 格式不统一,很难统一管理
- 无法高效查询,无法灵活查询
层次数据库
以树型结构表示实体及其之间的联系。关系只支持一对多。
代表数据库IBM IMS。
网状数据库
通用电气最早在1964年开发出网状数据库IDS,只能运行在GE自家的主机上。
- 结点描述数据,结点的联系就是数据的关系。
- 能够直接描述客观世界,可以表示实体间多种复杂关系,而这是层次数据模型无法做到的。比如,一个结点可以有 多个父结点,结点之间支持可以多对多关联。
关系数据库
- 使用行、列组成的二维表来组织数据和关系,表中行(记录)即可以描述数据实体,也可以描述实体间关系。 关系模型比网状模型、层次模型更简单,不需要关系数存储的物理细节,专心于数据的逻辑构建,而且关系模型有 论文的严格的数学理论基础支撑。
- 1970年6月,IBM的研究员E.F.Codd发表了名为“A Relational Model of Data for Large Shared Data Banks”的论 文,提出了关系模型的概念,奠定了关系模型的理论基础。
- 1976年,IBM实验室System R项目,通过实现数据结构和操作来证明关系模型实用性,并直接产生了结构化查询语言SQL。1987年,SQL被ISO组织标准化。
关系模型,有严格的数学基础,抽象级别较高,简单清晰,便于理解和使用。
经过几十年的发展,关系数据库百花齐放,技术日臻成熟和完善。
基于关系模型构建的数据库系统称为RDBMS(Relational DataBase System)。 IBM DB2、Oracle的Oracle和Mysql、微软的MS SQL。以前的Infomix、Sybase等。
Oracle的发展
拉里·埃里森(Larry Ellison)仔细阅读了IBM的关系数据库的论文,敏锐意识到在这个研究基础上可以开发商用软件 系统。他们几个创始人决定开发通用商用数据库系统Oracle,这个名字来源于他们曾给中央情报局做过的项目名。
- 1979年发布了ORACLE 2.0版本(实际上是1.0)。1983年,Oracle v3。1984年,Oracle v4。1985年,Oracle v5。1988年,Oracle v6引入了行级锁等新技术,然而这是个不稳定的版本。直到1992年的时候,Oracle7才逐渐 稳定下来,并取得巨大成功。2001年的9i版本被广泛应用。
- 2009年4月20日,甲骨文公司宣布将以每股9.50美元,总计74亿美金收购SUN(计算机系统)公司。2010年1月成 功收购。
- 2013年,甲骨文超过IBM,成为继微软之后的全球第二大软件公司。
Mysql的发展
- 1985年几个瑞典人为大型零售商的项目设计了一种利用索引顺序存取数据的软件,这就是MyISAM的前身。1996 年,MySQL 1.0发布,随后发布了3.11.1版本,并开始往其它平台移植。2000年MySQL采用GPL协议开源。 MySQL 4.0开始支持MyISAM、InnoDB引擎。2005年10月,MySQL 5.0成为里程碑版本。
- 2008年1月被Sun公司收购。
- 2009年1月,在Oracle收购MySQL之前,Monty Widenius担心收购,就从MySQL Server 5.5开始一条新的GPL分 支,起名MariaDB。
- MySQL的引擎是插件化的,可以支持很多种引擎:
- MyISASM,不支持事务,插入、查询速度快。
- InnoDB,支持事务,行级锁,MySQL 5.5起的默认引擎
去IOE
- 它是阿里巴巴造出的概念。其本意是,在阿里巴巴的IT架构中,去掉IBM的小型机、Oracle数据库、EMC存储设 备,取而代之使用自己在开源软件基础上开发的系统。传统上,一个高端大气的数据中心,IBM小型机、Oracle数 据库、EMC存储设备,可以说缺一不可。而使用这些架构的企业,不但采购、维护成本极高,核心架构还掌握在他 人手中。
- 对于阿里巴巴这样大规模的互联网应用,应该采用开源、开放的系统架构。这种思路并不是阿里巴巴的新发明,国 外的谷歌、Facebook、亚马逊等早已为之。只不过它们几乎一开始就有没有采用IT商业公司的架构,所以他们也 不用“去IOE”。
- 去IOE,转而使用廉价的架构,稳定性一定下降,需要较高的运维水平解决。
NoSQL
- NoSQL是对非SQL、非传统关系型数据库的统称。
- NoSQL一词诞生于1998年,2009年这个词汇被再次提出指非关系型、分布式、不提供ACID的数据库设计模式。
随着互联网时代的到来,数据爆发式增长,数据库技术发展日新月异,要适应新的业务需求。
随着移动互联网、物联网的到来,大数据的技术中NoSQL也同样重要。
- 数据库流行度排名 2017.12
- 数据库流行度排名 2018.6
- SQL关系型数据库
- Oracle 目前性能最好的关系型数据库。给钱就给你提供服务。只认钱。
- MySQL 目前被oracle收购,原来是sum公司。单sum公司被oracle收购了。给钱也能提供更好的服务。分为过个版本。
- Microsoft SQL Server 微软的一款数据库,但没有多少服务器会使用这个数据库。
- MariaDB 前身是Mysql,Mysql被收购后,另起炉灶,拉了个分支,重命名为MariaDB,开元。由Mysql作者维护。
- SQLite 小巧的数据库。通常应用在Android平台。关系型数据库
- DB2 桌面系数据库。
- Microsoft Access
- NoSQL非关系型数据库
- MongoDB 文档数据库Document store,更像json。字段自由。每一行的字段可以不和上一行的一样。
- Redis 基于内存的数据库。key-value store。内部存储的就是kv对。(由于数据不落地(不落磁盘),所以效率比较高。),有持久化方案,实际是可以写入磁盘。(通常有集群)
- 数据仓库
- Hive 支持SQL,是Hadoop生态圈里面的数据库,大数据领域的组件之一。写成的特殊的SQL语句,会转换成代码,将代码下发到各个节点。并行计算,统计。
- HBase 列存数据库Wide column store,列可以不固定,每一行的列可以不一样。国内用的比较多。存储海量数据
- Cassandra 列存数据库Wide column store,列可以不固定,每一行的列可以不一样。国外用的比较多。存储海量数据库。
- 搜索引擎数据库(Search engine)
- Elasticsearch 倒排索引数据库,快速定位数据。分布式数据库。
- Solr 单机版倒排索引数据库,可以快速检索。中小型搜索网站,一般用Solr就可以解决问题。