{eval=Array;=+count(Array);}
mysql、redis、MongoDB基本上在对应的业务场景中都会用到。习惯上,所有的业务数据都是需要“落库”的,这种“落库”指关系型数据库的数据写入,可以很直观的在关系型数据库的客户端进行查询,可以持久化到磁盘空间,因 mysql 开源稳定,满足业务需求,其成为互联网公司的最优选择。而 redis 经常在高并发的请求加速、优化用户体验中用到,普遍的做法是将数据库中的数据请求一次,放入缓存中,同时返回给用户,而修改数据库时对缓存数据进行清理,保障数据一致性。而对于mongoDB,我在业务中使用不多,但其可以高效存储二进制大对象 (比如照片、视频、消息等),在业界得到了充分的认可。下面简述一下其各自的优缺点,仅供参考。
mysql,优点:体积小、速度快、总体拥有成本低,开源,提供的接口支持多种语言连接操作;支持多种操作系统;采用完全的多线程编程,线程轻量;鉴权体系完善。缺点:不支持热备份,但可通过binlog日志进行同步;不支持自定义数据类型;对 xml 支持不够良好,但此基本上可以忽略,目前很少见到 xml 的使用。
redis,优点:读写性能优异,选择的最大理由;支持数据持久化,支持 AOF 和 RDB 两种持久化方式;支持主从复制,可以进行读写分离;数据结构丰富;缺点:不具备自动容错和恢复功能,主机从机宕机导致客户端请求失败;主机宕机,宕机前有部分数据未能及时同步到从机,切换 IP 后还会引入数据不一致的问题,降低了系统的可用性;Redis 的主从复制采用全量复制,网络波动时可能进行全量的数据复制,对集群造成压力;Redis 较难支持在线扩容,在集群容量达到上限时在线扩容比较复杂。
MongoDB,优点:弱一致性(最终一致),更能保证用户的访问速度;文档结构的存储方式,能够更便捷的获取数;高效存储二进制大对象 (比如照片、视频、消息等);与其他的NoSQL相比第三方支持丰富;缺点:不支持事务操作;占用空间过大;成熟的维护工具较为欠缺。
个人感觉,redis 适用于数据变化快且数据库大小可预见(适合内存容量)的业务场景,其适合做关系型数据库的中间层。MongoDB 可以作为大数据对象 (比如照片、视频、消息等)的数据缓存层组合出一个必要的数据实体(灵活的 json 结构可以组合出复杂数据类型,又可以复制多台服务器),读取速度也快,高并发构建主从服务器无压力。
作者:夕阳雨晴,欢迎关注我的头条号:偶尔美文,主流Java,为你讲述不一样的码农生活。
目前看来,关系型的数据库和非关系型的数据库是互补的,并不是互相取代的,因为这两者的适用场景不同。
关系型数据库适应场景是:业务复杂并且需要很多的关联,对读操作没有太大要求,但是需要对事务的支持。
非关系型数据库适用场景是:业务相对简单,对读操作要求很高,而且数据吞吐量大,还能支持快速扩容等场景。
因此,这两种数据库在未来都会一直存在,在各自的场景发挥自己的作用,每一种新技术的诞生都是为解决现有的一些痛处的,技术选型没有最好的,只有最适合的技术。
场景不一样,redis虽然也算一种数据库,但是一般更多的用于加速访问数据库数据
mongodb是非关系型数据库更多的用于快速存储数据
1、数据结构模型是需要关系连接的(nosql Redis存储是没有问题的)nosqlRedis读取不方便 几乎做不到
2、快是因为在内存中存储也就是说没有持久化 nosql Redis持久化 预估性能差不多少
3、逻辑及实现复杂程度远高于关系型数据库
我们就是用MongoDB替代sql,很好用。新版本也支持事务了,微服务的大杀器。当然了,内存价格确实昂贵,所以等数据量上去后,会考虑使用TiDB。
0
回答0
回答0
回答0
回答0
回答2
回答0
回答0
回答0
回答0
回答