常见的关系型数据库与非关系型数据库对比详解。
1、 数据库分为关系型数据库和非关系型数据库。
关系型数据库(一表或多表):
- Oracle:是一个开放式商品化关系型数据库管理系统
- DB2:应用于大型应用系统,具有较好的可伸缩性,可支持从大型机到单用户环境,应用于所有常见的服务器操作系统平台下
- Microsoft SQL Server:全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。
- MySQL:是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。(常用)
非关系型数据库(key->value):
- MongoDB:是一个面向文档的开源NoSQL数据库。(常用)
- Redis:是最著名的键值存储。Redis是用C语言编写的。它是根据BSD授权的。(常用)
- Memcached:是一个开源、高性能、分布式内存缓存系统,旨在通过减少数据库负载来加速动态web应用程序。(常用)
- Cassandra:Cassandra是一个用于处理大量结构化数据的分布式数据存储系统。
- HBase:是谷歌为BigTable数据库设计的分布式非关系数据库。
- Neo4j:称为原生图数据库,因为它有效地实现了属性图模型,一直到存储层。
- Oracle NoSQL:实现了从用户定义的键到不透明数据项的映射。
- Amazon DynamoDB:使用了一个NoSQL数据库模型,它是非关系型的,允许文档、图形和列在它的数据模型之间。
- Couchbase:是一个用于交互式web应用程序的NoSQL文档数据库。它具有灵活的数据模型,易于扩展,提供一致的高性能。
- CouchDB:是一个开源的NoSQL数据库,使用JSON存储信息,JavaScript作为查询语言。
2、关系型与非关系型数据库对比
关系型数据库
优点
- 复杂查询:可以在一表或者多表之间做非常复杂的数据查询(join链表查询,where)
- 一致性:事务处理数据对数据安全性能很高,冗余低,数据完整性好。
- 容易理解:逻辑类似常见的表格的方式展现出来。
缺点
- 每次操作都要进行SQL语句的解析,消耗较大
- 对于高并发项目无法满足需求,读写能力不足
- 进行加锁操作的时候,造成数据库的负担。
- 存储数据的不灵活。比如多表存储的时候。
非关系型数据库
优点
- 高并发,读写能力强
- 弱化数据数据结构一致性,更加灵活
- 扩展性高
缺点
- 没有SQL语句通用好
- 操作灵活,但容易出现错乱喝混乱
- 没有外键关联等复杂的操作
3、常用的数据库对比(MySQL,MongoDB,Redis,Memcached)
- mysql(关系型数据库) 存久持久化数据,将数据存放在硬盘中,读取速度慢,每次请求访问数据库是都存在I/O操作,反复频繁的访问数据库,反复链接数据库花费大量时间,导致运行效率过慢,负载过高。从而衍生了缓存的概念,当浏览器请求的时候,首先在缓存中查找,如果存在就获取,不存在就访问数据库。
- . mongDB(NoSQL数据库) 是介于关系型与非关系型数据库的之间的的产品,是分布式文件存储的数据库。他支持结构非常松散,可以存储比价复杂的数据类型,其查询的语法有点类似于面向对象的查询语言,还支持数据建立索引。
- Redis(内存数据库) 是以key-value存储方式的存储系统(分布式内缓存)。支持存储value类型更多包含string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。redis为了保证效率,数据缓存在内存中。redis周期性将更新的输入写入磁盘或者把修改操作写入追加的记录文件,并在基础上实现master-slave(主从同步)
- Memcached(内存cache)是一个到性能的分布式对象缓存系统,动态web应用可以减轻数据库的负载。为了加速访问速度,在内存中建立内存缓存数据,减少读写磁盘的次数和保证数据的更新。
4、MySQL,MongoDB,Redis,Memcached的特点
MySQL
1、支持多线程,充分利用CPU的资源,优化SQL语句有效提成查询效率
2、提供做种链接数据库方式,便于管理检查。
3、大型数据库,尅处理拥有上万条的大型数据
4、支持多中方式存储引擎
5、事务处理数据,保证数据的一致和安全性MongoDB
1、可以把不同的结构文档存储在同一数据库里
2、面向集合的存储,Json格式
3.、支持索引
4、支持主从模式,服务器之间数据复制,支持master-slave,replicaset(内部采用paxos选举算法,自动故障恢复),auto sharding机制,对客户端屏蔽了故障转移和切分机制;
5、支持水平数据库集群
6、不支持事务,,采用binlog方式保证数据的持久的可靠性。Redis
1、支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。进行aof及rdb数据持久化到磁盘,从而进行数据备份或数据恢复等操作,较好的防止数据丢失的手段;
2、单线程请求,所有命令串行执行,并发情况下不需要考虑数据一致性问题;
3、通过Replication进行数据复制,通过master-slave机制,可以实时进行数据的同步复制,支持多级复制和增量复制, master-slave机制是Redis进行HA的重要手段;
4、Redis事务支持比较弱,只能保证事务中的每个操作连续执行。Memcached
1、可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS。
2、支持配置session
3、只支持简单的key/value数据结构,不像Redis可以支持丰富的数据类型;
4、无法支持数据持久化,数据不能备份,只用于缓存,服务重启,数据会全部丢失。
5、MySQL,MongoDB,Redis,Memcached的应用场景
MySQL:高度事务性的系统。例如银行或者会计系统。web网站系统,日志记录系统,数据仓库系统。
MongoDB:
- 游戏场景,使用 MongoDB 存储游戏用户信息,用户的装备、积分等直接以内嵌文档的形式存储,方便查询、更新
- 物流场景,使用 MongoDB存储订单信息,订单状态在运送过程中会不断更新,以 MongoDB内嵌数组的形式来存储,一次查询就能将订单所有的变更读取出来。
- 社交场景,使用 MongoDB存储存储用户信息,以及用户发表的朋友圈信息,通过地理位置索引实现附近的人、地点等功能
- 物联网场景,使用 MongoDB存储所有接入的智能设备信息,以及设备汇报的日志信息,并对这些信息进行多维度的分析
- 视频直播,使用 MongoDB 存储用户信息、礼物信息等
Redis
- 用来做缓存-redis的所有数据时放在内存中的
- 可以在某些特定应用场景下替代传统数据库–比如社交类的应用
- 在一些大型系统中,巧妙的实现一些特定的功能:session共享、购物车
- .适用于对读写效率要求都很高,数据处理业务复杂和对安全性要求较高的系统(如新浪微博的计数和微博发布部分系统,对数据安全性、读写要求都很高)。
Memcached
- 动态系统中减轻数据库负载,提升性能;做缓存,适合多读少写,大数据量的情况(如人人网大量查询用户信息、好友信息、文章信息等);
- 用于在动态系统中减少数据库负载,提升性能;做缓存,提高性能(适合读多写少,对于数据量比较大,可以采用sharding)。
5、MySQL,MongoDB,Redis,Memcached实战案例
Mysql网上百度一下一下就有很多。
MongoDB
//记得先配置链接数据库Db::connect('mongodb')->table('user_info')->where(['uid'=>['=',1]])->update();//参考:https://www.cnblogs.com/codeninja/p/14817064.html
Redis
//记得先配置链接数据库
$redis = new Redis();$redis->handler()->append('demo',' bbbj47848487bbbb');//参考:https://blog.csdn.net/qq_27517377/article/details/85693281
Memcached
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test'); //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key'); //从内存中取出key的值
echo $get_value;
常见的关系型数据库与非关系型数据库对比详解。相关推荐
- 常见的关系型数据库和非关系型都有哪些?
常见的关系型数据库和非关系型都有哪些? 关系型数据库: 关系模型就是指二维表格模型,因而一个关系型数据库就是由二维表及其之间的联系组成的一个数据组织. 常见的有:Oracle.DB2.PostgreS ...
- 1、数据库是什么?关系型数据库和非关系型数据库又是什么?
在学习数据库之前,应该先理解什么是数据.本节先介绍数据以及数据库的概念,再对关系型数据库和非关系型数据库的优缺点进行分析. 描述事物的符号称为数据.数据有多种表现形式,可以是数字,也可以是文字.图形. ...
- 关系型数据库与非关系型数据库的简介、对比和说明!!!
关系型数据库: Oracle SQLServer Sybase Informix Access DB2 mysql vfp Ingers FoxPro 非关系型数据库: MongoDB Cassand ...
- 关系型数据库和非关系型数据库简单介绍:
常见的数据库模型分为两种,分别是关系型数据库和关系型数据库. 关系型数据库 关系数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据.简单说,关系型数据库是由多张 ...
- 关系型数据库和非关系型的区别
关系型数据库: 关系型数据库是指采用关系模型来组织数据信息的数据库. 其实就是二维表,它是多个二维数组的集合,我们将数据存储在表格中,通过建立表格与表格之间的关系来维护数据间的关系. 优点: 1.容易 ...
- 关系型数据库与非关系型数据库详解
关系数据库与非关系型数据库 一.数据库概述 1.关系型数据库 2.非关系型数据库 二.数据库区别 1.数据存储方式不同 2.扩展方式不同 3.对事务性的支持不同 三.非关系型数据库产生背景 四.Red ...
- 关系型数据库和非关系型区别
一.关系型数据库和非关系型 1.数据存储方式不同. 关系型数据天然就是表格式的,因此存储在数据表的行和列中,结构化存储. 非关系型数据通常存储在数据集中,就像文档.键值对.列存储.图结构. 2.扩展方 ...
- 关系型数据库与非关系型数据库
开发工作中我们常用的数据库大致分为关系型数据库和非关系型数据库两种,那这两种到底是什么呢? 1.关系型数据库 所谓关系型数据库,是建立在关系模型基础上的数据库. 关系模型由关系数据结构.关系操作集合. ...
- 关系型数据库和非关系型数据库的区别以及应用的场景
关系型数据库: 关系型数据库,是指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库.用户通过查询来检索数据库中的数据 ...
最新文章
- Web前端:11个让你代码整洁的原则
- 数据结构-图及其遍历
- pythonsqlalchemy怎么看到返回的具体内容_sqlalchemy返回值总结
- javamail发送邮件(转)
- 带你深挖Java泛型类型擦除以及类型擦除带来的问题
- 孙玄:分布式系统选主怎么玩
- 前阿里GOC负责人葛梅:运维转型运营,IT服务管理体系搭建实践
- maven配置smartupload_SmartUpload文件上传组件的使用教程
- 安卓Android Studio开发环境,无需连接外网
- 关于springcloud中eureka报错com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException:
- C# Winform如何打开PDF文件
- 服务器被黑客攻击快速解决方案
- keras 中的 verbose 参数详解
- 2023年国家留学基金委(CSC)有关国别申请、派出注意事项
- 速记混淆矩阵中的FP、FN、FP、TN
- 移动端开发——flex布局
- 滇池学院计算机基础,云南大学滇池学院网络服务系统 云南大学滇池学院
- matlab 画海面图,教你画波光粼粼的海面
- HotFix移动热修复详解
- ker矩阵是什么意思_矩阵分析(二):从特征值到奇异值
热门文章
- mysql数据备份及完全卸载
- 文献阅读:Scaling Instruction-Finetuned Language Models
- BGP------BGP工作原理、BGP属性及选路原则
- 使用python语言,编写一段代码,通过gadl读取tif影像数据并将wgs84坐标进行UTM投影...
- 华为云服务治理 | 隔离仓的作用
- Thread.interrupted()与Thread.isInterrupted()的区别
- 输入整数n,其中0<n<7,输出用n、n+1、n+2、n+3这4个数字组成的无重复数字的3位数
- python中的函数及面向对象的知识点
- C#调用科大讯飞在线语音合成(Windows)
- 用html编写诗句春晓,春晓-古诗