MySQL与MonogoDB:MySQL与MongoDB之间的基本区别

MySQL与MonogoDB:MySQL与MongoDB之间的基本区别

MySQL和MongoDB事开源数据库,MySQL与MonogoDB在数据表示、查询、关系、事务、模式、设计和定义、规范化、速度和性能方面有很多基本差异。通过比较MySQL与MongoDB。MongoDB事一个可扩展的的高新能开源数据库,处理面向文档的存储。而MySQL事一种广泛使用的关系数据库。在构建自定义Web应用程序时,需要考虑最适合需求的数据库类型。

1 .》数据表时

     1.1    MySQL在表和行中表示数据

     1.2    MongoDB将数据表示伟JSON文档集合。

      总结:  如果您考虑一下,JSON文档与您在应用程序层中使用的文档非常相似。如果您使用的是javascript,这正是您正在使用的。如果您使用的是PHP,则就像一个关联数组。如果您使用的是python,它就像一个字典对象。

2. 》查询方式 

    2.1    MySQL中的SQL代表结构化查询语言。这是因为您必须使用数据库系统解析的这种查询语言来组合一个字符串。这就是使SQL注入攻击成为可能的原因。
 
    2.2   MongoDB使用对象查询。我的意思是,您将其传递给文档以解释您要查询的内容。没有任何语言可以解析。如果您已经熟悉SQL,那么花一点时间来围绕这个概念动脑筋,但是一旦弄清楚了它,它就会变得更加直观。
 
  3. 》 关系
 
通常,关于MySQL和关系数据库的最佳功能之一是万能的JOIN操作。这使您可以跨多个表执行查询。
 
MongoDB不支持联接,但是它支持多维数据类型,例如数组,甚至其他文档。将一个文档放在另一个文档中称为嵌入。例如,如果要使用MySQL创建博客,则将具有用于发布的表和用于评论的表。在MongoDB中,您可能只有一个帖子集合,并且每个帖子中都有一组评论。
 
4. 》 交易次数
 
   4.1  MySQL的另一个优点是它对原子事务的支持。能够在一个事务中包含多个操作并回滚整个事物的能力,就好像它是单个操作一样。
 
   4.2  MongoDB不支持事务,但是单个操作是原子的。
 
5. 》 模式定义
 
   5.1  MySQL要求您定义表和列,然后才能存储任何内容,并且表中的每一行必须具有相同的列。
 
   5.2  关于MongoDB,我最喜欢的事情之一是您没有定义架构。您只需放入文档,并且集合中的两个文档甚至不需要具有相同的字段。
 
6. 》 模式设计和规范化
 
   6.1  在MySQL中,如果遵循规范化标准,那么在数据结构方面确实没有太多灵活性。这个想法是不喜欢任何特定的应用程序模式。
 
   6.2  在MongoDB中,您必须使用嵌入和链接而不是联接,并且您没有事务。这意味着您必须根据应用程序访问数据的方式来优化架构。这对于MySQL专家来说可能很吓人,但是如果您继续阅读,您会发现MySQL和MongoDB都有一个地方。
 
7. 》 性能
 
   7.1  MySQL通常因性能不佳而受到指责。好吧,如果您使用的是ORM,性能可能会受到影响。如果您使用的是简单的数据库包装程序,并且已正确索引了数据,则将获得良好的性能
 
  7.2  通过牺牲诸如联接之类的东西并提供出色的性能分析工具,MongoDB的性能要比关系数据库好得多。您仍然需要索引数据,事实是那里的绝大多数应用程序没有足够的数据来注意到差异。
 
8. 》  什么时候应该使用MySQL?
 
   8.1  如果您的数据结构很好地适合表和行,则MySQL将为您提供与数据的健壮轻松的交互。如果您关心的是性能,则很有可能您真的不需要MongoDB。最有可能的是,您只需要正确索引数据即可。如果您需要SQL或事务,则必须坚持使用MySQL。
 
9. 》 什么时候应该使用MongoDB?
 
 9.1  如果您的数据似乎很难在关系数据库系统中建模,或者发现自己对数据库模式进行了规范化或围绕性能问题进行编码,则应考虑使用MongoDB。如果您发现自己尝试存储序列化的数组或JSON对象,则表明您最好不要使用MongoDB。如果您无法预先定义架构,或者想要将记录存储在具有不同字段的同一集合中,那是另一个很好的理由。
 
结论
 
您可能以为这将完全取决于性能,但是MySQL和MongoDB都非常有用,并且它们的基本操作之间的差异远不只是性能。这实际上取决于您的特定应用程序的需求。

 

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值