Redis,Mongodb, Mysql 的区别和优缺点

MySQL特点:

1.功能强大:MySQL中提供了多种数据库存储引擎,各个引擎各有所长,适用于不同的应用场合。用户可以选择最合适的引擎以得到最高性能,这些引擎升值可以应用处理每天访问量数亿的高强度Web搜索站点。MySQL支持事务、视图、存储过程和触发器等。
2.支持跨平台:MySQL支持至少20种以上的开发平台,包括Linux、Windows、FreeBSD、IBMAIX、AIX和FreeBSD等。这使得在任何平台下编写的程序都可以进行移植,而不需要对程序做任何修改。
3.运行速度快:高速是MySQL的显著特性。在MySQL中,使用了极快的B书磁盘表(MyISAM)和索引压缩;通过使用优化的单扫描多连接,能够极快的实现连接;SQL函数使用高度优化的类库实现,运行速度极快。
4.支持面向对象:PHP支持混合编程方式。编程方式可分为纯粹面向对象、纯粹面向过程、面向对象与面向过程混合3种方式。
5.安全性高;灵活安全的权限和密码系统允许主机的基本验证。连接到服务器时,所有的密码传输均采用加密形式,从而保证了密码的安全。
6.成本低:MySQL数据库是一种完全免费的产品,用户可以直接从网上下载。
7.支持各种开发语言:MySQL为各种流行的程序设计语言提供支持,为他们提供了很多的API函数。
8.数据库存储容量大:MySQL数据库的最大有效容量通常是有操作系统对文件大小的限制决定的,而不是有MySQL内部限制决定的。InnDB存储引擎讲InnDB表保存在一个表空间内,该表空间可由数个文件创建,表空间的最大容量为64TB,可以轻松处理拥有上万条记录的大型数据库。
9.支持强大的内置函数:PHP中提供了大量内置函数,几乎涵盖了Web应用开发中的所有功能。它内置了数据连接、文件上传等功能,MySQL支持大量的扩展库,如MySQLi等,为快速开发Web应用提供方便。

Redis特点:
1. 速度快: Redis是用C语言实现的,所有数据存储在内存中以键值对形式保存。
2. 持久化: Redis的所有数据存储在内存中,对数据的更新将异步地保存到磁盘上,持久化是使用 RDB 方式或者AOF方式
3. 支持多种数据结构: Redis支持五种数据结构:String、List、Set、Hash、Zset
4. 支持多种编程语言:Java、php、Python、Ruby、Lua、Node.js
5. 功能丰富:除了支持五种数据结构之外,还支持事务、流水线、发布/订阅、消息队列等功能。
6. 源码简单,约23000行C语言源代码。
7. 主从复制
        主服务器上只进行写的操作,在从的服务器上进行读的操作
        主服务器(master)执行添加、修改、删除,从服务器执行查询。
8. (服务架构)支持高可用和分布式
        高可用:使用redis自带的哨兵机制来实现高可用

Mongodb特点:

1.实用性:

        一个面向文档的数据库,它并不是关系型数据库,直接存取BSON,这意味着MongoDB更加灵活,因为可以在文档中直接插入数组之类的复杂数据类型,并且文档的key和value不是固定的数据类型和大小,所以开发者在使用MongoDB时无须预定义关系型数据库中的”表”等数据库对象,设计数据库将变得非常方便,可以大大地提升开发进度。

2.可用性和负载均衡:

        MongoDB在高可用性和负载均衡上的实现非常简洁和友好,MongoDB自带了副本集的概念,通过设计适合自己业务的副本集和驱动程序,可以非常有效和方便地实现高可用,读负载均衡。而在其他数据库产品中想实现以上功能,往往需要额外安装复杂的中间件,大大提升了系统复杂度,故障排查难度和运维成本。

3.扩展性:

        在扩展性方面,假设应用数据增长非常迅猛的话,通过不断地添加磁盘容量和内存容量往往是不现实的,而手工的分库分表又会带来非常繁重的工作量和技术复杂度。在扩展性上,MongoDB有非常有效的,现成的解决方案。通过自带的Mongos集群,只需要在适当的时候继续添加Mongo分片,就可以实现程序段自动水平扩展和路由,一方面缓解单个节点的读写压力,另外一方面可有效地均衡磁盘容量的使用情况。整个mongos集群对应用层完全透明,并可完美地做到各个Mongos集群组件的高可用性。

