1 数据库介绍
1.1 什么是数据库
简单的说,数据库(database)就是存放数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来组织、存储的,我们可以通过数据库提供的多种方法来管理数据库
1.2 数据库的种类
1.2.1 关系型数据
关系型数据库模型就是把复杂的数据结构归结为简单的二元关系(即二维表格形式);典型的数据库:MySQL和Oracle
1.2.2 非关系型数据库(NOSQL)
诞生在web2.0(以用户为主体,上传下载)时代,动态应用比较多;传统的关系型数据库为应对web2.0高并发、高吞吐的需求时,比较困难;非关系型数据库也被称为NOSQL数据库,是关系型数据库的补充
1.2.3 非关系型数据库的种类
1.2.3.1 键值(Key-Value)存储数据库
a. 键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性。优势:简单、易部署、高并发
b. 典型产品:Memcached、Redis、MemcacheDB、BerkeleyDB
1.2.3.2 列存储(Column-oriented)数据库
a. 列存储数据库将数据存在列族(column family)中,一个列族存储经常被一起查询的相关数据。这部分数据通常是用来应对分布式存储的海量数据。键仍然存在,但是他们的特点是指向了多个列。这些列是由列家族来安排的
b. 典型产品:Cassandra、Hbase
1.2.3.3 面向文档(Document-Oriented)数据库
a. 面向文档数据库会将数据以文档的形式储存,每个文档都是自包含数据单元,是一系列数据项的集合。同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或JSONB等多种形式存储
b. 典型产品:MongoDB、CouchDB
1.2.3.4 图形(Graph)数据库
a. 图形数据库允许我们将数据意图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边
b. 典型产品:Neo4J、InfoGrid
1.3 常用的关系型数据库产品介绍
1.3.1 Oracle数据库
主要应用范围:传统大企业,大公司,政府,金融,证券等等
1.3.2 MySQL数据库
a. 特点:体积小、速度快、拥有成本低、开放源代码
b. 主要应用范围:互联网领域、大中小型网站,游戏公司,电商平台等等
1.3.3 MariaDB数据库
MariaDB数据库是MySQL数据库的分支,甲骨文公司收购了MySQL后,有将MySQL关闭的风险,因此MySQL开源社区采用分支的方式来避开这个风险
1.3.4 SQL Server数据库
a. 微软公司开发的大型关系型数据库系统
b. 主要应用范围:部分企业电商(央视购物),使用Windows服务器平台的企业
1.3.5 Access数据库
美国Microsoft公司于1994年推出的微机数据库管理系统。它具有界面友好、易学易用、开发简单、接口灵活等特点,是典型的新一代桌面关系型数据库管理系统。性能安全性都很一般,可供个人管理或小型网站使用
1.3.6 其它不常用关系型数据库
DB2、PostgreSQL、Informix、Sybase
1.4 常用的非关系型数据库产品介绍
1.4.1 Memcached(Key-Value)
Memcached是一个开源的、高性能的、具有分布式内存对象的缓存系统。速度快、重启数据易丢失
1.4.2 Redis(Key-Value)
a. Redis是高性能的Key-Value型数据库。Redis的数据都是缓存在内存中。区别是Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件
b. 特点:
- 支持内存缓存,这个功能相当于memcached
- 支持持久化,这个功能相当于memcachedb、ttserver
- 数据类型更丰富,比其它Key-Value库功能更强
- 支持集群,分布式
- 支持队列等特殊功能
1.4.3 MongoDB(Document-oriented)
a. MongoDB是介于关系型数据和非关系型数据库之间的产品。是非关系型数据库当中功能最丰富,最像关系型数据库的。它支持的数据结构非常松散,类似json的bjson格式,因此可以存储比较复杂的数据类型
b. 特点:
- 查询语言非常强大
- 支持数据建立索引
- 面向集合存储,易存储对象类型的数据
- 模式自由
- 支持动态查询
- 支持完全索引,包含内部对象
- 支持查询
- 支持复制和故障恢复
- 实用高效的二进制数据存储,包括大型对象(如视频)
- 自动处理碎片,以支持云计算层次的扩展性
- 支持RUBY,PYTHON,JAVA,C++,PHP等多种语言
- 文件存储格式为BSON(一种JSON的扩展)
- 可通过网络访问
1.4.4 Cassandra(Column-oriented)
a. Cassandra主要特点它不是一个数据库,而是一堆数据库节点共同构成的一个分布式网络服务。由Facebook开发,目前360、Facebook在使用此系统
b. 特性:
- 分布式
- 基于Column的结构化
- 高伸展性
2 MySQL数据库的概念
2.1 MySQL数据库介绍
a. MySQL数据库是一款深受欢迎的开源领域的重要的关系型数据库产品
b. MySQL数据库是一种关系型数据库管理系统,特点是将数据保存在不同的表中,在将这些表放入不同的数据库中,而不是将所有数据统一放在一个打仓库里,这样的设计增加了MySQL的读取速度,灵活可管理性也得到了很大提高
c. 访问以及管理MySQL数据库的最常用标准化语言为SQL结构化查询语言
2.2 MySQL数据库优势,为什么选择MySQL
a. 性能卓越,服务稳定,很少出现异常宕机
b. 开放源代码且无版权制约,自主性及使用成本低
c. 历史悠久,社区及用户非常活跃,遇到问题,可以寻求帮助
d. 软件体积小,使用简单,并且易于维护,安装及维护成本低
e. 品牌口碑效应,使得企业无需考虑就直接用之,LAMP,LNMP流行架构
f. 支持多种操作系统,提供多种API接口,支持多种开发语言,特别对流行的PHP语言有很好的支持
2.3 MySQL数据库版本分类
a. 采用双授权政策,分为商业版(收费版)和社区版
b. Alpha版:只在开发的公司内部运行,不对外公开
c. Beta版:一般是完成功能的开发和所有的测试工作之后的产品,不会存在较大的功能或性能BUG,并邀请或提供给用户体验与测试
d. RC版:属于生产环境发布之前的一个小版本或候选版,是根据Beta版本测试结果,收集到的BUG或缺陷之处的信息,进行修复和完善之后的一版产品
e. GA版:软件产品正式发布的版本,也称生产版本的产品。一般企业都会选择GA版本的MySQL软件,用于真是的生产环境中