关系型数据和文档型数据库有什么区别

关系型数据和文档型数据库有什么区别

关系数据库

关系数据库(Relational Database)是建立在关系模型基础上的数据库,借助于集合数学等概念来处理数据库中的数据,

所谓关系模型是一对一、一对多或者多对多等关系,常见的关系型数据库有 Oracle、SQL Server、DB2、MySQL 等。

文档型数据库

而文档型数据库是一种非关系型数据库,非关系型数据库(Not Only SQL,NoSQL)正好与关系型数据库相反,它不是建立在“关系模型”上的数据库。文档型数据库的典型代表是 MongoDB。

典型回答

ACID特性

关系型数据库属于早期的传统型数据库,它有着标准化的数据模型,以及事务和持久化的支持, 关系型数据库都会支持ACID特性 原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)

  • 原子性

    是指一个事务中的所有操作,要么全部完成、要么全部不完成,不会存在中间的状态。也就是说事务在正常的情况下会执行完成;异常的情况下,比如在执行的过程中如果出现问题,会回滚成最初的状态,而非中间状态。

  • 一致性

    是指事务从开始到结束执行之间的中间状态不会被其他事务看到

  • 隔离性

    是指数据库允许多个事务同时对数据进行读写或修改的能力,并且整个过程对各个事务来说是相互隔离的。

  • 持久性

    是指每次事务提交之后都不会丢失。

三范式

关系型数据库一般会遵循三范式设计思想 具体如下

三范式详解

  • 一范式(确保每列保持原子性)

第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值,就说明该数据库表满足了第一范式。

  • 第二范式(确保表中的每列都和主键相关)

第二范式在第一范式的基础之上更进一层。第二范式需要确保数据库表中的每一列都和主键相关,而不能只与主键的某一部分相关(主要针对联合主键而言)。也就是说在一个数据库表中,一个表中只能保存一种数据,不可以把多种数据保存在同一张数据库表中。

  • 第三范式(确保每列都和主键列直接相关,而不是间接相关)

第三范式需要确保数据表中的每一列数据都和主键直接相关,而不能间接相关。

非关系型数据库和文档型数据库有什么区别?

非关系型数据库和文档型数据库属于包含关系,非关系型数据库包含了文档型数据库,文档型数据库属于非关系型数据。

非关系型数据通常包含3钟数据库: 文档型数据库、键值型数据库和全文搜索型数据库,下面分别来看每种类型的具体用途。

文档型数据库

文档型数据库以 MongoDB 和 Apache CouchDB 为代表,文档型数据库通常以 JSON 或者 XML 为格式进行数据存储。

文档型数据库的使用场景如下。

  • 敏捷开发,因为 MongoDB 拥有比关系型数据库更快的开发速度,因此很多敏捷开发组织,包括纽约时报等都采用了 MongoDB 数据库。使用它可以有效地避免在增加和修改数据库带来的沟通成本,以及维护和创建数据库模型成本,使用 MongoDB 只需要在程序层面严格把关就行,程序提交的数据结构可以直接更新到数据库中,并不需要繁杂的设计数据库模型再生成修改语句等过程。
  • 日志系统,使用 MongoDB 数据库非常适合存储日志,日志对应到数据库中就是很多个文件,而 MongoDB 更擅长存储和查询文档,它提供了更简单的存储和更方便的查询功能。
  • 社交系统,使用 MongoDB 可以很方便的存储用户的位置信息,可以方便的实现查询附近的人以及附近的地点等功能。
键值型数据库

键值数据库也就是 Key-Value 数据库,它的典型代表数据库是 Redis 和 Memcached,而它们通常被当做非持久化的内存型数据库缓存来使用。当然 Redis 数据库是具备可持久化得能力的,但是开启持久化会降低系统的运行效率,因此在使用时需要根据实际的情况,选择开启或者关闭持久化的功能。

键值型数据库以极高的性能著称,且除了 Key-Value 字符串类型之外,还包含一些其他的数据类型。以 Redis 为例,它提供了字符串类型(String)、列表类型(List)、哈希表类型(Hash)、集合类型(Set)、有序集合类型(ZSet)等五种最常用的基础数据类型,还有管道类型(Pipeline)、地理位置类型(GEO)、基数统计类型(HyperLogLog)和流类型(Stream),并且还提供了消息队列的功能。

全文搜索型数据库

传统的关系型数据库主要是依赖索引来实现快速查询功能的,而在全文搜索的业务下,索引很难满足查询的需求。因为全文搜索需要支持模糊匹配的,当数据量比较大的情况下,传递的关系型数据库的查询效率是非常低的;

全文搜索型数据库以 ElasticSearch 和 Solr 为代表,它们的出现解决了关系型数据库全文搜索功能较弱的问题。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值