精华内容
下载资源
问答
  • 关系型数据库中事物是什么
    千次阅读
    2022-03-31 09:29:01
    1. 关系型数据库支持多个表之间连接查询(join),非关系型数据库不支持连接查询
    2. 关系型强调数据之间的强关联型,并支持事物来确保数据的增删改查的强一致性,而非关系型数据库对数据的事物则支持的不是很好
    3. 关系型数据库不灵活,是一种二维的数据结构,而且对一行的数据格式类型要求很高,非关系型数据库数据格式则更灵活,数据字段类型也很灵活
    4. 非关系型数据库比关系型数据库更容易扩展
    5. 非关系型数据库对大量的并发读写支持的更好,性能更高,而关系型由于IO瓶颈,高并发读写速度慢,支持不好
    6. 对于数据量很大,而且数据之间无规律,为了能更好的利用这些数据,就可以用非关系数据库
    7. 非关系型数据库有Mongdb,Redis,Hbase,关系型数据库有Mysql,Oracle
    8. redis是内存级数据库,所有数据操作都在内存中进行,数据持久化通过RDB和AOF方式
    9. Mysql所有的索引和数据都放在硬盘中,所以对数据的操作会有大量的IO耗时,IO是导致读写慢的主要原因
    10. Mongdb介于二者之间,mongodb的所有数据实际上是存放在硬盘的,所有要操作的数据通过mmap的方式映射到内存某个区域内
    11.传统关系型数据库在数据库高并发读写,对海量的数据存储,对数据库的高可扩展性应用场景性能不好
    12.mongdb更灵活,适用于需求变更,模型无法确定,要进行扩展等场景,mongdb每条数据都可以灵活增加字段
    更多相关内容
  •  在过去的很长一段时间关系型数据库(Relational Database Management System)一直是主流的数据库解决方案,他运用真实世界中事物与关系来解释数据库抽象的数据架构。然而,在信息技术爆炸式发展的,大数据...
  • 关系型数据库以行和列的形式存储数据,行和列的形式被称为表,表是由一组相关实体组成的集合。一组表组成了数据库。表的一行称为关系的一个元组,用来存储事物的一个实例;表的一列称为关系的一个属性,用来描述...
  • 什么是事务? 事务用于处理操作量大,复杂性高的数据,例如,我们删除一个成员的数据时,既要删除成员信息表的数据又要删除该成员的基本资料表的数据,由多个数据库紧密关联操作的语句构成一个事务。 事务的四个...

    什么是事务?

    事务用于处理操作量大,复杂性高的数据,例如,我们删除一个成员的数据时,既要删除成员信息表的数据又要删除该成员的基本资料表的数据,由多个数据库紧密关联操作的语句构成一个事务。

    事务的四个特性:

    A(atomicity):原子性

    定义:事务的操作是一个不可分割的整体,执行时操作要不全部执行成功,要不全部执行失败

    C(consistency):一致性

    定义:事务使数据库中的数据从一个一致性状态到另一个一致性状态,事务的一致性与原子性是密切相关的。

    I(isolation):隔离性

    并发执行的各个事务不会互相干扰

    D(durability):持久性

    事务执行的结果应该是被永久性保存在数据库中的。

    最经典的例子就是银行转账的操作:

     

    A给B转账100元,A的账户应当扣除100元,B的账户应当增加100元这两个操作时原子性的,要不都成功,要不都失败
    A的账户不能凭空消失100元,B的账户也不会凭空多出100元,数据前后都是一致性的状态一致性
    A给B转账的同时,不能影响C给A转账隔离性
    A给B转账100元,A的账户应当扣除100元,B的账户应当增加100元,这个事务的结果是永久性保存在数据库中的,不会因为数据库崩溃导致结果的丢失持久性

    如何保障事务的几大特性:

    redo log重做日志,保证事务的原子性与持久性。

    当事务提交时,将事务的所有日志写入到重做日志文件进行持久化,重做日志分为两部分:一是内存中的重做日志缓冲,易丢失,二是重做日志文件,磁盘上,持久的。日志写到重做日志缓冲中,然后调用fsync将缓冲文件刷新到磁盘上进行持久化,从而保证事务的持久化。

    重做日志以块为单位进行存储,一块的大小为512字节,超过512字节的部分,将分到下个块中,块的大小与扇区的大小相同,都是512字节,可以保证事务的原子性。

     undo log用来保证事务的一致性。数据库不但会产生redo日志,还会产生undo日志,这些undo日志可以在事务发生错误时进行回滚。

    事务的隔离性由锁实现,锁的部分将在下一篇文章简述。

     

    展开全文
  • 关系型数据库: 1.最大特点就是事务的一致性:传统的关系型数据库读写操作都是事务的,具有ACID的特点,所以安全性也比较高。 事务的原子性(Atomicity): 是指一个事务要么全部执行,要么不执行,也就是说一个事务...

    关系型数据库:

    1.最大特点就是事务的一致性:传统的关系型数据库读写操作都是事务的,具有ACID的特点,所以安全性也比较高。
    • 事务的原子性(Atomicity)

    是指一个事务要么全部执行,要么不执行,也就是说一个事务不可能只执行了一半就停止了。比如你从取款机取钱,这个事务可以分成两个步骤:1划卡,2出钱。不可能划了卡,而钱却没出来。这两步必须同时完成,要么就不完成。

    • 事务的一致性(Consistency)

    是指事务的运行并不改变数据库中数据的一致性。例如,完整性约束了a+b=10,一个事务改变了a,那么b也应该随之改变。

    • 独立性(Isolation)

    事务的独立性也有称作隔离性,是指两个以上的事务不会出现交错执行的状态。因为这样可能会导致数据不一致。

    • 持久性(Durability)

    事务的持久性是指事务执行成功以后,该事务对数据库所作的更改便是持久的保存在数据库之中,不会无缘无故的回滚。

    2. 关系数据库具有固定的表结构,因此,其扩展性极差
    3.关系型数据库表与表之间有关系,即一对一、一对多、多对多
    4.只支持基本数据类型存储

    非关系型数据库:

    1.表与表之间无关系
    2.非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合
    3.存储数据的格式多样,nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式
    4.大部分开源免费
    展开全文
  • 当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。 非关系型数据库有 NoSql、Cloudant。   ==========================优缺点分析如下================================...

    当前主流的关系型数据库Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。

    非关系型数据库有 NoSql、Cloudant。

     

    ==========================优缺点分析如下===============================================

    nosql和关系型数据库比较?


    优点:
    1)成本:nosql数据库简单易部署,基本都是开源软件,不需要像使用oracle那样花费大量成本购买使用,相比关系型数据库价格便宜。
    2)查询速度:nosql数据库将数据存储于缓存之中,关系型数据库将数据存储在硬盘中,自然查询速度远不及nosql数据库。
    3)存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,所以可以存储基础类型以及对象或者是集合等各种格式,而数据库则只支持基础类型。
    4)扩展性:关系型数据库有类似join这样的多表查询机制的限制导致扩展很艰难。
    缺点:
    1)维护的工具和资料有限,因为nosql是属于新的技术,不能和关系型数据库10几年的技术同日而语。
    2)不提供对sql的支持,如果不支持sql这样的工业标准,将产生一定用户的学习和使用成本。

    3)不提供关系型数据库对事物的处理。

     

    非关系型数据库与关系型数据库各自的优势

    非关系型数据库的优势:

    1. 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。

    2. 可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

    关系型数据库的优势:

    1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。

    2. 事务支持使得对于安全性能很高的数据访问要求得以实现。对于这两类数据库,对方的优势就是自己的弱势,反之亦然。

     

    非关系型数据库的优势和劣势

    关系型数据库把所有的数据都通过行和列的二元表现形式表示出来。

    关系型数据库的优势:

    1. 保持数据的一致性(事务处理)

    2.由于以标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处)

    3. 可以进行Join等复杂查询

    其中能够保持数据的一致性是关系型数据库的最大优势。

    关系型数据库的不足:

    不擅长的处理

    1. 大量数据的写入处理

    2. 为有数据更新的表做索引或表结构(schema)变更

    3. 字段不固定时应用

    4. 对简单查询需要快速返回结果的处理

     

     

    =========================区别如下==============================================

    区别的总结:

    首先一般非关系型数据库是基于CAP模型,而传统的关系型数据库是基于ACID模型
    1.
    数据存储结构:
    首先关系型数据库一般都有固定的表结构,并且需要通过DDL语句来修改表结构,不是很容易进行扩展,而非关系型数据库的存储机制就有很多了,比如基于文档的,K-V键值对的,还有基于图的等,对于数据的格式十分灵活没有固定的表结构,方便扩展,因此如果业务的数据结构并不是固定的或者经常变动比较大的,那么非关系型数据库是个好的选择
    2.
    可扩展性
    传统的关系型数据库给人一种横向扩展难,不好对数据进行分片等,而一些非关系型数据库则原生就支持数据的水平扩展(比如mongodb的sharding机制),并且这可能也是很多NoSQL的一大卖点,其实象Mysql这种关系型数据库的水平扩展也并不是难,即使NoSQL水平扩展容易但对于向跨分片进行joins这种场景都没有什么太好的解决办法,不管是关系型还是非关系型数据库,解决水平扩展或者跨分片Joins这种场景,在应用层和数据库层中间加一层中间件来做数据处理也许是个好的办法
    3.
    数据一致性
    非关系型数据库一般强调的是数据最终一致性,而不没有像ACID一样强调数据的强一致性,从非关系型数据库中读到的有可能还是处于一个中间态的数据,因此如果你的业务对于数据的一致性要求很高,那么非关系型数据库并不一个很好的选择,非关系型数据库可能更多的偏向于OLAP场景,而关系型数据库更多偏向于OLTP场景

     

     

    ==============================应用部分如下分析===============================================

    关系型数据库

    大量数据的写入处理

    读写集中在一个数据库上让数据库不堪重负,大部分网站已使用主从复制技术实现读写分离,以提高读写性能和读库的可扩展性。

    所以在进行大量数据操作时,会使用数据库主从模式。数据的写入由主数据库负责,数据的读入由从数据库负责,可以比较简单地通过增加从数据库来实现规模化,但是数据的写入却完全没有简单的方法来解决规模化问题。

    第一,要想将数据的写入规模化,可以考虑把主数据库从一台增加到两台,作为互相关联复制的二元主数据库使用,确实这样可以把每台主数据库的负荷减少一半,但是更新处理会发生冲突,可能会造成数据的不一致,为了避免这样的问题,需要把对每个表的请求分别分配给合适的主数据库来处理。

    第二,可以考虑把数据库分割开来,分别放在不同的数据库服务器上,比如将不同的表放在不同的数据库服务器上,数据库分割可以减少每台数据库服务器上的数据量,以便减少硬盘IO的输入、输出处理,实现内存上的高速处理。但是由于分别存储字不同服务器上的表之间无法进行Join处理,数据库分割的时候就需要预先考虑这些问题,数据库分割之后,如果一定要进行Join处理,就必须要在程序中进行关联,这是非常困难的。

     

     

    --为有数据更新的表做索引或表结构变更

    在使用关系型数据库时,为了加快查询速度需要创建索引,为了增加必要的字段就一定要改变表结构,为了进行这些处理,需要对表进行共享锁定,这期间数据变更、更新、插入、删除等都是无法进行的。如果需要进行一些耗时操作,例如为数据量比较大的表创建索引或是变更其表结构,就需要特别注意,长时间内数据可能无法进行更新。

     

    --字段不固定时的应用

    如果字段不固定,利用关系型数据库也是比较困难的,有人会说,需要的时候加个字段就可以了,这样的方法也不是不可以,但在实际运用中每次都进行反复的表结构变更是非常痛苦的。你也可以预先设定大量的预备字段,但这样的话,时间一长很容易弄不清除字段和数据的对应状态,即哪个字段保存有哪些数据。

    --对简单查询需要快速返回结果的处理  (这里的“简单”指的是没有复杂的查询条件)

    这一点称不上是缺点,但不管怎样,关系型数据库并不擅长对简单的查询快速返回结果,因为关系型数据库是使用专门的sql语言进行数据读取的,它需要对sql与越南进行解析,同时还有对表的锁定和解锁等这样的额外开销,这里并不是说关系型数据库的速度太慢,而只是想告诉大家若希望对简单查询进行高速处理,则没有必要非使用关系型数据库不可。

     

     

    非关系型(NoSQL)数据库

    关系型数据库应用广泛,能进行事务处理和表连接等复杂查询。相对地,NoSQL数据库只应用在特定领域,基本上不进行复杂的处理,但它恰恰弥补了之前所列举的关系型数据库的不足之处。

    优点:

     易于数据的分散

    各个数据之间存在关联是关系型数据库得名的主要原因,为了进行join处理,关系型数据库不得不把数据存储在同一个服务器内,这不利于数据的分散,这也是关系型数据库并不擅长大数据量的写入处理的原因。相反NoSQL数据库原本就不支持Join处理,各个数据都是独立设计的,很容易把数据分散在多个服务器上,故减少了每个服务器上的数据量,即使要处理大量数据的写入,也变得更加容易,数据的读入操作当然也同样容易。

     

    典型的NoSQL数据库

    临时性键值存储(memcached、Redis)、永久性键值存储(ROMA、Redis)、面向文档的数据库(MongoDB、CouchDB)、面向列的数据库(Cassandra、HBase)

    一、 键值存储

    它的数据是以键值的形式存储的,虽然它的速度非常快,但基本上只能通过键的完全一致查询获取数据,根据数据的保存方式可以分为临时性、永久性和两者兼具 三种。

    (1)临时性

          所谓临时性就是数据有可能丢失,memcached把所有数据都保存在内存中,这样保存和读取的速度非常快,但是当memcached停止时,数据就不存在了。由于数据保存在内存中,所以无法操作超出内存容量的数据,旧数据会丢失。总结来说:

          。在内存中保存数据

          。可以进行非常快速的保存和读取处理

          。数据有可能丢失

     (2)永久性

           所谓永久性就是数据不会丢失,这里的键值存储是把数据保存在硬盘上,与临时性比起来,由于必然要发生对硬盘的IO操作,所以性能上还是有差距的,但数据不会丢失是它最大的优势。总结来说:

           。在硬盘上保存数据

           。可以进行非常快速的保存和读取处理(但无法与memcached相比)

           。数据不会丢失

    (3) 两者兼备

           Redis属于这种类型。Redis有些特殊,临时性和永久性兼具。Redis首先把数据保存在内存中,在满足特定条件(默认是 15分钟一次以上,5分钟内10个以上,1分钟内10000个以上的键发生变更)的时候将数据写入到硬盘中,这样既确保了内存中数据的处理速度,又可以通过写入硬盘来保证数据的永久性,这种类型的数据库特别适合处理数组类型的数据。总结来说:

           。同时在内存和硬盘上保存数据

           。可以进行非常快速的保存和读取处理

           。保存在硬盘上的数据不会消失(可以恢复)

           。适合于处理数组类型的数据

         

    二、面向文档的数据库

       MongoDB、CouchDB属于这种类型,它们属于NoSQL数据库,但与键值存储相异。

       (1)不定义表结构

         即使不定义表结构,也可以像定义了表结构一样使用,还省去了变更表结构的麻烦。

       (2)可以使用复杂的查询条件 

         跟键值存储不同的是,面向文档的数据库可以通过复杂的查询条件来获取数据,虽然不具备事务处理和Join这些关系型数据库所具有的处理能力,但初次以外的其他处理基本上都能实现。

    三、 面向列的数据库

       Cassandra、HBae、HyperTable属于这种类型,由于近年来数据量出现爆发性增长,这种类型的NoSQL数据库尤其引入注目。

       普通的关系型数据库都是以行为单位来存储数据的,擅长以行为单位的读入处理,比如特定条件数据的获取。因此,关系型数据库也被成为面向行的数据库。相反,面向列的数据库是以列为单位来存储数据的,擅长以列为单位读入数据。

    面向列的数据库具有搞扩展性,即使数据增加也不会降低相应的处理速度(特别是写入速度),所以它主要应用于需要处理大量数据的情况。另外,把它作为批处理程序的存储器来对大量数据进行更新也是非常有用的。但由于面向列的数据库跟现行数据库存储的思维方式有很大不同,故应用起来十分困难。

     

    总结:关系型数据库与NoSQL数据库并非对立而是互补的关系,即通常情况下使用关系型数据库,在适合使用NoSQL的时候使用NoSQL数据库,让NoSQL数据库对关系型数据库的不足进行弥补。

    展开全文
  • NoSQL与关系型数据库全面对比

    千次阅读 2021-06-22 00:15:05
    我们总在说各种数据库的使用,以及各个数据库的优缺点,每个数据库都有自己的所擅长的领域,但选择什么样的数据库才是重点,那么问题来了,数据库到底是怎么划分的,有什么讲究呢?数据库大致分为两大类...
  • 2.什么是关系型数据库 关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库...
  • 关系型数据库: Oracle SQLServer Sybase Informix Access DB2 mysql vfp Ingers FoxPro 非关系型数据库: MongoDB Cassandra CouchDB Hypertable Redis Riak Neo4j Hadoop HBase Couchbase MemcacheDB REVENDB ...
  • 常见的非关系型数据库有哪些

    千次阅读 2020-06-02 16:04:57
    它是一种 NoSQL(not-only sql,泛指非关系型数据库)的数据库。 Redis作为一个内存数据库,具有如下有特点: 性能优秀, 数据在内存, 读写速度非常快, 并支持10W QPS(每秒查询效率). 单进程单线程, 是线程安全的. ...
  • 一、关系型数据库     关系型数据库,是指采用了关系模型来组织数据的数据库。     关系模型是在1970年由IBM的研究员E.F.Codd博士首先提出的,在之后的几十年,关系模型的概念得到...
  • 4.1 关系型数据库 常见的有:MySQL、DB2、Oracle、Microsoft SQL Server、PostgreSQL、Microsoft Access、浪潮K-DB等。 4.1.1关系型数据库的优缺点 优点: 1.容易理解:二维表结构是非常贴近逻辑世界一个概念,关系...
  • 当前数据库分为关系型数据库与非关系型数据库 关系型数据库:指采用了关系模型来组织数据的数据库 非关系型数据库:指非关系型的,分布式的,且一般不保证遵循ACID原则的数据存储系统 仅仅作为关系型数据库的...
  • 关系型数据库

    千次阅读 2019-08-14 21:24:49
    关系型数据库(NOSQL):除了关系型数据库以外的其他数据库都是非关系型数据库。 非关系型数据库有:Redis、HBase、MongoDB、Cloudant 数据库的分类:主要是以是否基于关系模型划分为关系型数据库和非关系型...
  • 引言: 1.什么是数据库: ...数据库根据其数据的存储方式可以分为关系型数据库和非关系型数据库。常见的关系型数据库有Oracle、Microsoft SQL Server、MySQL等。常见的非关系性数据库(Nosql)有 、...
  • 关于关系型数据库的一些基本概念

    千次阅读 2020-06-17 11:03:43
    数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询(CURD)操作。 2、数据库管理系统 数据库管理系统(DataBase Management...
  • 关系型数据库与非关系型数据库

    万次阅读 多人点赞 2018-04-18 15:45:07
    当前主流的关系型数据库有Oracle、DB2、Microsoft SQL Server、Microsoft Access、MySQL等。非关系型数据库有 NoSql、Cloudant。非关系型数据库的优势: 1. 性能NoSQL是基于键值对的,可以想象成表的主键和值的...
  • 如果我们想在微服务架构对非关系型数据库进行分布式事务操作怎么办? 首先要明确的一点就是: 因为NoSQL的高拓展性(horizontal scaling)一旦我们要做事务操作 就一定是分布式的。 但是 NoSQL不支持事务/分布式...
  • 关系型数据库的事务之四大特性

    千次阅读 2020-03-11 12:51:53
    数据库系统必须维护事务的以下特性(简称ACID):   原子性(Atomicity)   一致性(Consistency)   隔离性(Isolation)   持久性(Durability) ⑴ 原子性(Atomicity)  原子性...
  • 什么是关系型数据库? 关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库的数据。 关系模型 现实世界的各种实体以及实体之间的各种联系均用关系模型来表示。关系模型由...
  • 关系型数据库

    万次阅读 2019-03-19 17:06:24
    数据之间存在着像树一样的层级关系 定义: 有且只有一个结点没有双亲结点,这个结点称为根结点 根以外的其它结点有且只有一个双亲结点 特点: 结点的双亲是唯一的; 只能直接处理一对多的实体联系 ; 任何记录...
  • Oracle数据库关系型数据库 关系型数据库的基础知识 1,关系型数据库与数据库管理系统 2,关系型数据库的E-R模型 3,关系型数据库的设计范式 一,关系型数据库与数据库管理系统 1,关系型数据库 ①在关系...
  • 关系型数据库: Oracle SQLServer Sybase Informix Access DB2 mysql vfp Ingers FoxPro 非关系型数据库: MongoDB Cassandra CouchDB Hypertable Redis Riak Neo4j Hadoop HBase Couchbase MemcacheDB REVENDB ...
  • 首先将和大家聊聊为什么NoSQL会在关系型数据库已经非常普及的情况下异军突起? 诞生的原因 随着互联网的不断发展,各种类型的应用层出不穷,所以导致在这个云计算的时代,对技术提出了更多的需求,主要...
  • 关系型数据与非关系型数据库NoSql

    千次阅读 2016-05-20 14:52:29
    最近经常听到NoSql,不知道什么意思,百度之,发现NoSql就是泛指的非关系型数据库。所以学习了一下,发现非关系型数据库最近非常的火,特别适用于某些应用如SNS网站,所以学习了NoSql与我们常用的关系型数据库之间的...
  • 几种常用关系型数据库优缺点比较

    千次阅读 2020-07-19 18:51:32
    在这种体系结构,包括多台计算机,其中处理应用程序,请求服务的计算机称客户机,处理数据库的计算机称为服务器。 优势 1.安全性和可用性高; 2.超快的性能; 3.企业安全性; 4.快速的数据发现; 5.方便易用; 6....
  • 关系型数据库和主键外键

    千次阅读 2021-01-11 21:55:07
    多对多:必须通过单独的一张表来实现(一个老师多个学生,一个学生多个老师)班级一张表,老师一张表,班级和老师的关系一张表 主键: 定义:能够唯一标示一个事物的一个字段或者多个字段的组合 含有主键的叫做主键表...
  • 选择关系型数据库还是非关系型数据库.

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 57,728
精华内容 23,091
热门标签
关键字:

关系型数据库中事物是什么