第一章 SQL编程系列-数据库介绍与安装
1 引言
数据库作为信息时代的核心基础设施,其发展历程可谓波澜壮阔,从上世纪50年代初始概念到今天的高度复杂系统,数据库技术的进步不仅推动了信息技术的发展,也深刻影响了社会的各个领域。尤其是在我们迈入信息时代之际,数据库技术已成为支撑现代社会的基石,它不仅承载着海量的数据信息,更是数据驱动决策的关键。随着技术的快速迭代和发展,数据库领域经历了翻天覆地的变化,从早期的层次模型和网状模型,到关系型数据库的兴起,再到NoSQL和NewSQL的多样化发展,每一步都记录着人类对数据管理和利用的深刻理解。那么本文将沿着时间的脉络,梳理数据库的演进历程,并讨论其技术革新的时间轨迹。
1.1 数据库管理系统发展历史
数据库管理系统(DBMS)的发展历史是信息技术领域不断突破与演进的缩影,其历程可分为以下关键阶段:
1.1.1 早期探索(1960s-1970s):从文件系统到层次/网状数据库
- 文件系统阶段(1950s-1960s)
计算机早期主要用于科学计算,数据以穿孔纸带等物理形式存储,管理依赖人工。
1950年代末,磁盘和操作系统出现,文件系统成为数据管理的主要方式,但存在数据冗余、独立性差等问题。
- 层次数据库的兴起(1960s)
1961年:美国通用电气公司开发出集成数据存储(IDS),这是首个网状数据库管理系统,用于阿波罗登月工程的数据管理,标志网状数据库诞生。
1968年:IBM推出IMS(Information Management System),这是首个大型商用层次数据库管理系统,广泛应用于商业和金融领域。
- 网状数据库的标准化(1970s)
1965年:数据系统语言会议(CODASYL)成立数据库任务组(DBTG)。
1971年:DBTG发布报告,定义网状数据模型、数据定义语言(DDL)和数据操纵语言(DML),推动网状数据库标准化。
1.1.2 关系型数据库革命(1970s-1980s):理论突破与商业化
- 理论奠基(1970年)
IBM研究员埃德加·科德(E.F. Codd)提出关系数据模型,建议将数据保存在行和列组成的表中,解决网状/层次数据库的复杂性。
原型验证(1974年)
IBM开发System R,验证关系模型的可行性,并直接推动SQL语言的诞生。SQL成为关系数据库的标准操作语言。
- 商业化浪潮(1970s-1980s)
1976年:霍尼韦尔推出首个商用关系数据库MRDS。
1979年:Oracle推出首个商用关系型数据库管理系统(RDBMS)。
1980s:IBM DB2、Informix、Sybase等系统相继问世,关系型数据库因模型简单、数据独立性强等优势迅速占据市场主导地位。
- 标准化进程(1980s-1990s)
1986年:ANSI发布SQL-86标准。
1992年:SQL-92标准引入递归查询、触发器等高级功能。
1999年:SQL:1999(SQL3)支持面向对象特性,如用户定义类型和继承。
1.1.3 面向对象数据库的尝试(1980s-1990s):理论融合与挑战
- 技术背景
20世纪80年代,计算机辅助设计(CAD)、地理信息系统(GIS)等领域对复杂数据类型(如图形、多媒体)的需求增加,传统关系数据库难以满足。
- 标准化与产品化
1989年:对象数据库管理组(ODMG)成立,1993年发布ODMG-93标准,定义对象模型、查询语言及与C++等语言的绑定。
典型系统:Ontos、ObjectStore等面向对象数据库诞生,支持类、对象、继承等特性。
- 局限与挑战
尽管面向对象数据库在理论上具有优势,但因技术复杂性、市场接受度低及关系数据库的持续优化,未能完全取代后者。
1.1.4 互联网与大数据时代(1990s-2000s):分布式、NoSQL与云数据库
- Web数据库的融合
互联网兴起推动Web技术与数据库结合,形成Web数据库。用户通过浏览器访问数据库,实现动态交互(如在线购物、社交网络)。
- 分布式数据库的崛起
为应对大规模数据和高并发访问,Google Spanner和F1等分布式数据库诞生,支持水平扩展和ACID事务。
- NoSQL的爆发(2000s)
2009年:MongoDB(文档数据库)、Cassandra(宽列数据库)等NoSQL系统出现,针对非结构化数据、高扩展性和实时性需求优化。
典型场景:大数据分析、社交网络、物联网等。
- 云数据库的普及
数据库服务迁移到云端(如AWS RDS、阿里云RDS),提供弹性扩展、按需付费和自动化运维。
1.1.5 大数据与智能化(2010s-至今):NewSQL与AI融合
- NewSQL的兴起
TiDB、CockroachDB等系统结合关系型数据库的ACID特性和NoSQL的扩展性,支持混合事务与分析处理(HTAP)。
- 大数据处理技术
Hadoop生态系统与数据库融合,处理海量数据。列存数据库(如HBase)优化分析效率。
- AI与数据库的融合
智能优化:AI用于索引推荐、查询优化和异常检测。
自动化运维:自修复、自调优数据库减少人工干预。
1.2 我国数据库管理系统发展历史
中国数据库管理系统的发展历史是一部从技术引进到自主创新、从政策驱动到市场引领的演进史,其历程可划分为以下关键阶段:
1.2.1 萌芽阶段(1970s-1990s):理论奠基与技术探索
- 学术启蒙与人才培养
1978年:中国人民大学萨师煊教授开设“数据库”课程,标志着数据库理论正式引入中国。
1982年:萨师煊主编的《数据库系统概论》出版,成为国内首部体系化教材,为人才培养奠定基础。
1985年:第一代大学生将数据库技术应用于国防、军工等领域,推动技术落地。
技术萌芽与早期尝试
1988年:华中科技大学研发出中国首个自主版权的数据库原型CRDS,但早期产品如达梦、人大金仓等存在“大而全但创新不足”的问题,稳定性与性能难以满足核心业务需求。
市场格局:此时市场完全被Oracle、IBM DB2等国际巨头垄断,国产数据库仅在国防、军工等特定领域小范围应用。
- 政策与产业初探
1999年:北京人大金仓信息技术股份有限公司成立,成为中国首家数据库公司,标志着产业化起步。
2000年:互联网兴起催生海量数据处理需求,但国产数据库仍依赖进口,技术自主性不足。
1.2.2 成长阶段(2000s-2010s):商业化起步与政策推动
- 企业创立与技术路线分化
老牌厂商崛起:达梦、南大通用等企业相继成立,初期产品多基于开源数据库(如MySQL、PostgreSQL)进行二次开发,逐步积累技术经验。
政策支持:国家“核高基”专项(2006年)和“863计划”为国产数据库提供资金与资源支持,推动技术攻关。
- 关键技术突破
分布式架构:南大通用推出GBase 8a列存分析型数据库,突破传统MPP技术瓶颈,提升大数据处理能力。
云原生探索:阿里云PolarDB(2017年)采用存储计算分离架构,实现秒级弹性扩展,标志国产数据库进入云原生时代。
- 市场需求与国产替代加速
信息安全需求:2014年“棱镜门”事件后,国产化替代进程加速,金融、电信等行业开始试点国产数据库。
“ 去IOE”运动:阿里巴巴等企业推动去IBM、Oracle、EMC化,采用PC服务器、MySQL等开源技术,降低对国外产品的依赖。
1.2.3 崛起阶段(2010s-至今):技术爆发与生态重构
- 分布式与云原生技术领先
阿里OceanBase:2010年启动研发,2019年以6088万tpmC登顶TPC-C榜单,打破Oracle垄断,成为金融、电信等行业的核心系统选择。
华为GaussDB:2011年启动研发,首创全密态技术,在加密状态下直接处理数据,兼顾安全与性能,广泛应用于金融、政务领域。
- 开源生态与全球化布局
华为openGauss:2020年开源社区成立,吸引850余家企业成员和7600余位贡献者,推动技术共建与生态繁荣。
PingCAP TiDB:兼容MySQL协议,支持HTAP混合负载,成为全球分布式数据库标杆,产品已进入东南亚、欧洲市场。
- 市场需求与商业化突破
行业应用深化:金融行业国产化替代率超60%(2022年),政务市场实现100%国产软硬件支撑,电信、能源等领域加速推进。
市场规模扩张:2022年中国数据库市场规模达403.6亿元,预计2027年突破1286.8亿元,年复合增长率达26.1%。
1.3 数据库分类及其简介
数据库管理系统(DBMS)是用于创建、管理和操作数据库的软件系统,其分类方式多样,以下是基于不同维度对数据库管理系统的分类、简介及对应产品的详细介绍:
1.3.1 按数据模型分类
1 关系型数据库管理系统(RDBMS)
- 简介:基于关系模型,使用表格形式存储数据,每一行代表一个单独的记录,每一列代表一个字段。这些表格可以通过预定义的关系进行连接,使得跨多个表的数据检索变得简单。关系型数据库使用SQL(结构化查询语言)作为其标准查询语言,遵循ACID(原子性、一致性、隔离性、持久性)特性,确保事务处理的安全性和可靠性。
- 产品:
- Oracle Database:由甲骨文公司开发的企业级关系型数据库,以其高性能、高可用性和安全性著称,广泛应用于大型企业和政府机构。
- MySQL:开源的关系型数据库,因其易用性和高效性能而受到中小型企业和初创公司的青睐,常用于Web应用程序。
- Microsoft SQL Server:微软提供的关系型数据库管理系统,集成了商业智能工具和服务,适合Windows环境下的企业应用。
- PostgreSQL:开源的对象-关系型数据库,以其扩展性和对标准的严格遵守而闻名,支持复杂的查询和高级特性,如地理空间数据处理。
- IBM Db2:IBM开发的关系型数据库,提供了先进的分析能力和集成的安全特性,适用于大型企业和数据密集型应用。
- SQLite:轻量级的嵌入式关系型数据库管理系统,适用于嵌入式设备和移动应用。
2 非关系型数据库管理系统(NoSQL)
- 简介:不使用传统表格形式存储数据,支持灵活的数据模型,如文档型、键值对、宽列存储和图形数据库,以适应不同的业务需求。NoSQL数据库的设计是为了处理大规模数据集和高并发访问,提供了CAP定理中的可用性(Availability)和分区容忍性(Partition Tolerance)。
- 产品:
- 文档型:
- MongoDB:流行的文档型数据库,使用BSON格式存储数据,支持灵活的模式设计和高效的查询性能,适合快速开发和迭代的应用。
- CouchDB:开源的NoSQL数据库,使用JSON存储信息,JavaScript作为查询语言。
- 键值存储:
- Redis:内存中的键值对存储系统,也被称为数据结构服务器,因其极快的速度和丰富的数据类型(如列表、集合、有序集合)而广受欢迎,常用于缓存和消息队列。
- Memcached:开源、高性能、分布式内存缓存系统,旨在通过减少数据库负载来加速动态Web应用程序。
- 宽列存储:
- Cassandra:由Apache基金会维护的宽列存储数据库,专为处理大规模数据集而设计,具有极高的可扩展性和容错能力,适用于高吞吐量的写入操作。
- HBase:谷歌为BigTable数据库设计的分布式非关系数据库,适用于海量数据存储和实时访问。
- 图形数据库:
- Neo4j:领先的图形数据库,专注于实体之间的关系建模,适用于社交网络分析、推荐系统和欺诈检测等领域,提供了直观的Cypher查询语言。
- 文档型:
3 NewSQL数据库
- 简介:结合关系型数据库的ACID特性和NoSQL的扩展性,支持混合事务与分析处理(HTAP)。NewSQL数据库旨在提供与关系型数据库相同的事务保证,同时具备NoSQL数据库的可扩展性和性能。
- 产品:
- TiDB:分布式NewSQL数据库,兼容MySQL协议,支持水平扩展和强一致性。
- CockroachDB:分布式SQL数据库,提供全球部署和强一致性保证。
- VoltDB:内存数据库,通过内存计算实现高吞吐和低延迟。
1.3.2 按应用场景分类
1 企业级数据库管理系统
- 简介:针对企业级应用设计,提供高性能、高可用性、高安全性和丰富的管理功能,支持大规模数据处理和复杂事务。
- 产品:
- Oracle Database
- Microsoft SQL Server
- IBM Db2
2 移动设备数据库管理系统
- 简介:针对移动设备设计,具有轻量级、低功耗、嵌入式等特点,支持移动应用的数据存储和管理。
- 产品:
- SQLite
3 物联网数据库管理系统
- 简介:针对物联网应用设计,支持海量设备接入、实时数据采集和处理、低功耗等特点。
- 产品:
- InfluxDB:开源时序数据库,优化时间序列数据存储和查询,适用于物联网和监控场景。
- OpenTSDB:分布式可扩展时序数据库,基于Hadoop和HBase,适用于大规模时间序列数据存储和分析。
1.3.3 按技术架构分类
1 集中式数据库管理系统
- 简介:数据库运行在单一计算机上,所有数据存储和处理都在该计算机上完成,适用于小型应用和测试环境。
- 产品:大多数传统的关系型数据库管理系统(如MySQL、PostgreSQL)都支持集中式部署。
2 分布式数据库管理系统
- 简介:数据库跨多台计算机分布式存储和处理数据,支持水平扩展和高可用性,适用于大规模应用和高并发场景。
- 产品:
- 谷歌Spanner:全球分布式数据库,支持强一致性和水平扩展。
- 蚂蚁金服OceanBase:分布式关系型数据库,适用于金融级高并发场景。
- 腾讯TDSQL:分布式数据库,支持金融级高可用和强一致。
3 云数据库管理系统
- 简介:数据库服务部署在云端,提供弹性扩展、按需付费和自动化运维等特点,适用于各种规模的应用和企业。
- 产品:
- 阿里云RDS:支持多种关系型数据库(如MySQL、PostgreSQL)的云服务。
- 腾讯云MongoDB:基于MongoDB的云数据库服务,提供高可用性和弹性扩展。
- AWS DynamoDB:全托管式NoSQL数据库服务,支持键值和文档数据模型。
1.3.4 按开源与商业分类
1 开源数据库管理系统
- 简介:源代码公开,可自由使用、修改和分发,通常由社区驱动开发和维护。
- 产品:
- MySQL
- PostgreSQL
- MongoDB(社区版)
- Redis
2 商业数据库管理系统
- 简介:由商业公司开发和销售,通常需要购买许可证,提供专业的技术支持和服务。
- 产品:
- Oracle Database
- Microsoft SQL Server
- IBM Db2
- MongoDB(企业版)
2 数据库安装-以mysql为例,其他数据库后续补充
2.1 mysql安装
2.1.1 mysql8.4版本安装
Centos7.6图文安装mysql8.4详细步骤记录
2.1.2 mysql5.7安装
CentOS 7 下 MySQL 5.7 的详细安装与配置
2.1.3 docker安装mysql
Docker在一台服务器部署多个mysql
2.2 oracle安装
2.2.1 Oracle 11g安装
CentOS 7静默安装Oracle 11g:完整图文指南