关系型数据库与非关系型数据库详细比较_关系型数据库通过外键约束确保系统完整性,那么非关系数据库呢?-程序员宅基地

技术标签: Nosql数据库  非关系型数据库  关系型数据库  DB  

关系型数据库与非关系型数据库详细比较


  1. 1.关系型数据库通过外键关联来建立表与表之间的关系,
  2. 2.非关系型数据库通常指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定。
  3. 3.非关系型数据库中,我们查询一条数据,结果出来一个数组,关系型数据库中,查询一条数据结果是一个对象。

区别

关系型数据库

非关系型数据库(Nosql)

存储方式

表格式存储。

存储在表的行和列中。他们之间很容易关联协作存储,提取数据很方便

而Nosql数据库则与其相反,他是大块的组合在一起。

通常存储在数据集中,就像文档、键值对或者图结构。

存储结构

结构化数据。

数据表都预先定义了结构(列的定义),结构描述了数据的形式和内容。这一点对数据建模至关重要,虽然预定义结构带来了可靠性和稳定性(优点),但是修改这些数据比较困难(缺点)。

而Nosql数据库基于动态结构,使用与非结构化数据。因为Nosql数据库是动态结构,可以很容易适应数据类型和结构的变化。

存储规范

数据存储为了更高的规范性,把数据分割为最小的关系表以避免重复,获得精简的空间利用。虽然管理起来很清晰,但是单个操作设计到多张表的时候,数据管理就显得有点麻烦

而Nosql数据存储在平面数据集中,数据经常可能会重复。单个数据库很少被分隔开,而是存储成了一个整体,这样整块数据更加便于读写

存储扩展

系型数据库是纵向扩展,也就是说想要提高处理能力,要使用速度更快的计算机。因为数据存储在关系表中,操作的性能瓶颈可能涉及到多个表,需要通过提升计算机性能来克服。虽然有很大的扩展空间,但是最终会达到纵向扩展的上限

而Nosql数据库是横向扩展的,它的存储天然就是分布式的,可以通过给资源池添加更多的普通数据库服务器来分担负载。

查询方式

结构化查询语言来操作数据库(就是我们通常说的SQL)

 

关系型数据库表中主键

关系型数据库使用预定义优化方式(比如索引)来加快查询操作

以块为单元操作数据,使用的是非结构化查询语言(UnQl),它是没有标准的

Nosql中存储文档的ID

更简单更精确的数据访问模式

事务

遵循ACID规则(原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability))

支持对事务原子性细粒度控制,并且易于回滚事务。

遵循BASE原则(基本可用(Basically Availble)、软/柔性事务(Soft-state )、最终一致性(Eventual Consistency))

Nosql数据库是在CAP(一致性、可用性、分区容忍度)中任选两项,因为基于节点的分布式系统中,很难全部满足,所以对事务的支持不是很好,虽然也可以使用事务,但是并不是Nosql的闪光点。

性能

为了维护数据的一致性付出了巨大的代价,读写性能比较差。在面对高并发读写性能非常差,面对海量数据的时候效率非常低。

Nosql存储的格式都是key-value类型的,并且存储在内存中,非常容易存储,而且对于数据的 一致性是 弱要求。Nosql无需sql的解析,提高了读写性能。

 

授权方式

关系型数据库通常有SQL Server,Mysql,Oracle。大多数的关系型数据库都是付费的并且价格昂贵,成本较大。

主流的Nosql数据库有redis,memcache,MongoDb。

而Nosql数据库通常都是开源的。

关系型数据库与非关系型数据库优缺点对比

数据库
类型
特性 优点 缺点
关系型数据库
SQLite、Oracle、mysql
1、关系型数据库,是指采用了关系模型来组织
数据的数据库;
2、关系型数据库的最大特点就是事务的一致性;
3、简单来说,关系模型指的就是二维表格模型,
而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。
1、容易理解:二维表结构是非常贴近逻辑世界一个概念,关系模型相对网状、层次等其他模型来说更容易理解;
2、使用方便:通用的SQL语言使得操作关系型数据库非常方便;
3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)大大减低了数据冗余和数据不一致的概率;
4、支持SQL,可用于复杂的查询。
1、为了维护一致性所付出的巨大代价就是其读写性能比较差;
2、固定的表结构;
3、高并发读写需求;
4、海量数据的高效率读写;
非关系型数据库
MongoDb、redis、HBase
1、使用键值对存储数据;
2、分布式;
3、一般不支持ACID特性;
4、非关系型数据库严格上不是一种数据库,应该是一种数据结构化存储方法的集合。
1、无需经过sql层的解析,读写性能很高;
2、基于键值对,数据没有耦合性,容易扩展;
3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,而关系型数据库则只支持基础类型。
1、不提供sql支持,学习和使用成本较高;
2、无事务处理,附加功能bi和报表等支持也不好;

 

