数据库基础介绍(一)

第1章 数据库介绍

1.1 什么是数据库

简单的说,数据库(英文Database)就是一个存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据库提供的多种方法来管理数据库里的数据。

更简单的形象理解,数据库和我们生活中存放再无的储物间仓库性质一样,区别只是存放的东西不同,杂物间存放实体的物件,而数据库里存储的是数据,这样我们就对数据库有了一个初步的了解了。

数据库诞生于距现在大概流失多年前,随着信息技术的发展和人类社会的不断进步,特别是2000年后,数据库不在仅仅是存储和管理数据了,而转变成用户所需要的各种数据管理方式。数据库有很多种类和功能,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。

1.2 什么是数据

数据是指对客观事件进行记录并可以鉴别的符号,是对客观事物的性质、状态以及相互关系等进行记载的物理符号或这些物理符号的组合。它是可识别的、抽象的符号。

1.3 DBA的工作内容

图片[1]|数据库基础介绍(一)|leon的博客

第2章 数据库的种类

按照早期的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库、网络式数据库和关心型数据库。而在当今的互联网中最常用的数据库模型主要是两种,即关系型数据库和菲关系型数据库。

2.1 关系型数据库介绍

图片[2]|数据库基础介绍(一)|leon的博客

2.1.1 关系型数据库由来

虽然网状数据库和曾侧数据库已经很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。用户在对这两种数据库进行存取时,仍然需要明确数据的存储结构,指出存储路径。而关系数据库就可以较好低解决这些问题。

2.1.2 关系型数据库介绍

关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过对这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。

关系型数据库诞生距今已有40多年了,从理论产生发展到现实产品,例如大家最常见的MySQL和Oracle数据库,Oracle在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大产业市场,而MySQL也是不容忽视的数据库,以至于被Oracle重金收购了。

2.1.3 关系型数据库表格之间的关系举例

表1:学生表
学号 姓名 年龄
S001 test1 28
S002 test2 30
S003 test3 26
S004 test4 22

 

表2:课程表
课程号 课程名 学分
C1001 linux运维 25
C1002 linux架构 25
C1003 python运维 25
C1004 大数据分析 25

 

表3:学生选课表
学号 课程号 成绩
S001 C1001 80
S002 C1002 90
S003 C1003 95
S004 C1004 70
  • 小结:什么是关系型数据库
  1. 二维表格
  2. 典型产品 Oracle传统企业,MySQL是互联网企业,运维最常用的是MySQL
  3. 通过SQL结构化查询语句存取数据
  4. 保持数据一致性方面很强,数据安全性方面强(ACID)

2.2 非关系型数据库介绍

图片[3]|数据库基础介绍(一)|leon的博客

2.2.1 非关系型数据库诞生背景

非关系型数据库也被称为NoSQL数据库,因此NoSQL的生产并不是要彻底低否定关系型数据库,而是作为传统关系型数据库的一个有效补充,NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。

随着互联网Web2.0网站的兴起,传统的关系型数据库在应付Web2.0网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的Web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:传统的关系型数据IO瓶颈、性能瓶颈都难以有效突破,于是开始出现了大批针对特定场景,以高性能和使用便利为目的功能特异化的数据库产品,NoSQL(非关系型)类的数据库就是在这样的情境中诞生并得到了非常迅速的发展。

NoSQL是非关系型数据库的广义定义,它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL数据存储不需要固定的表结构,通常也不存在连续操作。在大数据存取上具备关系型数据库无法比拟的性能优势。该术语(NoSQL)在2009年初得到了广泛认同。

当今的应用体系结构需要数据存储在横向伸缩性上能够满足需求。儿NoSQL存储就是为了事项这个需求而诞生的。Google的BigTable与Amazon的Dynamo是非常成功的商业NoSQL实现。一些开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同,Redis,mongodb也逐渐的越来越受到各类大中小型公司的欢迎和追捧。

  • 非关系型数据库历史小结:
  1. 0时代:企业提供内容,用户浏览,所以关系型数据库够用,并发并不高,所以不需要NoSQL。
  2. 0时代:核心是企业提供平台,用户参与提供内容。这时关系型数据库无法满足需求了。
  3. 2003 NoSQL出现:memcached诞生,关注的点是性能,而安全性关注比较低。随着安全性需求不断提升,所以有了redis。
  • NoSQL非关系性数据库小结:
  1. NoSQL不是否定关系型数据库,而是作为关系型数据库的一个重要补充,现在也有部分替代的趋势
  2. NoSQL为了高性能、高并发而生的,关注高性能,高并发,灵活性,忽略和上述无关的功能
  3. 现在也在提升安全性和使用功能
  4. NoSQL典型产品memcached(纯内存),redis(持久化缓存),mongodb(最接近关系型数据的库的NoSQL)
