mongodb相较mysql的优劣势_mongodb优缺点分析

主要是对比MySQL来说明

优点

不存在sql注入:MySQL的是sql注入是一个很严重的缺点,虽然可以使用参数绑定和预处理以及特殊字符转义来处理。但是MongoDB根本不存在这个问题。不过xss攻击还是需要防范的。

不需要提前创建表:在MySQL中如果想要写入一条数据的话必须要先创建好一张表然后才能写入数据,比如:要在user表里写入id=1,username=‘aaa’,sex='女',age=‘20’这条数据,那你就必须在MySQL数据库上提前建好一张user表,并且至少必须有id,username,sex,age这几个字段才能写入成功。但是MongoDB可以直接写入数据,不需要提前创建表,例子:db.user.insert({"id":1,"username":"aaa","sex":"女","age":20}) 就好

可以任意添加或减少字段:用上一个例子,在MySQL中假设我要在上一条数据上再加一个身高height字段,那么我就必须再去user表上再去添加一个height字段才能写入height数据。但是在MongoDB中你可以直接写就行,而且假设你的第一条数据是 id,username,sex,age,那么你的第二条数据大可以写成 id,username,age,leight。

字段数据格式自由:在MySQL中,如果id字段是数字的话你写一个字符串进去是会报错的,但是MongoDB不会。

可以处理json结构:在MongoDB可以存储一个json对象,比如 字段a的值为{"a":11,"b":12,"c":"abc","d":[1,2,3]},你可以直接去读取或设置a字段的b值 a.b,读取a字段d数组的第二个值:a.d.1,可以去删除a字段的a数据$unset:{"a.a":1},就会变成:{"b":12,"c":"abc","d":[1,2,3]}

可以使用upsert操作,即修改的数据不存在时直接插入。({where},{$set:{data}},{"upsert":true})

充分利用了计算机内存,所以查询和插入效率要远大于MySQL。我自己测试(400w随机数据)的时候只有在没有索引的情况下MongoDB的查询效率要远大于MySQL,插入效率和MySQL差不多都是8w条左右1分钟。在有索引的时候MySQL的查询要速度要高于MongoDB。

缺点

MongoDB是个nosql数据,所以关系能力薄弱,不能像MySQL一样使用join,union来进行联合查找,只能通过结合一些特殊语法来达到类似的结果。

事务能力薄弱,虽然MongoDB里事务,但是好像只能针对单条语句(查了好多但是有些看不懂),不能像MySQL一样利用事务执行多条语句,可以根据情况来选着全部提交执行或者全部取消回滚。

相比MySQL,MongoDB的效率存在一定的波动性,不是很稳定。

由于数据存储的问确定性2,3,4条,MongoDB的管理相对MySQL会困难一些

MongoDB的管人员(DBA)比较少

总结:

如果会频繁使用事务和关联查询,并且最求服务的稳定性最好还是选用MySQL

如果数据格式不确定,却少数据库管理人员,不怎么使用关联查询和事务,不是特别追求服务的稳定性可以使用MongoDB

不是很重要的数据可以使用MongoDB,比较重要的使用可以用使用MySQL。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MongoDBMySQL是两种常见的数据库管理系统,它们在一些方面有着不同的优缺点MongoDB的优点: 1. 非结构化数据存储:MongoDB是一个文档型数据库,数据以JSON形式存储,非常适合存储非结构化的数据。 2. 扩展性:MongoDB支持水平扩展,可以通过添加更多的服务器来处理更大的数据集和负载。 3. 高性能:MongoDB使用内存映射文件技术和索引来提供高效的读取操作,并支持复杂查询。 4. 灵活性:MongoDB的模式灵活,可以轻松地修改数据结构,而无需进行复杂的迁移操作。 MongoDB的缺点: 1. 不支持事务:MongoDB在某些情况下不支持事务,这对于需要强一致性的应用可能是一个限制。 2. 内存消耗较高:由于MongoDB使用内存映射文件技术,它的内存消耗相对较高。 3. 不适合复杂查询:虽然MongoDB支持复杂查询,但相对于关系型数据库MySQL来说,其查询功能较为有限。 MySQL的优点: 1. 成熟稳定:MySQL是一种成熟且广泛使用的关系型数据库管理系统,在各种应用场景中都有良好的表现。 2. 支持事务:MySQL支持ACID特性,可以保证数据的一致性和可靠性。 3. 强大的查询功能:MySQL提供丰富的查询语言和功能,支持复杂的关系型查询操作。 4. 社区支持和资源丰富:MySQL拥有庞大的开源社区,提供了大量的文档、教程和解决方案。 MySQL的缺点: 1. 不适合非结构化数据:MySQL是一种关系型数据库,对于非结构化数据的存储和查询相对较为繁琐。 2. 扩展性限制:MySQL在处理大规模数据和高并发请求时,存在一定的扩展性限制。 3. 数据表设计约束:MySQL需要提前定义数据表的结构,对于频繁变动的数据结构可能不够灵活。 综上所述,选择MongoDB还是MySQL取决于具体应用场景和需求。如果需要处理非结构化数据、具有高扩展性要求或需要灵活性较高的数据模型,则MongoDB可能更适合。而如果需要强一致性、事务支持以及复杂查询功能,则MySQL可能更适合。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值