关于Nosql

1.Nosql

非关系型数据库,Not only sql。

2.Nosql特点:

(1)易扩展,数据之间没有关系的。

(2)大数据量,高性能。高性能读写非常灵活的。

(3)灵活的数据模型。不需要事先对存储数据建立字段。

(4)高可用。

简单概括:用于高并发读写、海量数据的高效率存储和访问、高可扩展性和高可用性。

3.Nosql主要主流产品

Redis(广泛应用),CouchDB,mongoDB,Cassandra等。Nosql中比较火的三个数据库Redis、Memchache、MongoDb。

4.Nosql数据库四大分类:

(1)键值对存储(key-value):Redis键值对存储,优势:快速查询,缺点:存储数据缺少结构化。

(2)列存储:Hbase,优势:快速查询,扩展性强。缺点:功能相对于局限。

(3)文档数据库存储:MongoDB,早起应用多。优势:要求不特别的严格。缺点:查询性不高,缺少统一查询语法。

(4)图形数据库存储:应用于社交网络,优势:利用图结构相关算法。缺点:需要整个图计算才得出结果,不容易做分布式集群方案。


版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_43652509/article/details/83988709

智能推荐

-webkit-animation动画,CSS动画的使用-程序员宅基地

文章浏览阅读8.5k次,点赞2次,收藏12次。web加载动画,CSS动画今天由于工作需要,在Git上面拿到一个微信小程序,导入后随便点点,他的loading动画吸引到我了。根据源码,搭配blog,w3c,一点一点学习怎么设计的这个loading。1.效果图四周小方块不停的移动到中间方块,中间方块缩放。2.wxml剖析#(1)源码布局<!--正在加载--><template name="loading">..._-webkit-animation

开源uip1.0中psock模块的BUG_uip使用socket-程序员宅基地

