本文为我自己学习老男孩MySql DBA 高级运维课程的学习笔记,内容均出自老男孩MySQL DBA 高级运维课程,老男孩老师讲的很好,非常感谢老男孩老师。我是一个菜鸟刚接触运维,写博文的目的是希望能过与大家互相交流运维技术共同成长,如果我写的文章有不对的地方;请各位行业的精英、老师多多批评指点。

1.数据库介绍

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

2.数据库的种类

比较流行的数据库模型有三种,分别为层次式数据库、网络式数据库和关系型数据库。在当今的互联网中,最常用的数据库模型主要有两种,即关系型数据库和非关系型数据库(Nosql)。

2.1 关系型数据库介绍

(1)关系型数据库的由来

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

(2)关系型数据库介绍

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

(3)关系型数据库表格之间的关系举例

小结:什么是关系型数据库

1、关系型数据库就是用类似于execl表格这种二维表来表示的。

2、关系型数据库使用结构化查询语句(SQL语句)来对数据进行存取的。

3、关系型数据库的代表oracle、mysql。

2.2 非关系型数据库

非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”(不仅仅是关系型数据库),指的是非关系型数据库,而不是“No SQL”的意思(没有SQL语句的意思),因此NoSQL并不是要彻底地否定关系型数据库,而是作为传统关系型数据库的一个有效补充。

传统的关系型数据库在应对web 2.0这个高并发、高吞储就很困难。关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是NoSQL(非关系型)数据库就这样诞生了,并得到了非常迅速地发展。

Google的BigTable与Amazon的Dynamo是非常成功的商业NoSQL实现,一些开源的NoSQL体系FaceBook的Cassandra,Apache的HBase也得到了广泛认同,Redisd,mongodb也逐渐的越来越受到各类大中小公司的欢迎和追捧。

总结:NoSQL为什么诞生?

动态请求越来越多,对数据库的要求越来越高。而传统数据库它遵循ACID理论,要保持数据一致性、又要使用结构化查询语句(SQL语句)来对数据进行存储;导致存取速度很慢,而且还要存放到磁盘里面去不能保证数据不丢,所以在这种情况下非关系型数据库就产生了。

3.常用关系型数据库

3.1 Oracle数据库

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

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

3.2 MySql数据库

目前MySQL被广泛地应用在Internet上的大中小型网站中,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多大中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。

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

3.3 MariaDB数据库

MariaDB数据库是MySQL数据库的一个分支,主要由开源社区维护,采用GPL授权许可。开发MariaDB数据库分支的可能原因之一是:甲骨文公司收购了MySQL后,有将MySQL闭源的风险,因此MySQL开源社区采用分支的方式来避开这个风险。MariaDB数据库的名称来自MySQL的创始人Monty Widenius的女儿Maria的名字。

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

官网:https://mariadb.org/

3.4 sql server

Microsoft SQL Server 是微软公司开发的大型关系型数据库。

主要应用范围:部分企业电商,使用windows服务平台的企业。

3.5 access数据库

Access数据库是美国Microsoft公司于1994年推出的微机数据库管理系统,它具有界面友好、易学易用、开发简单、接口灵活等特点,是典型的新一代桌面关系型数据库管理系统。它是Microsoft Office的成员之一。

Access是入门级小型桌面数据库,性能安全性都很一般,可供个人管理或小型网站使用。它主要适用于中小型应用系统,或作为客户机/服务器系统中的客户端数据库。 早期应用领域:小型程序系统asp+access系统,留言板、校友录等。

4.常用非关系型数据库

4.1 Memcached(key-value)

Memcached是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负担,加载动态的web应用。缓存一般用来保存一些经常被存取的对象或数据,通过缓存来存取对象或数据要比在磁盘上存取快很多。Memcached是一种纯内存缓存系统,把经常将存取的对象或数据缓存Memcached的内存中,这些缓存的数据被程序通过API的方式被存取Memcached 里面的数据就像一张巨大的HASH表中,数据以key-value的方式存在。Memcached通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力、提高网站的响应速度,构建出速度更快的可扩展的web应用,官方:http://memcached.org/

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

4.2 Redis(key-value)

和Memcached类似,redis也是一个key-value型的存储系统,单redis支持的存储value类型相对更多,包括string(字符串)、set(集合)和zset(有序集合)等。Redis的数据都是缓存在内存中,区别是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加到记录文件,并且在此基础上实现了master-slave(主从)同步。 官方:http://www.redis.io/documentation

Redis特点:

(1)支持内容缓存,这个功能相当于memcached。

(2)支持持久化,这个功能相当于memcachedb,ttserver。

(3)数据库类型更丰富,比其他key-value库功能更强。

(4)支持集群,分布式。

(5)支持队列等特殊功能。

4.3 MongoDB(Document-oriented)

MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongodb最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言。

Mongodb更详细文档:http://www.mongodb.org/display/DOCS/Manual

官网:http://blog.mongodb.org/

4.4 Cassandra(Column-oriented)

Apache Cassandra是一套开源分布式Key-Value存储系统。

主要特性:

(1)分布式

(2)基于column的结构化

(3)高伸展性

Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构造的一个分布式网络服务。