Comments

MongoDB 是NoSQL 数据库,适合存JSON格式数据,MySQL是关系型数据库,适合存table格式数据

MongoDB扩展性更好,MySQL支持主从和cluster但是感觉不咋样

mongodb 没有事务、联表(join)查询的支持,其实有inlook 简单的联表查询支持的

mongodb 插入更新大量数据比较快,mysql 查询大量相关数据比较快

MongoDB有很好的HA和恢复支持

some important quotes:

  • MongoDB is an ideal choice if you have unstructured and/or structured data with the potential for rapid growth while MYSQL is a great choice if you have structured data and need a traditional relational database.
  • In general, a project with frequently updated data will benefit more from a relational database than a nonrelational one. An example of such a project would be any kind of transactional system, like an ecommerce platform, a workflow application, or a payment processor.

    On the other hand, a project that rarely updates information, such as an analytics application where data doesn't change after it has been collected, will benefit more from a nonrelational database.

可以考慮使用 NoSQL (譬如 MongoDB),如果

  1. 想快速啟動小專案測試 idea
  2. 資料格式不確定 (unstable schema),而未來很有可能調整
  3. 資料之間沒有複雜的關聯、或未來讀取資料時不需要使用 JOIN 的功能
  4. 著重在快速讀取資料與可用性,而非 ACID

可以考慮使用 RDBMS  (譬如 MySQL),如果

  1. 已經有明確的資料格式,未來不會大幅的變動
  2. 資料之間的關聯很重要
  3. 想要更有效率的讀取資料,未來會大量使用到 JOIN 的功能
  4. 更著重在資料操作的準確性與一致性 (ACID)

上述的情境主要是在個人專案上,如果實際在業界開發,還需要考量到

  1. 商業邏輯的設計
  2. 目前使用的系統(如何加入,需不需要做調整或轉移)
  3. 部署方式
  4. 成本計算
  5. 維護與營運考量
  6. 未來的擴充性
MongoDB MYSQL
MongoDB represents data
as JSON documents.
MySQL represents data
in tables and rows.
In MongoDB, you don’t need to define the schema. Instead, you just drop in documents don’t even need to have the same fields. MySQL requires you to define your tables and columns before you can store anything, and every row in a table must have the same columns.
MongoDB has a pre-defined structure that can be defined and adhered to, but also, if you need different documents in a collection, it can have different structures. MySQL uses Structured Query Language (SQL) for database access. You can’t change the schema.
Supported languages are C++, C Supported languages are C++, C and JavaScript
Ongoing development is done by MongoDB, Inc. Constant development is done by the Oracle Corporation.
MongoDB supports built-in replication, sharding, and auto-elections. MySQL supports master-slave replication and master replication.
If an index is not found, every document within a collection must be scanned to select the documents which offer a match to the query statement. If an index is not defined, then the database engine needs to scan the complete table to find all relevant rows.
GPL v2/ Commercial license available OD GNU AGPL v3.0/ Commercial licenses available OD
If most of your services are cloud based MongoDB is the best suited for you. If data security is your priority then MYSQL is the best option for you.
MongoDB places no restrictions on schema design. MySQL requires you to define your tables and columns before you can store anything. Every row in a table must have the same columns.
MongoDB uses JavaScript as query language. MySQL uses the Structured Query Language (SQL).
MongoDB doesn’t support JOIN. MySQL supports JOIN operations.
It has the ability to handle large unstructured data MySQL is quite slow in comparison to MongoDB while dealing with large databases.
Real-time analytics, content management, internet of things, mobile apps Structured data with clear schema
No schema definition required so lesser risk of attack due to design Risk of SQL injection attacks
An ideal choice if you have unstructured and/or structured data with the potential for rapid growth. A great choice if you have structured data and need a traditional relational database.

Ref:

https://www.bmc.com/blogs/mongodb-vs-mysql/#Disadvantages_of_both

https://blog.panoply.io/mongodb-and-mysql

https://www.guru99.com/mongodb-vs-mysql.html