4.数据压缩:

        自从MongoDB 3.0推出以后,MongoDB引入了一个高性能的存储引擎WiredTiger,并且它在数据压缩性能上得到了极大的提升,跟之前的MMAP引擎相比,压缩比至少可增加5倍以上,可以极大地改善磁盘空间使用率。

5.无事物机制: MongoDB不支持事务操作(最主要的缺点)

6.MongoDB占用空间过大

Mysql优点:

        支持多种操作系统;
        体积小、速度快、总体拥有成本低,开源;
        是开源数据库,提供的接口支持多种语言连接操作
        mysql的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和C语言实现的MySql能很容易充分利用CPU;
        MySql有一个非常灵活而且安全的权限和口令系统。当客户与MySql服务器连接时,他们之间所有的口令传送被加密,而且MySql支持主机认证;
        支持ODBC for Windows, 支持所有的ODBC 2.5函数和其他许多函数, 可以用Access连接MySql服务器, 使得应用被扩展;
        支持大型的数据库, 可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库,可以针对不同的应用进行相应的修改。
        拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性; 
        MySQL同时提供高度多样性,能够提供很多不同的使用者介面,包括命令行客户端操作,网页浏览器,以及各式各样的程序语言介面,例如C+,Perl,Java,PHP,以及Python。你可以使用事先包装好的客户端,或者干脆自己写一个合适的应用程序。MySQL可用于Unix,Windows,以及OS/2等平台,因此它可以用在个人电脑或者是服务器上;

Mysql缺点:
        不支持热备份;
         MySQL最大的缺点是其安全系统,主要是复杂而非标准,另外只有到调用mysqladmin来重读用户权限时才发生改变;
没有一种存储过程(Stored Procedure)语言,这是对习惯于企业级数据库的程序员的最大限制;
         MySQL的价格随平台和安装方式变化。Linux的MySQL如果由用户自己或系统管理员而不是第三方安装则是免费的,第三方案则必须付许可费。Unix或linux 自行安装 免费 、Unix或Linux 第三方安装 收费;

Redis 的优点:

        读写性能优异
        支持数据持久化, 支持 AOF 和 RDB 两种持久化方式
        支持主从复制, 主机会自动将数据同步到从机, 可以进行读写分离.
        数据结构丰富 : 除了支持 string 类型的value 外还支持string, hash, set, stortset, list 等数据结构.

Redis 的缺点:

        Redis 不具备自动容错和恢复功能, 主机从机的宕机都会导致前端部分读写请求失败, 需要等待机器重启或者手动切换前端的 IP 才能恢复.
        主机宕机,宕机前有部分数据未能及时同步到从机,切换IP后还会引入数据不一致的问题,降低了系统的可用性
        Redis的主从复制采用全量复制,复制过程中主机会fork出一个子进程对内存做一份快照,并将子进程的内存快照保存为文件发送给从机,这一过程需要确保主机有足够多的空余内存。若快照文件较大,对集群的服务能力会产生较大的影响,而且复制过程是在从机新加入集群或者从机和主机网络断开重连时都会进行,也就是网络波动都会造成主机和从机间的一次全量的数据复制,这对实际的系统运营造成了不小的麻烦。
        Redis较难支持在线扩容,在集群容量达到上限时在线扩容会变得很复杂。为避免这一问题,运维人员在系统上线时必须确保有足够的空间,这对资源造成了很大的浪费。

MongoDB优点:
        弱一致性(最终一致),更能保证用户的访问速度文档结构的存储方式,能够更便捷的获取数内置 Gridfs,高效存储二进制大对象(比如照片和视频)
        支持复制集、主备、互为主备、自动分片等特性
        动态查询
        全索引支持扩展到内部对象和内嵌数组\

MongoDB缺点:
        不支持事务
        MongoDB 占用空间过大
        维护工具不够成熟

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值