浅谈MySQL与mongodb的区别
2024-09-01 15:28:11
讨论MySQL与mongodb使用上的区别以及可能适用的应用场景,不深入到数据库的实现细节方面。鉴于个人水平有限,文章可能存在错误之处,希望各位指正。
代码编写
- mongodb支持reactor,可以异步操作,支持spring5的webflux开发;mysql暂时不支持异步
- mongodb对集合collection内的文档格式无要求,这是一个好处,可以修改文档的字段而不影响原有的旧数据,但也意味着同一collection内可以存在格式不一样的数据,而且修改文档数据结构并不需要执行数据库的语句,程序在读取文档内的数据时,可能会出现部分不存在默认值的字段为null,在编码时要小心出现NPE的情况,而且改了原有字段类型还会导致旧数据反序列化失败;mysql每一张表的数据结构是固定的,可以通过在修改表的时候为新字段加上默认值避免这个问题
- mongodb支持地理信息的存储、索引,对于一些需要按地理信息找附近地点的场景很方便
- mongodb没有联表查询,如果按mysql表的设计根据ID关联表数据的话,需要多次查询来组合数据。或者将一些不需要跟随其他地方变更的数据直接内嵌进来,如订单里的某商品信息在商品库修改后,订单里的商品信息不需要跟随变更;mysql可以联表查询
- 很多地方都说mongodb无事务机制,最近官方更新了对事务的支持 ,mongodb4.2以上版本已支持事务,官方文档
高可用及水平扩展
- mongodb官方支持分片以及副本集,mysql的分库分表需要借助其他工具
性能
mongodb适用场景
对数据库具体数据格式不明确或者数据库数据格式经常变化的需求模型,有地理查询或全文查询的需求,不需要事务及复杂 join 支持,如事件、日志记录,内容管理或者博客平台
最新文章
- tornado 异步调用系统命令和非阻塞线程池
- Java基础加强之集合篇(模块记忆、精要分析)
- TeamCity : 安装 Server
- Win8/8.1 .NET3.5安装失败
- Object C语法学习笔记(一)
- 用javascript 面向对象制作坦克大战(二)
- PH获取当前url路径及服务器路径汇总 (url 获取当前路径 服务器路径)
- 【转载】CentOS LVM磁盘扩容
- box flex 弹性盒模型(转载)
- 【转】android cts测试方法及步骤
- DevExpress Report 其他常用设计技巧
- SQL Server 数据库定时自动备份
- Java中对图片文件的类型的获取
- zookeeper应用与原理学习总结
- Oracle学习DayFive(PL/SQL)
- python3爬虫一
- Android批量图片加载经典系列——使用xutil框架缓存、异步加载网络图片
- Windows server 2008 R2 安装指引
- velocity.properties配置说明
- Sublime Text 2搭建Go开发环境(Windows)