一、数据库介绍
1.1、介绍
简单的说,数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来对数据进行组织和存储的,我们可以通过数据库提供的多种方法来管理其中的数据。
1.2、种类
按照早期的数据库理论,比较流行的数据库模型有三种,分别为层次式数据库、网状数据库和关系型数据库。而在当今的互联网企业中,最常用的数据库模式主要有两种,即关系型数据库和非关系型数据库。
1.3、关系型数据库介绍
①关系型数据库由来
网络数据库和层次数据库很好地解决了数据的集中和共享问题,但是在数据独立性和抽象级别上仍有很大欠缺。用户对这两种数据库进行存取时,依然需要明确数据的存储结构,支出存储路径。而关系数据库就可以较好地解决这些问题。
②关系型数据库介绍
关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。
关系型数据库诞生距今已有40多年了,从理论产生到发展到实现产品,例如:常见的MySQL和Oracle数据库,oracle在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大产业市场,而MySQL也是不容忽视的数据库,以至于被Oracle重金收购了。
1.4、关系型数据库表格之间的关系举例
表1:学生表
学号 姓名 年龄
S001 张三 16
S002 李四 17
S003 王五 18
S004 赵六 19
表2:课程表
课程号 课程名 学分
C1001 语文 5
C1002 数学 5
C1003 外语 5
C1004 物理 4
表3:学生选课表
学号 课程号 成绩
S001 C1001 80
S002 C1002 90
S003 C1003 60
S004 C1004 66
1.5、关系型数据库知识和特点小结:
①关系型数据库在存储数据时实际就是采用的一张二维表(和Word和excell里表格几乎一样)。
②市场占有量较大的是MySQL和Oracle数据库,而互联网场景最常用的是MySQL数据库。
③它通过SQL结构化查询语言来存取、管理关系型数据库的数据。
④关系型数据库在保持数据安全和数据一致性方面很强,遵循ACID理论。
二、非关系型数据库介绍
2.1、非关系型数据库诞生的背景
非关系型数据库也被称为NoSQL数据库,NoSQL的本意是“Not Only SQL”,指的是非关系型数据库,而不是“No SQL”的意思(没有SQL语句?),因此,NoSQL的产生并不是要彻底否定关系型数据库,而是作为传统关系型数据库的一个有效补充。NoSQL数据库在特定的场景下可以发挥出难以想象的高效率和高性能。
随着互联网web2.0(以前的基本上是静态网页,而现在是交互的网站)网站的兴起,传统的关系型数据库在应付web2.0网站,特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是开始出现了大批针对特定场景,以高性能和使用便利为目的的功能特异化的数据库产品,NoSQL(非关系型)类的数据库就是在这样的情景中诞生并得到了非常迅速的发展。NoSQL不将数据的一致性作为重点,或者是作为次重点。
NoSQL是非关系型数据库的广义定义。它打破了长久以来关系型数据库与ACID理论大统一的局面。NoSQL数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。该术语(NoSQL)在2009年初得到了广泛认同。当今的应用体系结构需要数据存储在横向伸缩性上能够满足需求。而NoSQL存储就是为了实现这个需求而诞生的。
当今的应用体系结构需要数据存储在横向伸缩性上能够满足需求。而NoSQL存储就是为了实现这个需求而诞生的。Google的BigTable与Amazon的Dynamo是非常成功的商业NoSQL实现。一些开源的NoSQL体系,如Facebook的Cassandra,Apache的HBase,也得到了广泛认同,redis,mongodb也逐渐的越来越受到各类大中小型公司的欢迎和追捧。
2.2、NOSQL非关系型数据库小结
①NOSQL数据库不是否定关系型数据库,而是作为关系数据库的一个重要补充。
②NOSQL数据库为了灵活及高性能、高并发而生,忽略影响高性能、高并发的功能。
③在NOSQL数据库领域,当今的最典型产品为Redis(持久化缓存)、Mongodb、Memcached(纯内存)等。
④NOSQL数据库没有标准的查询语言(SQL),通常使用REST式的数据接口或者查询API。
2.3、非关系型数据库种类
①键值(Key-Value)存储数据库
键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性。
键值(Key-Value)数据库主要是使用一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key-Value模型对于IT系统来说的优势在于简单、易部署、高并发。
典型产品:Memcached、Redis、MemcacheDB、Berke ley DB。
②列存储(Column-oriented)数据库
列存储数据库将数据存储存在列族(column family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果我们有一个Person类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。
这部分数据库通常用来应对分布式存储的海量数据。键仍然存在,但是他们的特点是指向了多个列。这些列是由列家族来安排的。
典型产品:Cassandra,HBase
③面向文档(Document-Oriented)的数据库
文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。
面向文档数据库会将数据以文档的形式存储。每个文档都是自包含的数据单元,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,数据可以使用XML、JSON或者JSONB等多种形式存储。
典型产品:MongDB、CouchDB
④图形(Graph)数据库
图形数据库允许我们将数据以图的方式存储。实体会被作为顶点,而实体之间的关系则会被作为边。比如我们有三个实体,Steve Jobs、Apple和Next,则会有两个“Founded by”的边将Apple和Next连接到Steve Jobs。
图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据查询需要定制数据模型。许多NoSQL数据库都有REST的数据接口或者查询API。
典型产品:Neo4J、InfoGrid