注意:NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“Not SQL”的意思

2.2.2 非关系型数据库种类

  • 键值(Key-Value)存储数据库

键值数据库就类似传统语言中使用的哈希表,可以通过key来添加、查询或者删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性。

键值(Key-Value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个指针执行特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署、高并发。

典型产品:Memcached、Redis、MemcachedDB、BerkeleyDB

  • 列存储(column-oriented)数据库

列存储数据库将数据库存在列族中(column family)中,一个列族存储的是经常被一起查询的相关数据。例如:如果有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。

这部分数据库通常是用来应对分布式存储的海量数据,键仍然存在,但是它们的特点是指向了多个列,这些列是由列家族来安排的。

典型产品:Cassandra(200台服务器集群),HBase(新浪,360)

  • 面向文档(Document-Oriented)的数据库

文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级,允许之间嵌套键值,而且文档型数据库比键值数据库的查询效率更高。

面向文档数据库会将数据以文档的形式存储。每个文档都是子包含的数据库单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值即可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。

典型产品:MongoDB、CouchDB

  • 图形数据库

图形数据库允许我们将数据以图的方式存储,实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有是哪个实体,Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。

典型产品:Neo4J、InfoGrid

2.3 关系型数据库和非关系型数据库的区别

图片[4]|数据库基础介绍(一)|leon的博客图片[5]|数据库基础介绍(一)|leon的博客

第3章 常用关系型数据库产品介绍

3.1 Oracle数据库

Oracle前身叫SDL,由Larry Ellison 和另两个编程人员在1977创办,他们开发了自己的拳头产品,在市场上大量销售,1979 年,Oracle公司引入了第一个商用SQL 关系数据库管理系统。Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率名列前茅。

Oracle公司是目前全球最大的数据库软件公司,也是今年业务增长极为迅速的软件提供与服务商。

2007年7与12日,甲骨文公司在美国纽约宣布退出数据库Oracle 11g,这是Oracle数据库的最新版本。Oracle介绍说,Oracle 11g有400多项功能,经过了1500万个小时的测试,开发工作量达到了3.6万人/月。Orcale在安全,XML DB,备份等方面到得了很大提升。

主要应用范围:传统大企业,大公司,政府,金融,证券等等。

版本升级:Oracle8i,Oracle9i,Oracle10g,Oracle11g,Oracle12,Oracle18c

  • 特点:
  1. 市场份额第一,趋势递减
  2. 市场空间,传统企业
  3. 传统企业也在互联网化

3.2 MySQL数据库

MySQL数据库是一个中小型关系型数据库管理系统,开发者为瑞典MySQL AB公司。在2008年1月16号被Sun公司收购,后Sun公司又被Oracle公司收购。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库,甚至国内致命的淘宝网也选择启用Oracle二更换为更开放的MySQL。

MySQL数据库主要应用范围:互联网领域,大中小型网站,游戏公司,电商平台等等。

  • 特点:
  1. 中、大型互联网公司
  2. 市场空间:互联网领域第一
  3. 趋势明显
  4. 同源产品:MariaDB、perconaDB

3.3 MariaDB数据库

MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可。开发这个分支的原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的潜在风险,因此社区采用分支的方式来避开这个风险。

开发MariaDB的目的是完全兼容MySQL数据库,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB(英语:XtraDB)来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。

MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。

MariaDB直到5.5版本,均依照MySQL的版本。因此,使用MariaDB5.5的人会从MySQL 5.5中了解到MariaDB的所有功能。

3.4 SQL Server数据库

Microsoft SQL Server是微软公司开发的大型关系型数据库系统。。SQL Server的功能比较全面,效率高,可以作为中型企业或单位的数据库平台。SQL Server可以与Windows操作系统紧密集成,不论是应用程序开发速度还是系统事务处理运行速度,都能得到较大的提升。对于在Windows平台上开发的各种企业级信息管理系统来说,不论是C/S(客户机/服务器)架构还是B/S(浏览器/服务器)架构,SQL Server都是一个很好的选择。SQL Server的缺点是只能在Windows系统下运行。

1987 年,微软和IBM合作开发完成OS/2,IBM 在其销售的OS/2 ExtendedEdition 系统中绑定了OS/2Database Manager,而微软产品线中尚缺少数据库产品。为此,微软将目光投向Sybase,同Sybase 签订了合作协议,使用Sybase的技术开发基于OS/2平台的关系型数据库。1989年,微软发布了SQL Server 1.0 版。 Microsoft在与Sybase分道扬镳后,随后在其6.05和7.0版本中重写了核心数据库系统,如今SQLServer 2008即将到来。

主要应用范围:部分企业电商(央视购物),使用windows服务器平台的企业。

  • 特点:
  1. 微软和sysbase合作开发的产品,后来自己开发,windows平台
  2. 3,4线小公司,传统行业在用

3.5 Access数据库

美国Microsoft公司于1994年推出的微机数据库管理系统。它具有界面友好、易学易用、开发简单、接口灵活等特点,是典型的新一代桌面数据库管理系统。它结合了Microsoft Jet Database Engine和图形用户界面两项特点,是Microsoft Office的系统程序之一。Access能够访问Access/Jet、Microsoft SQL Server、Oracle数据库,或者任何ODBC兼容数据库内的数据。Access界面友好且易学易用,作为Office套件的一部分,可以与Office集成,实现无缝连接Access提供了表(Table)、查询(Query)、窗体(Form)、报表(Report)、宏(Macro)、模块(Module)等用来建立数据库系统的对象。提供了多种向导、生成器、模板、把数据存储、数据查询、界面设计、报表生成等操作规范化。

Access是入门级小型桌面数据库,性能安全性都很一般,可供个人管理或小型网站之用。Access不是数据库语言,只是一个数据库程序。目前最新版本为Office2007。其主要特点如下:

(1)完善地管理各种数据库对象,具有强大的数据组织、用户管理、安全检查等功能。

(2)强大的数据处理功能,在一个工作组级别的网络环境中,使用Access开发的多用户数据库管理系统具有传统的XBASE(DBASE、FoxBASE的统称)数据库系统所无法实现的客户服务器(Cient/Server)结构和相应的数据库安全机制,Access具备了许多先进的大型数据库管理系统所具备的特征,如事务处理/出错回滚能力等。

(3)可以方便地生成各种数据对象,利用存储的数据建立窗体和报表,可视性好。

(4)作为Office套件的一部分,可以与Office集成,实现无缝连接。

(5)能够利用Web检索和发布数据,实现与Internet的连接。 Access主要适用于中小型应用系统,或作为客户机/服务器系统中的客户端数据库。

早期应用领域:小型程序系统asp+access系统,留言板,校友录等。

3.6 其他不常用关系型数据库

DB2,PostgreSQL,Informix,Sybase等,这些关系型数据库逐步的淡出了普通运维的视线,特别是互联网公司几乎见不到。

第4章 常用非关系型数据库产品介绍

4.1 Memcached(key-value)

Memcached是一个开源的、高性能的、具有分布式内存对象缓存系统。通过它可以减轻数据库负载,加速动态的Web应用,最初版本由 LiveJournal 的 Brad Fitzpatrick 在 2003 年开发完成。目前全世界很多用户都在使用它来构建自己的大负载网站或提高自己的高访问网站的响应速度。注意Memcache 是这个项目的名称,而 Memcached 是服务器端的主程序文件名。

缓存一般用来保存一些经常存取的对象或数据(例如,浏览器会把经常访问的网页缓存起来),通过缓存来存取对象或数据要比磁盘存取快很多,前者是内存,后者是磁盘。Memcache 是一种纯内存缓存,把经常存取的对象或数据缓存在内存中,内存中缓存的这些数据通过 API 的方式被存取,数据就像一张大的 hash 表,以 key-value 对的方式存在。Memcache 通过缓存经常被存取的对象或数据,来减轻数据库的压力,提高网站的响应速度,构建速度更快的可扩展的Web应用。

官方网址:http://memcached.org/

由于Memcached为纯内存缓存软件,一旦重启所有数据都会丢失,因此新浪网基于Memcached开发了一个开源项目Memcachedb。通过为Memcached增加Berkeley DB的持久化存储机制和异步主辅复制机制,使Memcached具备了事务恢复能力、持久化能力和分布式复制能力,非常适合需要超高性能读写速度、持久化保存的应用场景,但是最近几年逐渐被其他的持久化产品替代,例如:redis。

  • 小结
  1. key-value型数据库
  2. 纯内存数据库
  3. 持久化产品memcachedb(sina)

4.2 redis(key-value)

和Memcached类似,redis也是一个key-value型存储系统。但redis支持的存储value类型相对更多,包括string(字符串)、 list(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis支持各种不同方式的排序。与 Memcached 一样,为了保证效率,redis的数据都是缓存在内存中。区别的是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

Redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang等客户端,使用很方便。

官方网址:https://redis.io/documentation
  • redis特点:
  1. 支持内存缓存,这个功能相当于memcached
  2. 支持持久化存储,这个功能相当于memcachedb,ttserver
  3. 依然高性能高并发
  4. 数据类型更丰富,比其他key-value库功能更强
  5. 支持主从集群,分布式
  6. 支持队列等特殊功能
  7. 管理不再使用SQL了

应用:缓存从存取memcached更改存取redis

4.3 MongoDB(Document-oriented)

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。

主要功能特性:

  • 面向集合存储,易存储对象类型的数据

“面向集合”(Collenction-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定 义任何模式(schema)。

  • 模式自由

模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。

  • 支持动态查询
  • 支持完全索引,包含内部对象
  • 支持查询
  • 支持复制和故障恢复
  • 使用高效的二进制数据存储,包括大型对象(如视频等)
  • 自动处理碎片,以支持云计算层次的扩展性
  • 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言

10、文件存储格式为BSON(一种JSON的扩展)

BSON(Binary Serialized document Format)存储形式是指:存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各中复杂的文件类型。

11、可通过网络访问

MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。

MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。

参考资料:

4.4 Cassandra(Column-oriented)

Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于储存特别大的数据。Facebook目前在使用此系统。

  • 主要特性:
  1. 分布式
  2. 基于column的结构化
  3. 高伸展性

Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能 是比较简单的事情,只管在群集里面添加节点就可以了。

Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存 储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库 的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。)Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。

官方网址:http://cassandra.org

4.5 其他不常用非关系型数据库

HBase,MemcacheDB,BerkeleyDB,Tokyo Cabinet/Tokyo Tyrant(ttserver)

第5章 数据库相关知识

5.1 数据库发展历史大事记

  • 1951年,雷明顿兰德公司(Remington Rand Inc)发明Univac I的计算机,用于数据输入;
  • 1956年,IBM生产出第一个磁盘驱动器——the Model 305 RAMAC;
  • 1951年, Univac系统使用磁带和穿孔卡片正式作为数据存储;
  • 1961年,美国通用电气公司Bachman等人开发成功的网状数据库IDS(Integrated DataStore);
  • 1968年,IBM公司研发出著名的层次数据库系统IMS(Information Management System) ;
  • 1968年,Childs提出了面向集合的模型;
  • 1970年,IBM的研究员F.Codd发表论文:“A Relational Model of Data for Large Shared Data Banks”提出关系模型理论;
  • 1973年,加州大学伯克利分校的Michael Stonebraker和Eugene Wong研发Ingres;
  • 1974年,ACM牵头组织研讨会,以Codd和Bachman为首的支持和反对关系数据库两派之间的辩论;
  • 1974年,IBM的Ray Boyce和Don Chamberlin将Codd关系数据库的12条准则的数学定义以简单的关键字语法表现出来,里程碑式地提出了SQL(Structured Query Language)语言;
  • 1976年,霍尼韦尔公司(Honeywell)开发了第一个商用关系数据库系统——Multics Relational Data Store;
  • 1979年,IBM研发出第一个支持SQL的DBMS;
  • 1979年,Oracle公司引入了第一个商用SQL关系数据库管理系统;
  • 1983年,IBM 推出了DB2数据库产品;
  • 1985年,Procter & Gamble系统设计的第一个商务智能系统产生;
  • 1986年,指定了ANSI 跟 ISO的第一个标准:SQL-86;
  • 1989年,制定了SQL-89标准;
  • 1991年,H.“Bill” Inmon发表了”构建数据仓库”;
  • 1992年,制定了改进版本的SQL-92;
  • 1999年,制定了改进版本的SQL-99;
  • 2003年,指定了改进版本的SQL/2003;
  • 后又分别于2005年、2006年、2007年,针对SQL标准进行过修改;

5.2 数据库软件企业应用排名参考

信息来源:https://db-engines.com/en/ranking

图片[6]|数据库基础介绍(一)|leon的博客

第6章 MySQL数据库介绍

6.1 MySQL数据库介绍

Mysql是互联网领域的一款极重要的、且深度广大用户欢迎的开源关系型数据库软件之一, 由瑞典Mysql AB公司开发与维护。2006年, MySQL AB公司被SUN公司收购, 2008年, SUN公司又被传统数据库大佬甲骨文(Oracle)公司收购. 因此, MySQL数据库目前属于Oracle公司, 成为传统数据库领域老大的又一个重量级数据库产品, 自甲骨文收购MySQL后, 使得自身在商业数据库与开源数据库领域市场占有份额都跃居第一的位置, 这样的格局, 引起了业内很多人士的担忧, 这种担忧直接导致后来的MySQL分支数据库MariaDB的诞生与发展。

前面已经介绍过,MySQL属于传统关系型数据库产品,它的开放式的架构使得用户选择性很强,同时社区开发与维护人数众多,其功能比较稳定,性能卓越,且在遵守GPL协议的前提下,可以免费使用与修改,也为MySQL的推广与使用带来了更多利好.在MySQL成长与发展过程中,支持的功能逐渐增多,性能也在不断提高,对平台的支持也越来越多。

MySQL是一种关系型数据库管理系统, 关系型数据库的特电视将数据保存在不同的表中, 在将这些表放入不同的数据库中, 而不是将所有的数据统一放在一个大仓库里,这样的设计增加了Mysql的读取速度,灵活性可管理性也得到了很大提高. 访问以及管理MySQL数据库的最常用的标准化语言为SQL结构化查询语言。

6.2 MariaDB数据库诞生背景介绍

自甲骨文公司收购了MySQL数据库产品后,引起了很多业界人士担优,因为商业数据库的老大有可能将MySQL闭源的潜在风险,为了避免。racle将MySQL闭源,而无开源的类MySQL数据库可用,MySQL社区采用分支的方式来避开这个风险。因此MariaDB数据库就这样诞生了,MariaDB是一个向后兼容、可能在以后替代MySQL的数据库的一个不错的新的数据库产品,这里作者还是建议大家选择更稳定使用更广泛的MySQL数据库,MaiiaDB数据库可以先测试,等产品应用人员做多一些,社区更活跃后再考虑使用为好。

Mariadb的官方地址为:https://mariadb.org/

6.3 为什么选择MySQL数据库

毫无疑问,既成事实,绝大多数的使用linux操作系统的大中小互联网网站都在使用MySQL作为其后端的数据库存储,从大型的BAT门户,到电商平台,分类门户等无一例外都使用MySQL数据库。那么,MySQL数据库到底有哪些优势和特点,让大家义无反顾选择它呢?

原因可能有以下几点:

  • MySQL性能卓越工服务稳定,很少出现异常宕机
  • MySQL开放源代码且无版权制约,自主性及使用成本低
  • MySQL历史悠久,社区及用户非常活跃,遇到问题,可以寻求帮助
  • MySQL软件体积小,安装使用简单,并且易于维护,安装及维护成本低
  • MySQL品牌口碑效应,使得企业无需考虑就直接用之,LAMP, LEMP流行架构
  • MySQL支持多种操作系统,提供多种API接口,支持多种开发语言,特别对流行的PHP语言有很好的支持。

第7章 MySQL数据库分类与版本升级

MySQL数据库的官方网站为http://ww.mysgl.com,其发布的MySQL版本采用双授权政策,和大多数开源产品的路线一样,分为社区版和商业版,而这两个版本又各自分四个版本依次发布,这四个版本为:Alpha版、Beta版、RC版和GA版本。

7.1 MySQL数据库商业版与社区版区别

7.1.1 MySQL数据库商业版发布介绍

MySQL商业版是由MySQL AB公司内部专门的人员负责开发及维护,但同时也会吸纳社区人员编写的优秀代码及算法,并且由专门的人员严格按照软件测试流程对这些采纳的代码进行严格测试,没有问题再进行发布.简单地说,MySQL商业版是由MySQL公司内部发布,同时参考社区版的先进代码功能和算法,是MySQL公司的旅利产品,需要付费才能使用及提供服务支持,稳定性和可靠性无疑都是最好的,当然了,企业腰包得够鼓才能买得起.据作者了解到的信息,某知名分类门户网站早期就购买过MySQL商业版,价格不比那些闭源的商恤数据库便宜,也是大几十万,好贵的说。

7.1.2 MySQL数据库社区版发布介绍

MySQL社区版则是由分散在世界各地的MySQL开发者、爱好者以及用户参与开发与测试,并完成软件代码的管理、测试工作,社区也会设立BUG汇报机制,收集用户使用遇到BUG问题情况.相比商业版.社区版的开发及测试环境没有那么严格。

7.1.3 MySQL数据库商业版与社区版区别

MySQL商业版与社区版之间的区别在于:

  • 商业版本组织管理与测试环节控制更严格,稳定性方面,会比社区版本更稳定
  • MySQL是成熟产品,商业版与社区版之间性能方面相差不大
  • 商业版不遵守GPL协议,社区版遵守GPL协议可以免费使用!
  • 使用商业版后可以购买相关的服务,享受7*24小时技术支持以及定时打补丁等服务,但是用户必须为此支付服务费用。
  • 社区版本的维护服务只能靠社区提供,无法像商业版本获得故障及补丁解决服务了,但是,使用社区版是完全免费的方式,社区版的服务质It与时效性等方面就无法与MySQLAB公司提供的服务相比了!

7.2 MySQL数据库四种发布版本介绍

在前面的内容己经阐述过,MySQL的版本发布采用双授权政策,即分为社区版和商业版,而这两个版本又各自分四个版本依次发布:Alpha版、Beta版、RC版和GA版本

这四种发布版本之间的说明及区别,如下:

7.2.1 Alpha版:

Alpha版一般只在开发的公司内部运行,不对外公开:主要是开发者自己对产品进行测试,检查产品是否存在缺陷、错误,验证产品功能与说明书、用户手册是否一致. MySQL是属于开放源代码的开源产品,因此需要世界各地开发者、爱好者和用户参与软件的开发、测试和手册编写等工作.所以会对外公布此版本的源码和产品,方便任何人可以参与开发或测试工作,甚至编写与修改用户手册。

7.2.2 Beta版:

Beta版一般是完成功能的开发和所有的测试工作之后的产品,不会存在较大的功能或性能BUG,降且邀请或提供给用户体验与测试,以便更全面地测试软件的不足之处或存在的问题。

7.2.3 RC版:

RC版属于生产环境发布之前的一个小版本或称候选版,是根据Beta版本测试结果,收集到的BUG或缺陷之处等收集到的信息,进行修复和完巷之后的一版产品。

7.2.4 GA版:

GA版是软件产品正式发布的版本。也称生产版本的产品.一般情况下。企业的生产环境都会选择GA版本的MySQL软件,用于真实的生产环境中.偶尔有个别大型企业会追求新功能驱动而牺牲稳定性使用其它版本,但这是个例。

7.2.5 MySQL四种发布版本选择说明:

MySQL AB官方网站会把五种数据库版本都提供下载,主要是MySQL数据库属于开放源代码的数据库产品,鼓励全球的技术爱好者参与研发、测试、文档编写和经验分享,甚至包过产品发展规划,对于Development版本、Alpha版本和Beta版本是绝对不允许使用在任何生产环境的,肯定存在重大的问题或功能未完全实现.绝大多数情况下RC版本也是不允许使用在生产环境,毕竟这是一个GA版本之前,也即生产版本发布之前的一个小版本.另外,对MySQL数据库GA版本,也是需要慎重选择,开源社区产品毕竟不是经过严格的测试工序完成的产品,是全1*开源技术人员的自愿完成的,会存在比商业产品稳定性弱的缺陷。更严格的选择见后文.

官方地址提供的数据库下载版本:http://mysgl.ntu.edu.tw/Downloads/

第8章 mysql产品线路

8.1 MySQL产品路线变更历史背景

早期,MySQL也是遵循版本号逐渐增加的方式发展,格式例如:mysql-X.XX.XX.tar.gz,例如,DBA老鸟们都非常熟悉的生产场景版本:4.1.7. 5.0.56等。

近几年,为了提高MySQL产品的竟争优势、以及提高性能、降低开发维护成本等原因,同时,更方便企业用户更精准的选择适合的版本产品用于自己的企业生产环境中,MySQL在发展到5.1系列版本之后,重新规划为三条产品线。

8.2 第一条-5.0.x、到5.1.x、产品线系列介绍

第一条产品线:5.0.xx及升级到5.1.xx的产品系列,这条产品线继续完善与改进其用户体验和性能,同时增加新功能,这条路线可以说是MySQL早期产品的延续系列,这一系列的产品发布情况及历史版本如下:

MySQL 5.1:是当前稳定(产品质量)发布系列。只针对漏洞修复重新发布:没有增加会影响稳定性的新功能。

*MySQL 5.1:Previous stable (production-quality) release

MySQL 5.0是前一稳定(产品质f)发布系列。只针对严重漏洞修复和安全修复重新发布:没有增加会影响该系列的重要功能。

*MySQL 5.0: Older stable release nearing the end of the product lifecycle.

MySQL 4.0和3.23是旧的稳定(产品质I)发布系列.该版本不再使用,新的发布只用来修复特别严重的漏洞(以前的安全问题)。

8.3 第二条-5.4.xx开始到了5.7.xx产品系列介绍

第二条产品线:为了更好地整合MySQL AB公司社区和第三方公司开发的新存储引擎,以及吸收新的实现算法等,从而更好地支持SMP架构,提高性能而做了大A的代码重构.版本编号为从5.4.x开始,目前发展到了5.6.x。

*MySQL 5.5: Latest General Availability (Production) release

主流:互联网公司用mysql 5.5

8.4 第三条-6.0.xx一到7.1.xx产品线系列介绍

第三条产品线:为了更好地推广MySQL Cluster版本,以及提高MySQL Cluster的性能和稳定性,以及功能改进和增加,以及改动MySQL基础功能,使其对Cluster存储引擎提供更有效的支持与优化.版本号为6.0.x开发,目前发展到7.1.x

官方地址提供的数据库下载版本:

第9章 mysql数据库软件命名介绍

MySQL数据库软件的名字是由3个数字和一个后缀组成的版本号.例如,像mysql-5.0.56.tar.gz的版本号这样解释:

  • 第1个数字(5)是主版本号,描述了文件格式。所有版本5发行都有相同文件格式。
  • 第2个数字(0)是发行级别.主版本号和发行级别组合到一起便构成了发行序列号.
  • 第3个数字(56)是在此发行系列的版本号.随每个新分发版递增.通常你m要己经选择的发行(release)的最新版本(版本)。

每次更新后,版本字符串的最后一个数字递增.如果相对于前一个版本增加了新功能或有微小的不兼容性,字符串的第二个数字递增.如果文件格式改变,第一个数字递增。

  • 后缀显示发行的稳定性级别.通过一系列后缀显示如何改进稳定性.可能的后缀有:
  • alpha版

表明发行包含大t未被彻底测试的新代码.已知的缺陷应该在新闻小节被记录.在大多数alpha版本中也有新的命令和扩展。alpha版本也可能有主要代码更改等开发。但我们在发布前一定对其进行测试.

  • beta版

意味着该版本功能是完整的,并且所有的新代码被测试,没有增加重要的新特征,应该没有已知的缺陷.当alpha版本至少一个月没有出现报导的致命漏洞,并且没有计划增加导致已经实施的功能不稳定的新功能时.版本则从alpha版变为beta版.在以后的beta版、发布版或产品发布中,所有API、外部可视结构和SQL命令列均不再更改。

  • rc版

是发布代表;是一个发行了一段时间的beta版本,看起来应该运行正常。只增加了很小的修复.(发布代表即以前所称的gamma版).

  • 没有后缀

例如:mysql-5.0.56.tar.gz,这意味着该版本己经在很多地方运行一段时间了.而且没有非平台特定的缺陷报告。这就是我们称为一个产品(稳定)或“通用”版本的东西。

第10章 生产场景如何选择MySQL版本

10.1 MySQL数据库发布特征

商业软件研发和发行公司,都会提供经过完整测试,甚至多种用户环境模拟测试及试用之后,才会推出稳定的生产环境版本软件,导致技术人员对于商业数据库软件的选择,一般不需要太多的顾虑与考虑。

在大公司,像百度、阿里巴巴、淘宝等,对于数据库软件版本的选择,也是会有相关人员对其新功能或改进点知识详细阅读,并且会做很多相关测试和研究工作,最后逐步上线。从边缘业务慢慢过渡到核心业务。

10.2 MySQL版本选择流程

自甲骨文(注:Oracle)公司收购SUN及全资子公司MySQL AB之后,MySQL AB官方不再对开源社区贡献源码,以及众多创始人与技术人员的出走,大家对于MySQL AB 公司推出的新版本一定要更加仔细挑选,切莫盲目相信MySQL AB官方给出的测试报告。

不管使用企业版本还是社区版本,建议大家最好使用最比较稳定的GA版本。选择版本之前请一定看下对应版本的增加功能和BUG修复信息,以及咋其之前的版本和之后的版本BUG修复,以便选择适合自己生产环境的稳定版本。决定使用某个版本之后还需要进行一番模拟相关业务的重点功能测试,尤其是MySQL的特性,以及性能测试,若在公司产品的开发与测试阶段,先把次版本的MySQL产品,用于其后台数据库支持的软件或网站的开发和测试环境,最后再用于生产环境,并且非核心业务优先原则,可能是更恰当的一种软件版本选择方式。

推荐大家参考的MySQL数据库GA版本选择的流程,如下所述:

  1. 分析本企业业务,需要使用到MySQL那些基本功能和特性,特性重点方向研究为:MySQL复制、分区表、Plugin-innodb等;
  2. MySQL数据库产品线第一个GA版本推出时间,至少超过10个月,再考虑使用到生产环境;
  3. MySQL数据库产品线的最新GA版本,一般向后退3-4个版本的GA版本数据库,作为可选的目标;
  4. 仔细阅读选择的目标数据库GA版本,若是为之前的版本修改了大量的BUG信息,则此GA版本慎重选择;
  5. 仔细阅读目标GA版本数据库之后的第一版本,若是修改的BUG信息量非常大,直接放弃目标版本,向前推进一个版本号作为目标版本;
  6. 按照第四、第五步骤所描述的办法,直到选定的版本之后的一个版本,BUG修改量不大,严重BUG极少,且不能为最新的GA版本数据库产品;
  7. 详细阅读选定的数据库GA版本之后2-3个版本的BUG修复信息,主要是跟目标GA版本相关的,并且想办法重现,以及寻找规避的办法;
  8. 对经过上述七个步骤挑选的GA版本,结合企业业务可能需要用的功能,都必须进行功能测试,以及业务模拟的性能测试;
  9. 挑选的数据库GA版本,作为内部开发测试数据库环境,跑大概3-6个月的时间;
  10. 优先企业非核心业务采用新版本的数据库GA版本软件;
  11. 经过上述10个工序之后,若是没有重要的功能BUG或性能瓶颈,则可以开始考虑作为任何业务数据服务的后端数据库软件;
  12. 向DBA高手请教或者在技术氛围好的群里和大家一起交流,使用真正的高手们用过的好用的GA版本产品。

10.3 MySQL版本选择最终建议

企业生产场景选择MySQL数据库建议:

  • 稳定版:选择开源的社区版的稳定版GA版本。
  • 产品线:可以选择1或5.5.互联网公司主流5.5,其次是5.1和5.6。
  • 选择MySQL数据库GA版发布后6个月以上的GA版本。
  • 要选择前后几个月没有大的BUG修复的版本,而不是大量修复BUG的集中版本。
  • 最好向后较长时间没有更新发布的版本。
  • 要考虑开发人员开发程序使用的版本是否兼容你选的版本。
  • 作为内部开发测试数据库环境,跑大概3-6个月的时间。
  • 优先企业非核心业务采用新版本的数据库GA版本软件。
  • 向DBA高手请教,或者在及技术氛围好的群里和大家一起交流,使用真正的高手们用过的好用的GA版本产品。
  • 经过上述工序之后,若是没有重要的功能BUG或性能瓶颈,则可以开始考虑作为任何业务数据服务的后端数据库软件。
参考资料:
温馨提示:本文最后更新于2022-12-20 20:57:53,已超过483天没有更新。某些文章具有时效性,若文章内容或图片资源有错误或已失效,请联系站长。谢谢!
转载请注明本文链接:https://blog.leonshadow.cn/763482/515.html
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享