mysql vs mongodb的更多相关文章

  1. MySQL、MongoDB、Redis数据库Docker镜像制作

    MySQL.MongoDB.Redis数据库Docker镜像制作 在多台主机上进行数据库部署时,如果使用传统的MySQL的交互式的安装方式将会重复很多遍.如果做成镜像,那么我们只需要make once ...

  2. MySQL与MongoDB的操作对比,以及区别

    MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库.它们各有各的优点,关键是看用在什么地方 ...

  3. MySQL vs. MongoDB: Choosing a Data Management Solution

    原文地址:http://www.javacodegeeks.com/2015/07/mysql-vs-mongodb.html 1. Introduction It would be fair to ...

  4. [转]MySQL与MongoDB的操作对比

    MySQL与MongoDB都是开源的常用数据库,但是MySQL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种NoSQL的数据库.它们各有各的优点,关键是看用在什么地方 ...

  5. 转:视觉中国的NoSQL之路:从MySQL到MongoDB

    起因 视觉中国网站(www.chinavisual.com)是国内最大的创意人群的专业网站.2009年以前,同很多公司一样,我们的CMS和社区产品都构建于PHP+Nginx+MySQL之上:MySQL ...

  6. 阿里云下Linux服务器安装Mysql、mongodb

    阿里云下Linux服务器安装Mysql.mongodb 一.MySQL的安装和配置 1.安装rpm包 rpm -Uvh http://dev.mysql.com/get/mysql-community ...

  7. MySQL、MongoDB、Redis 数据库之间的区别

    NoSQL 的全称是 Not Only SQL,也可以理解非关系型的数据库,是一种新型的革命式的数据库设计方式,不过它不是为了取代传统的关系型数据库而被设计的,它们分别代表了不同的数据库设计思路. M ...

  8. MySQL和Mongodb的区别与应用场景对比

    MySQL是关系型数据库 优势: 在不同的引擎上有不同 的存储方式. 查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高. 开源数据库的份额在不断增加,mysql的份额页在持续增长. 缺点 ...

  9. python mysql redis mongodb selneium requests二次封装为什么大都是使用类的原因,一点见解

    1.python mysql  redis mongodb selneium requests举得这5个库里面的主要被用户使用的东西全都是面向对象的,包括requests.get函数是里面每次都是实例 ...

  10. 从MySQL和MongoDB的对比,看SQL与NoSQL的较量

    张家江,网易乐得高级工程师. 贵金属(注:贵金属为笔者部门业务)的行情系统提供的接口通过Redis获取数据,目前使用Redis最多只存储了大概8000条左右的分钟k的行情数据,考虑到将来可能会有更大数 ...

随机推荐

  1. mac idea代码颜色修改、主题

    下载样式包 下载样式 网址一:http://www.riaway.com/ 网址二:http://www.themesmap.com/theme.html?t=down 我使用的这几款 链接: htt ...

  2. OffscreenCanvas-离屏canvas使用说明

    OffscreenCanvas 是一个实验中的新特性,主要用于提升 Canvas 2D/3D 绘图的渲染性能和使用体验.OffscreenCanvas 的 API 很简单,但是要真正掌握好如何使用. ...

  3. django python 循环一个月的每一天

    from datetime import datetime, timedelta def get_dates_in_month(year, month): start_date = datetime( ...

  4. 基于Java+SpringBoot+vue+element助农平台设计和实现

    \n文末获取源码联系 感兴趣的可以先收藏起来,大家在毕设选题,项目以及论文编写等相关问题都可以给我加好友咨询 系统介绍: 随着互联网大趋势的到来,社会的方方面面,各行各业都在考虑利用互联网作为媒介将自 ...

  5. oeasy教您玩转vim - 19 - 使用标记

    使用标记 回忆上节课内容 跳转到行号 200G 设置行号选项 显示行号 :se nu 显示相对行号 :se rnu 如何用命令行跳转 :100 但是我如何有的时候记不住到底跳到多少行 能否做个标记留个 ...

  6. java面试一日一题:java内存模型

    问题:请讲下java内存模型? 分析:该问题比较容易和jvm内存区域(java内存结构)这样的问题混淆,其实他们是两个概念,jvm内存区域指的是运行时的几块数据区域,包括堆.方法区.虚拟机栈.本地方法 ...

  7. pytest-req插件:更简单的做接口测试

    pytest-req插件:更简单的做接口测试 背景 我们经常会用到 pytest 和 requests 进行接口自动化测试. pytest 提供了非常方便的插件开发能力,在pytest中使用reque ...

  8. 记一次NACOS开放公网访问导致服务器被挖矿的解决流程 [kdcflush] acosd

    前言 事情的起因是这样的,昨天领导找到我说服务器内存满了,影响其他程序正常运行了,让我把测试服务器上之前启动的六个JAVA程序停一下,接着我就登上服务器执行docker compose down把服务 ...

  9. 关于SpringCloud Bus RemoteApplicationEvent 使用注意事项

    最近使用SpringCloud Bus 用于服务直接消息通信,遇到一些问题,记录下来给一样碰到问题的你一个解决方案 开发环境 : springboot 2.3.9.RELEASE spring-clo ...

  10. 认识netty的基本组件

    Java NIO VS Netty 有了 Java NIO,而且 Netty 也是基于 Java NIO 实现,那么为什么不能直接用 Java NIO 来实现网络通信模块呢? 接下来我就给大家解释一下 ...