数据库理论

数据库

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

关系型数据库:指采用了关系模型来组织数据的数据库
关系模型指的是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
优点是容易理解、使用方便、易于维护。
缺点是磁盘IO是一个很大的瓶颈,不适用于高并发的网站,海量数据查询效率低,难以横向扩展,当应用系统访问量与日俱增时,可能需要数据库系统进行扩展和升级,往往需要停机维护和数据迁移;导致性能欠佳的最主要原因时多表的关联查询、以及复杂数据分析类型的复杂SQL报表查询。为了保证数据库的ACID特性,必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储了一个格式化的数据结构。

非关系型数据库:指非关系型、分布式的,且一般不保证遵循的ACID原则的数据库存储系统。
非关系型数据库以键值对存储,且结构不固定,每一个元组可以有不一样的字段,每个元组可以根据需要增加一些自己的键值对,不局限于固定的结构,可以减少一些时间和空间的开销。
优点是:

  1. 用户可以根据需要去添加自己需要的字段,为了获取用户的不同信息,不像关系数据库中,要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询。
  2. 适用于SNS(Social Networking Sevice)中,例如Facebook,微博。系统升级,功能增加往往意味着数据结构的巨大变化,关系型数据库难以应付
    缺点:
  3. 只适合存储较为简单的数据,对于要进行复杂查询到数据,关系型数据库更不适合。
  4. 不适合持久存储海量数据。
    分类:
    1.面向高性能并发读写的key-value数据库,类似于Map,代表:redis
    2.面向海量数据访问的面向文档数据库,文档存储主要是JSON,代表:MogoDB。
    3.面向搜索内容的搜索引擎,搜索引擎是专门用于搜索数据内容的NoSQL数据库管理系统,海量数据实时分析,代表Elasticsearch。
    4.面向可扩展的分布式数据库,解决传统数据库存在可扩展性上的缺陷,主流代笔:HBase

关于NoSQL的CAP理论

NoSQL(非关系型数据库)的基本需求是支持分布式存储,严格一致性和可用性需要相互取舍(CP或AP)
CAP理论: 一个分布式系统不可能同时满足C(一致性)、A(可用性)、P(分区容错性)三个基本需求,并且最多满足其中的两项。对于一个分布式系统来说,分区容错性是基本需求,否则不能称之为分布式系统,因此需要再C和A之间寻求平衡。
C(Consistency)一致性
一致性指更新操作成功并返回客户端后,所有节点在同一时间的数据完全一致,与ACID中C完全不同
A(Availability)可用性
可用性指服务一直可用,而且是正常的响应时间。
P(Partition tolerance)分区容错性
分区容错性是指分布式系统在遇到节点故障或网络分区故障时,仍然能够对外提供满足一致性和可用性的服务。

关系型数据库和非关系型数据库的区别

1.成本:NoSQL数据库简单易部署,基本开源免费,关系型数据库如Oracle需要购买,成本高。
2.查询速度: NoSQL数据库存储在缓存中,而且不用经过SQL层层解析,查询速度快,关系型数据库存储在硬盘中,速度较慢
3.存储数据的格式:NoSQL数据库以Key-value形式、文档形式、图片形式等,所以可以存储基础类型以及对象或集合等各种形式,而关系型数据库只支持基础类型。
4.扩展性:关系型数据库有类似join的多表查询机制的限制导致扩展很难。NoSQL基于键值对,数据之间没有耦合性,所以易于水平扩展。
5.持久存储:NoSQL不适用持久存储,海量数据的持久化存储,还是需要关系型数据库。
6.数据一致性NoSQL数据库一般强调的是数据最终一致性,不像关系型数据库一样强调数据一致性从非关系型数据库中读到的数据可能还是处于一个中间态的数据NoSQL不提供事务处理

简述数据库的事务

数据库事务是一个数据库操作序列,这些操作要么全部执行,要么全不执行。
数据库事务有四个性质(ACID)

  1. 原子性(Atomicity):事务中的全部操作再数据库中是不可分割的,要么全部执行,要么全不执行。
  2. 一致性(Consistency):几个并行执行的事务,其执行结果必须与按某一顺序串行执行的结果相一致。
  3. 隔离性(Isolation):事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务是透明的。
  4. 持久性(Durability):对于任意已经提交的事务,系统必须保证事务对数据库的改变不会丢失,即使数据库放生故障。

事务的ACID特性是由关系型数据库(DBMS)来实习的,DBMS采用日志来保证事务的原子性、一致性、持久性。日志记录了事务对数据库所做的更新,如果某个事物在执行过程中出现错误,就可以根据日志撤销事务对数据库的更新,使得数据库回滚到之前的初始状态。
事物的隔离性是由DBMS采用锁机制来实现的。当多个事务同时更新数据库中相同的数据时,只允许持有锁的事务能更新该数据,直到前一个事务释放了锁,其他事务才有机会更新该数据。
更详细的连接:https://blog.csdn.net/keneyr/article/details/103937571

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值