一、数据库介绍
 
1.什么是数据库;
 
        数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组  
 
 织形式或数据之间的联系)来对数据进行组织和存储的,可以通过数据库提供的多种方法来管理其  
 
 中的数据。 
 
2.数据库的种类
 
关系型数据库和非关系型数据库。
 
3.关系型数据库
 
        关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据  库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。 关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据( “ 一对 多 ” ),一本书对应多个作者( “ 一对多 ” ),一本书对应一个出版日期( “ 一对一 ” ) 。 
 
 
常见关系型数据库;
 
 1 、 Oracle  数据库 
 
 
 
          Oracle 前身叫 SDL,由 Larry Ellison 和另两个编程人员在1977创办,他们开发了自己的拳头产品,在市场上大量销售,1979年,Oracle 公司引入了第一个商用 SQL关系数据库管理系统。 Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前 Oracle 关系数据库产品的市场占有率数一数二。 
         Oracle (甲骨文)公司是目前全球最大的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商。 
 主要应用范围:传统大企业,大公司,政府,金融,证券等等。
  
 2、MySQL 数据库
 
             MySQL  数据库是一个中小型关系型数据库管理系统,软件开发者为瑞典  MySQL AB  公司。在  2008 年 1 月 16 号被  Sun  公司收购,后  Sun  公司又被  Oracle  公司收购。目前 MySQL  被广泛地应用  在  Internet  上的大中小型网站中由于其体积小、速度快、总体拥有成本低,尤其是开放源码这 一特点,许多大中小型网站为了降低网站总体拥有成本而选择了  MySQL  作为网站数据库,甚至国 内知名的淘宝网也选择弃用  Oracle  而更换为更开放的  MySQL 。  
            MySQL  数据库主要应用范围:互联网领域,大中小型网站,游戏公司,电商平台等等。 
   3、MariaDB  数据库  
  
              MariaDB  数据库管理系统是  MySQL  数据库的一个分支,主要由开源社区维护。开发这个 MariaDB  数据库分支的可能原因之一是:甲骨文公司收购了 MySQL  后,有将  MySQL  闭源的潜在 风险,因此  MySQL  开源社区采用分支的方式来避开这个风险。 开发  MariaDB  数据库的目的是完全兼容  MySQL  数据库,包括  API  和命令行,使之能轻松的成为 MySQL  的代替品。在存储引擎方面,使用  XtraDB  (英语: XtraDB )来代替 MySQL  的  InnoDB  
             MariaDB  由  MySQL  的创始人  Michael Widenius (英语: Michael Widenius )主导开发,他早前 曾以  10  亿美元的价格,将自己创建的公司 MySQL AB 卖给了  SUN ,此后,随着  SUN  被甲骨文收 购, MySQL  的所有权也落入 Oracle  的手中, MariaDB  数据库的名称来自  MySQL  的创始人 Michael Widenius  的女儿  Maria  的名字。  
   4 、 SQL Server  数据库  
  
            Microsoft SQL Server 是微软公司开发的大型关系型数据库系统。 1987 年,微软和 IBM 合作开发完 成  OS/2 , IBM  在其销售的  OS/2 ExtendedEdition  系统中绑定了  OS/2 DatabaseManager ,而微 软产品线中尚缺少数据库产品。为此,微软将目光投向  Sybase ,同  Sybase  签订了合作协议,使 用  Sybase  的技术开发基于  OS/2  平台的关系型数据库。 1989 年,微软发布了 SQLServer1.0  版。 SQL Server  的功能比较全面,效率高,可以作为中型企业或单位的数据库平台。 SQL Server  可以 Windows  操作系统紧密集成,不论是应用程序开发速度还是系统事务处理运 行速度,都能得到较大的 提升。 SQL Server  的缺点是只能在  Windows  系统下运行。  
            主要应用范围:部分企业电商(央视购物),使用 windows 服务器平台的企业。  
  
 4、非关系型数据库
             非关系型数据库也被称为  NoSQL  数据库, NoSQL  的本意是  “Not Only SQL” ,指的是非关系型数据库,而不是 “NO SQL” 的意思, NoSQL  的产生并不是要彻底否定关系型数据库,而是作为数 据库的一个有效补充。 NoSQL  数据库在特定的场景下可以发挥难以想象的高效率和高性能。特别 是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、 SNS  类型的纯动态网站已经 显得力不从心,暴露了很多难以克服的问题,例如:传统的关系型数据库 IO 瓶颈、性能瓶颈都难 以有效突破,于是开始出现了大批针对特定场景,以高性能和使用便利为目的功能特异化的数据库 产品。 NoSQL (非关系型)类的数据库就是这样的情景中诞生并得到了非常迅速的发展。  
              NoSQL  是非关系型数据库的广义定义。它打破了长久以来关系型数据库与 ACID 理论大一统的局 面。 NoSQL 数据存储不需要固定的表结构,通常也不存在连续操作。 
  常用非关系型数据库管理系统
 1、Memcached(Key-Value)
 
           Memcached  是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的  Web  应用,最初版本由  LiveJoumal  的  Brad Fitzpatrick 在 2003 年开发完成。 目前全球有非常多的用户都在使用它来构建自己的大负载网站或提高自己的高访问网站的响应速 度。注意: Memcache  是这个项目的名称,而 Memcached  是服务器端的主程序文件名。  
           缓存一般用来保存一些经常被存取的对象或数据(例如,浏览器会把经常访问的网页缓存起来一 样),通过缓存来存取对象或数据要比在磁盘上存取快很多,前者是内存,后 者是磁盘。 Memcached  是一种纯内存缓存系统,把经常存取的对象或数据缓存在  Memcached  的内存中, 这些被缓存的数据被程序通过 API 的方式被存取, Memcached 里面的数据就像一张巨大的  HASH  
  表,数据以  Key-Value  对的方式存在。 Memcached  通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度 . 官方: http://Memcached.org/  
 由于Memcached 为纯内存缓存软件,一旦重启所有数据都会丢失,因此,新浪网基于Memcached 开发了一个开源项目 MemcacheDB。通过为 Memcached 增加 Berkeley DB 的持久化存储机制和异步主辅复制机制,使 Memcached 具备了事务恢复能力、持久化数据存储能力和分布式复制能力,但是最近几年逐渐被其他的持久化产品替代例如Redis。 
 2、Redis(Key-Value)
 
 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 存储的不足,在部分场合可以对关系数据库有很好的补充作用。它提供了 PythonRuby,Erlang,PHP 客户端,使用很方便。
 官方:http://www.Redis.io/documentation
         Redis  特点:  
   
  3 、 MongoDB  ( Document-Web )  
      
 MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,类似 Json 的 Bjson 格式,因此可以存储比较复 杂的数据类型。MongoDB 最大的特点是他支持查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。 
 MongoDB 服务端可运行在 Linux、Windows 或 OS X 平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台。 
 McmgoDB 把数据存储在文件中(默认路径为:/data/db)。