《非替代品,MongoDB与MysqL对比分析》要点:
本文介绍了非替代品,MongoDB与MysqL对比分析,希望对您有用。如果有疑问,可以联系我们。
《非替代品,MongoDB与MysqL对比分析》是否对您有启发,欢迎查看更多与《非替代品,MongoDB与MysqL对比分析》相关教程,学精学透。内存溢出PHP学院为您提供精彩教程。
【IT168 评论】对于只有sql配景的人来说,想要深入研究Nosql似乎是一个艰巨的任务,MysqL与MongoDB都是开源常用数据库,但是MysqL是传统的关系型数据库,MongoDB则是非关系型数据库,也叫文档型数据库,是一种Nosql数据库.它们各有优点,关键看用在什么地方.
什么情况下,MongoDB是最好的选择?
很多人认为MongoDB难以置信的强大,是一个可扩展,界面交互友好的数据库办理方案.当开发人员需要负责管理数据库环境时,MongoDB是一个不错的选择.起码在小型企业和初创公司,是这样.MongoDB将信息存储在BSON(二进制JsON)中.BSON是一种类JsON二进制形式的存储格式,简称Binary JsON,它和JsON一样,支持内嵌的文档对象和数组对象,但BSON有JsON没有的一些数据类型,如Date和BinData类型.JsON很容易与其他编程语言关联,许多开发人员都有使用JsON的经验.
当你的程序有大量流量写入时,MongoDB也是一个很好的选择.这并不是说MysqL在处理频繁写入环境方面不是一个好的选择,只是说MongoDB相对更容易一些.Facebook为写负载过重的环境设计了RocksDB存储引擎,性能还不错(通过基准测试证明了这一点).
当你需要一个无模式或模式灵活的数据结构时,MongoDB是一个不错的选择.MongoDB对数据结构的更改相对轻松和宽容,这是Nosql办理方案的卖点.在MysqL世界中有许多改进使在线模式更改成为可能,只创建记录而不定义结构增加了MongoDB的灵活性.
选择MongoDB的另一个原因是它具有设置复制环境,内置分片和自动选择方面的功能.在MongoDB中设置复制环境很容易,自动选择过程允许从数据库在主数据库故障的情况下接管.内置分片允许简单的横向扩展.在MysqL环境中管理,设置和配置会很复杂.
什么情况下不能选MongoDB?
对某些用例而言,MongoDB是不错的选择,但它也不是万能的.当数据高度关系化和结构化时,MongoDB就不是最佳选择.MongoDB不支持事务,但在文档级别,具有原子性.对于复制环境,有关写入问题的配置注意事项都是以牺牲性能为代价的.写入方面将验证副本是否已写入信息,默认情况下,MongoDB将写哀求设置为仅从主计算机哀求确认,而不是副本.因为如果副本有问题,就会导致一致性问题.
二者结构有何不同?
sql中的许多概念都与MongoDB的文档结构相关.让我们来看一个简单的MongoDB环境结构,以更好地了解MongoDB的布局.
下面的图表涉及MysqL与MongoDB的不同点:
除此之外,另一个有趣的地方是mongod进程.这是一个处理数据哀求的守护进程,与MysqL的MysqLd进程大致相同,是监听MongoDB哀求并管理数据库访问的进程.和MysqL一样,mongod进程有很多启动选项.最重要的配置选项之一是config,它是专门用于mongod实例的配置文件.与MysqL稍有不同,此文件使用YAML格式.下面是MongoDB配置文件示例.请注意,这是演示格式化,它并未针对任何生产数据库进行优化.
根据定义,MongoDB是一个基于分布式文件存储的数据库.可以立即将文档插入到集合中,而无需创建表和添加数据,无需定义结构.这是MongoDB与MysqL相比的优点之一,更加灵活.要注意,MongoDB提供的这种灵活性并不意味着组织一个功能强大的MongoDB数据库毫不费力.选择任何数据库,都应该考虑数据库的结构和目标.
# mongod.conf,Percona Server for MongoDB
# for documentation of all options,see:
# http://docs.mongodb.org/manual/reference/configuration-options/
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
engine: rocksdb
# where to write logging data.
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
processManagement:
fork: true
pIDfilePath: /var/run/mongod.pID
# network interfaces
net:
port: 27017
bindIp: 127.0.0.1
注意:YAML格式化不处理选项卡,使用空格缩进.
查询方式有何不同?
通过shell与数据库交互与sql略有不同,以下是从sql翻译为MongoDB的查询示例,其中使用了一个只有用户名和相关ID的用户表.
In sql:
select username from user where ID = 2;
In MongoDB:
db.user.find({_ID:2},{“username”:1})
在JsON格式中,我们指定要查询的用户集合,然后指定与我们感兴趣的文档相关联的ID.最后,指定从中获取值的字段,此查询结果将是ID为2的用户的用户名.
总结
MongoDB不是MysqL的影子,也不是MysqL的替代品,随着两个数据库的赓续发展,它们的优劣慢慢融合在一起.MysqL用户可以在MongoDB上测试各种实例,但不鼓励盲目追求MongoDB的灵活性.尽管MongoDB在电子商务和游戏世界是一个受欢迎的选择,因为它能够利用大量数据进行水平扩展.
总结以上是内存溢出为你收集整理的非替代品,MongoDB与MySQL对比分析全部内容,希望文章能够帮你解决非替代品,MongoDB与MySQL对比分析所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)