讨论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 支持,如事件、日志记录,内容管理或者博客平台

最新文章

  1. tornado 异步调用系统命令和非阻塞线程池
  2. Java基础加强之集合篇(模块记忆、精要分析)
  3. TeamCity : 安装 Server
  4. Win8/8.1 .NET3.5安装失败
  5. Object C语法学习笔记(一)
  6. 用javascript 面向对象制作坦克大战(二)
  7. PH获取当前url路径及服务器路径汇总 (url 获取当前路径 服务器路径)
  8. 【转载】CentOS LVM磁盘扩容
  9. box flex 弹性盒模型(转载)
  10. 【转】android cts测试方法及步骤
  11. DevExpress Report 其他常用设计技巧
  12. SQL Server 数据库定时自动备份
  13. Java中对图片文件的类型的获取
  14. zookeeper应用与原理学习总结
  15. Oracle学习DayFive(PL/SQL)
  16. python3爬虫一
  17. Android批量图片加载经典系列——使用xutil框架缓存、异步加载网络图片
  18. Windows server 2008 R2 安装指引
  19. velocity.properties配置说明
  20. Sublime Text 2搭建Go开发环境(Windows)

热门文章

  1. C#设计模式学习之装饰者模式
  2. ES6学习笔记之函数(二)
  3. mapboxgl绘制3D线
  4. golang变量与常量
  5. 6、安装kvm虚拟机
  6. POJ 1775 Sum of Factorials 数论,基础题
  7. XML:使用cxf调用WebService接口时报错:编码GBK的不可映射字符(设置UTF-8字符集)
  8. leetcode TOP100 两数相加
  9. CG-CTF WxyVM
  10. Django 接口自动化测试平台