文章浏览阅读2.8k次。用过psock模块的都知道PSOCK_SEND()的功能是向指定的socket输出指定的字节数据,然而,代码中的疏漏使得它无法实现发送大于uip_mss()个字节数.这是因为:PT_WAIT_UNTIL(&s->psockpt, data_acked(s) & send_data_uip使用socket

优动漫PAINT的变形文字工具教程_优动漫 文字按曲线排列-程序员宅基地

文章浏览阅读1.7k次。在我们绘制漫画作品的时候,经常需要添加特殊排列的文字作为对白、拟声词或者是贴合背景物品的素材而使用。但是通过【栅格化—滤镜—扭曲】产生的变化效果往往没有那么完美,后续也无法再次修改。今天就给大家讲讲,优动漫PAINT里怎么创建可以修改的变形文字吧。1、首先将文字图层的【颜色模式】转换为【灰度】,并右键图层【栅格化】。2、在界面最上方的【编辑—添加素材—图像】将文字设置为【笔..._优动漫 文字按曲线排列

网络攻防-Shellcode编写-程序员宅基地

文章浏览阅读818次,点赞21次,收藏18次。在第二种方法中,数据存储在代码区域中,就在调用指令之后,因此在调用调用函数时,其地址被推入堆栈(作为返回地址)。1.因为不能出现重复的/,并且最后的/sh只有三位,所以使用#填充最后一位,将”/sh#”赋值给eax(小端存储),再通过将eax先左移8位,再右移8位,由此避免机器码中直接出现0x00;在原本的命令行中执行和在我们生成的命令行中执行可以发现两个编号并不相同,可以说明我们已经成功建立了一个新的shell。并且在one中的pop出的ebx指的是输入的字符串的地址。结果如下,机器码中并未出现00。

简单了解下什么是中台?-程序员宅基地

文章浏览阅读1w次,点赞2次,收藏34次。中台是将系统的通用化能力进行打包整合,通过接口的形式赋能到外部系统,从而达到快速支持业务发展的目的。比如:业务中台,更多的是对业务的支持,比如客户信息,组织信息、产品信息等,这些都来自某一个系统,且分别支持多个系统的业务。提供给业务中台使用。从技术角度,中台是为了搭建一个灵活快速应对变化的架构,可以快速实现前端提的需求,避免重复建设,这也是符合敏捷开发理念。业务中台,多半是传统的成本中心,把后台的资源整合成前台打仗需要的“中间件”,方便被随需调用。典型的业务中台如阿里的数据中台、字节跳动的直播中台、腾_中台

【GDOI2013模拟1】最短路_3155. 【gdoi2013模拟1】最短路-程序员宅基地

文章浏览阅读158次。这题就是个暴力spfa。。。我们就从节点1开始更新,每次更新一圈。我们可以发现,每个完全子图暴力扫过以后就不需要再扫了(因为不会再优),所以就可以过了(判一判是否扫过就可以了)。这题有个重构图的解法。就是对于每个完全子图构建成一个菊花图,而边权便是1/2,然后跑一遍spfa就可以了。#include&lt;cstdio&gt;#include&lt;cstring&gt;#defin..._3155. 【gdoi2013模拟1】最短路

随便推点

基于python实现TF-IDF算法_python tfidf-程序员宅基地

文章浏览阅读9.9k次,点赞5次,收藏108次。标签:2021.09.27工作内容参考资料:TF-IDF算法介绍及实现声明:本文中大量内容转载至参考资料,仅归纳整理和加入部分个人观点心得,侵删概念定义TF-IDF(term frequency-inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术,常用于挖掘文章中的关键词。特点:简单高效,用于最开始的文本数据清洗。TF-IDF(1)TF:词频可以统计到停用词,并把它们过滤,避免对结果造成影响。e.g.:“的”、“了”、“是”等等(2)ID_python tfidf

allowedOriginPatterns和allowedOrigins方法有什么不同-程序员宅基地

文章浏览阅读5.7k次,点赞4次,收藏9次。这段代码表示,允许来自以 http://localhost: 开头的任意端口和以 https:// 开头的以 .example.com 结尾的任意二级域名的跨域请求访问任何请求路径,允许的 HTTP 方法包括 GET 和 POST,启用允许发送凭据,预检请求的缓存时间为 1 小时。allowedOrigins 方法使用的是字符串匹配,即只能指定具体的跨域来源,而不能使用通配符;而 allowedOriginPatterns 方法使用的是 Ant 风格的路径匹配规则,可以使用通配符来匹配多个来源。_allowedorigins

Fork/Join-程序员宅基地

文章浏览阅读209次。1. 什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架,是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行的执行,Join就是合并这些子任务的执行结果,最后得到这个大任务的结果。比如计算1+2+。..._joinyj

hdu 2013 整理下水题 递推动规_输入数据有多组,每组占一行,包含一个正整数n(1<n<30),表示只剩下一个桃子的时候是-程序员宅基地

文章浏览阅读301次。Problem Description喜欢西游记的同学肯定都知道悟空偷吃蟠桃的故事,你们一定都觉得这猴子太闹腾了,其实你们是有所不知:悟空是在研究一个数学问题!什么问题?他研究的问题是蟠桃一共有多少个!不过,到最后,他还是没能解决这个难题,呵呵^-^当时的情况是这样的:第一天悟空吃掉桃子总数一半多一个,第二天又将剩下的桃子吃掉一半多一个,以后每天吃掉前一天剩下的一半多一个,_输入数据有多组,每组占一行,包含一个正整数n(1<30),表示只剩下一个桃子的时候是

Hive调优一文打尽-程序员宅基地

文章浏览阅读154次。Hive调优一文打尽

Ubuntu 16.04 安装 WPS 以及解决字体缺失问题_ubuntu apt mt extra-程序员宅基地

文章浏览阅读1.1k次,点赞2次,收藏4次。安装:1. 首先我们去官网下载 linux 版本的 wps http://www.wps.cn/product/wpslinux/(或百度网盘:https://pan.baidu.com/s/1TSvkOtEtf0MuyobrNkibhg)2. 在终端安装,使用命令 sudo dpkg -i xxxxx.deb3. 如果报依赖错误,使用 sudo apt-get install -f 命令进行修复当我们打开 wps 时,如果报如下错误:说明系统缺少字体,我们可以在官网 http:_ubuntu apt mt extra

推荐文章

热门文章

相关标签