更新时间:2021年11月09日16时22分 来源:传智教育 浏览次数:
差别在多方面,例如:数据的表示、查询、关系、事务、模式的设计和定义、速度和性能。MongoDB 是由 C++语言编写的,是一个基于分布式文件存储的开源数据库系统。在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
MongoDB 是一个面向文档的数据库,目前由 10gen 开发并维护,它的功能丰富齐全,所以完全可以替代MySQL。与 MySQL 等关系型数据库相比,MongoDB 的优点如下:
①弱一致性,更能保证用户的访问速度。
②文档结构的存储方式,能够更便捷的获取数据。
③内置 GridFS,支持大容量的存储。
④内置 Sharding。
⑤第三方支持丰富。(这是与其他的 NoSQL 相比,MongoDB 也具有的优势)
⑥性能优越:
MongoDB 本身它还算比较年轻的一个产品,所以它的问题,就是成熟度肯定没有传统 MySQL 那么成熟稳定。所以在使用的时候:
尽量使用稳定版,不要在线上使用开发版,这是一个大原则;
另外一点,备份很重要,MongoDB 如果出现一些异常情况,备份一定是要能跟上。除了通过传统的复制的方式来做备份,离线备份也还是要有,不管你是用什么方式,都要有一个完整的离线备份。往往终究出现了特殊情况,它能帮助到你;另外,MongoDB 性能的一个关键点就是索引,索引是不是能有比较好的使用效率,索引是不是能够放在内存中,这样能够提升随机读写的性能。如果你的索引不能完全放在内存中,一旦出现随机读写比较高的时候,它就会频繁地进行磁盘交换,这个时候,MongoDB 的性能就会急剧下降,会出现波动。
另外,MongoDB 还有一个明显的缺点,就是它占用的空间很大,因为它属于典型空间换时间原则的类型。那么它的磁盘空间比普通数据库会浪费一些,而且到目前为止它还没有实现在线压缩功能,在 MongoDB 中频繁的进行数据增删改时,如果记录变了,例如数据大小发生了变化,这时候容易产生一些数据碎片,出现碎片引发的结果,一个是索引会出现性能问题。
另外一个就是在一定的时间后,所占空间会莫名其妙地增大,所以要定期把数据库做修复,定期重新做索引,这样会提升 MongoDB 的稳定性和效率。在新的版本里,它已经在实现在线压缩,估计应该在 2.0 版左右,应该能够实现在线压缩,可以在后台执行现在 repair DataBase 的一些操作。
如果那样,就解决了目前困扰我们的大问题。