1、数据库的分类

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


2、关系型数据库介绍

(1)关系型数据库由来

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


 (2)关系型数据库介绍

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

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


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


 select * from tb1;

+------+-------+

| id   | name  |

+------+-------+

|    1 | szk   |

|    2 | linux |

| NULL | 55    |

+------+-------+


3、非关系型数据库介绍

          非关系型数据库也称为NoSQL数据库,NoSQL的本意是"Not Only SQL",指的是非关系型数据库,而不是"No SQL"的意思(没有SQL语句?),因此,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也逐渐的越来越受到各类大中小型公司的欢迎和追捧。


4、非关系系统数据库种类

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

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

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

           典型产品:Memcached、Redis、MemcacheDB、Berkeley DB

           

(2)列存储(Column-Oriented)数据库

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

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

        典型产品:Cassandra,HBase


(3)面向文档(Column-Oriented)数据库

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

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

              典型产品:MongoDB、CouchDB


(4)图形(Graph)数据库

    图形数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。

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

            典型产品:Neo4j、InfoGrid


5、常用关系型数据库产品介绍

a.MySQL

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

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


b.Oracle

     Oracle前身叫SDL,是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前Oracle关系数据库产品的市场占有率数一数二。

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

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


c.Maria DB

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

               开发Maria DB数据库的目的是完全兼容MySQL数据库,包括API和命令行,使之能轻松的成为MySQL的代替品。

               

d.SQL Server

      Microsoft SQL Server是微软公司开发的大型关系型数据库系统。SQL Server的功能比较全面,效率高,可以作为中型企业或单位的数据库平台。SQL Server的缺点是只能在Windows系统下运行。


e、Access

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

                Access是入门级小型桌面数据库,性能安全性都很一般,可供个人管理或小型网站之用。