关系型数据库和非关系型数据库

一、二者区别

关系型数据库非关系型数据库
支持强大的查询语言支持非常简单的查询语言
它具有固定的模式无固定模式
遵循ACID(原子性、一致性、隔离性、持久性)只有“最终一致”
支持事务不支持事务

二、二者分别都有哪些数据库?

关系型数据库:MySQL 、Oracle 、SQL Server 、PostgreSQL 、DB2···
(NOSQL)非关系型数据库:Redis 、Cassandra 、 HBASE  、MongoDB ···

三、各自定义

关系型数据库:是建立在关系模型基础上的数据库。关系模型就是指二维表格模型,因而一个关系数据库就是由二维表及其之间的联系组成的一个数据组织。
关系型数据库以行和列的形式存储数据,以便于用户理解。这一系列的行和列被称为表,一组表组成了数据库。用户用查询(Query)来检索数据库中的数据。一个Query是一个用于指定数据库中行和列的SELECT语句。
关系型数据库确实是现今使用最广泛、最容易理解和使用的数据库模型。大多数的企业级系统数据库都采用关系型数据库,关系型数据库的概念是掌握数据库开发的基础。
NOSQL数据库:NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。泛指非关系型数据库,“NOT ONLY SQL”不仅仅是SQL。

四、NOSQL数据库和关系型数据库

(一)、NOSQL数据库

分类

Examples举例

典型应用场景

数据模型

优点

缺点

键值(key-value

Tokyo

Cabinet/Tyrant, Redis,Voldemort, Oracle

BDB

内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。

Key 指向 Value 的键值对,通常用hash table来实现

查找速度快

数据无结构化,通常只被当作字符串或者二进制数据

列存储数据库

Cassandra, HBase,

Riak

分布式的文件系统

以列簇式存储,将同一列数据存在一起

查找速度快,可扩展性强,更容易进行分布式扩展

功能相对局限

文档型数据库

CouchDB, MongoDb

Web应用(与Key-Value类似,Value是结构化的,不同的是数据库能够了解Value的内容)

Key-Value对应的键值对,Value为结构化数据

数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构

查询性能不高,而且缺乏统一的查询语法。

图形(Graph)数据库

Neo4J,

 InfoGrid,

 Infinite

Graph

社交网络,推荐系统等。专注于构建关系图谱

图结构

利用图结构相关算法。比如最短路径寻址,N度关系查找等

很多时候需要对整个图做计算才能得出需要的信息,而且这种结构不太好做分布式的集群方案。

对于NoSQL并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征:
不需要预定义模式:不需要事先定义数据模式,预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。
无共享架构:相对于将所有数据存储的存储区域网络中的全共享架构。NoSQL往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。
弹性可扩展:可以在系统运行的时候,动态增加或者删除结点。不需要停机维护,数据可以自动迁移。
分区:相对于将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。
异步复制:和RAID存储系统不同的是,NoSQL中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起迟延。缺点是并不总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据。
BASE:相对于事务严格的ACID特性,NoSQL数据库保证的是BASE特性。BASE是最终一致性和软事务。
NoSQL数据库并没有一个统一的架构,两种NoSQL数据库之间的不同,甚至远远超过两种关系型数据库的不同。可以说,NoSQL各有所长,成功的NoSQL必然特别适用于某些场合或者某些应用,在这些场合中会远远胜过关系型数据库和其他的NoSQL。
NOSQL数据库在一下这几种情况下比较适用
1、数据模型比较简单
2、需要灵活性更强的IT系统
3、对数据库性能要求较高
4、不需要高度的数据一致性
5、对于给定的key,比较容易映射复杂值的环境

(二)、关系型数据库

关系型数据库相比较其他数据库的优势:

1、容易理解:关系模型中的二维表结构非常贴近逻辑世界,相对于网状、层次等其他模型来说更容易理解。

2、使用方便:通用的SQL语言使得操作关系型数据库非常方便,只需要使用SQL语言在逻辑层面操作数据库,而完全不必理解其底层实现。
3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大降低了数据冗余和数据不一致的概率。
1、MySQL数据库

MySQL是最受欢迎的开源SQL数据库管理系统,它由 MySQL AB开发、发布和支持。MySQL AB是一家基于MySQL开发人员的商业公司。MySQL是MySQL AB的注册商标,2010 年MySQL被Oracle收购。
MySQL是一个快速的、多线程、多用户和健壮的SQL数据库服务器。MySQL服务器支持关键任务、重负载生产系统的使用,也可以将它嵌入到一个大配置(mass- deployed)的软件中去。 与其他数据库管理系统相比,MySQL具有以下优势:
1、MySQL也是一个关系数据库管理系统;
2、MySQL是开源的;
3、MySQL服务器是一个快速的、可靠的和易于使用的数据库服务器;
4、MySQL服务器工作在客户/服务器模式或嵌入式的系统中;
5、有大量的MySQL软件可以使用;
6、支持多种数据库引擎,这是MySQL一大特色,在读密集和事务密集形应用中,可以选择不同的数据库引擎。
2、SQL Server

SQL Server是由微软开发的数据库管理系统,是Web上最流行的用于存储数据的数据库,它已广泛用于电子商务、银行、保险、电力等与数据库有关的行业。SQL Server只能在Windows上运行,操作系统的系统稳定性对数据库十分重要。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。
SQL Server 提供了众多的Web和电子商务功能,如对XML和Internet标准的丰富支持,通过Web对数据进行轻松安全的访问,具有强大的、灵活的、基于Web的和安全的应用程序管理等。而且,由于其易操作性及其友好的操作界面,深受广大用户的喜爱。作为开发和测试,SQL Server可以是个不错的选择。
3、Oracle

    作为全球最大的,领先的数据库巨头,Oracle涉及了数据库行业的所有领域,产品线强大,在数据仓库、数据分析、在线事务处理方面都具有很强的表现。具有以下的几个特点:

①、兼容性:方便数据的对接和数据交换

②、移植性:Oracle的产品可运行于大多数硬件与操作系统平台上。可以安装在多种不同的大、中、小型机上;可在VMS、DOS、UNIX、Windows,Linux等多种操作系统下工作,支持多种网络协议,这为以后的系统升级和平台迁移提供了方便。

③、高可用性:在一个大型数据库或数据仓库环境,数据库是基础中的基础,数据库服务的连续性和可用性非常关键,为保证中心数据库的持续可用,Oracle提供了一系列高可用性产品,比如RAC,DataGuard,Streams Replication等。在数据备份方面,提供了全球最为强大的可免费使用的RMAN备份工具,RMAN备份是给予物理级别的,不及备份了数据还备份了数据相关的文件和日志,这样关键时期可以缩短数据恢复的时间。RMAN包含在Oracle数据库的所有版本中。大多数商业数据库,企业级的备份需要支付昂贵的License.

④、开放性:Oracle数据库具有高度的开放性,为了满足学者了解和学习Oracle数据库,Oracle公司提供了开发许可License,这个License不需要支付费用,Oracle官网提供了可下载学习的数据库产品 ,并且在产品中包含了这个License。也就是我们可以合法免费的使用部分Oracle数据库产品进行学习。Oracle支持多种驱动程序和开发工具,开发者可以很轻松的开发基于Oracle数据库的产品。

4、DB2

DB2是IBM旗下的关系型数据库,作为和Oracle同步起家的产品,业绩方面,DB2在企业级的应用最为广泛,在全球的500家最大的企业中,几乎85%以上都用DB2数据库服务器,而国内到1997左右年约占5%。随着Oracle的改革,从2002开始,Oracle改写了这一辉煌。DB2的成功莫过于IBM自身的硬件和强大的软件支持,大多数企业选择了IBM的小型机后,经过IBM的关系营销,也会选择IBM的软件,包括DB2。
DB2的整体特性有:
1、支持多种操作系统,支持目前流行的Linux(IBM自身的Linux OS),Windows等,Unix只支持IBM自己的AIX;
2、对硬件有一定的要求,最初只支持IBM的AS/400系统,现在支持INTEL部分硬件;
3、兼容Oracle,DB2兼容Oracle大多数的数据类型和SQL语言,比如PL/SQL;
4、 开放性不高,没有Oracle,SQL Server,MySQL高度开放;
5、可靠性好,尤其和IBM的小型机可以集合起来。

============================================================================

数据库的介绍

1、什么是数据库DataBase

数据库是按照数据结构来组织、存储和管理数据的仓库。

简单来说是本身可视为电子化的文化柜——存储电子文件的处所,用户可以对文件中的数据进行新增、截取、更新、删除等操作。
在经济管理的日常工作中,常常需要把某些相关的数据放进这样的“仓库”,并根据管理的需要进行相应的处理。
2、数据库的特点

①、实现数据共享

②、减少数据的冗余

③、数据独立性

④、实现集中控制--数据(展现数据之间的联系)

⑤、安全性、完整、并发

⑥、故障恢复,防止数据被破坏

============================================================================

ACID(一致性、原子性、隔离性、持久性)

    ACID指数据库事务正确执行的四个基本要素的缩写。一个支持事务的数据库必须具备的四个特征;否则在事务过程当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。

1、原子性

    整个事务中的所有操作,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。

2、一致性

一个事务可以封装状态改变(除非它是一个只读的)。事务必须始终保持系统处于一致的状态,不管在任何给定的时间并发事务有多少。

也就是说:如果事务是并发多个,系统也必须如同串行事务一样操作。其主要特征是保护性和不变性(Preserving an Invariant),以转账案例为例,假设有五个账户,每个账户余额是100元,那么五个账户总额是500元,如果在这个5个账户之间同时发生多个转账,无论并发多少个,比如在AB账户之间转账5元,在CD账户之间转账10元,在BE之间转账15元,五个账户总额也应该还是500元,这就是保护性和不变性

3、隔离性

隔离状态执行事务,使它们好像是系统在给定时间内执行的唯一操作。如果有两个事务,运行在相同的时间内,执行相同的功能,事务的隔离性将确保每一事务在系统中认为只有该事务在使用系统。这种属性有时称为串行化,为了防止事务操作间的混淆,必须串行化或序列化请求,使得在同一时间仅有一个请求用于同一数据。

4、持久性

    在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。

[事务完成之后,它对于系统的影响是永久性的。该修改即使出现致命的系统故障也将一直保持。]

=================================================================================================================

数据库事务

    是指作为单个逻辑工作单元执行的一系列操作, 要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。一个逻辑工作单元要成为事务,必须满足所谓的ACID(原子性、一致性、隔离性和持久性)属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负责事务的处理。


参考其他资料!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值