MongoDB和MySQL对比

在mongo官网上看到的文章,原文地址:https://www.mongodb.com/compare/mongodb-mysql,刚好看到一哥们翻译就拿过来了!

概览

关系型数据库最初是为企业应用程序而设计,自从MySQL在1995年发行以来,一直是企业和个人首选的数据库,直到在近些年,大数据的兴起,非关系数据库技术出现,像MongoDB,非常适合这种新型的应用,以及替换关系型的结构的数据库

What is MySQL?

MySQL是一个个人开源关系型的数据库管理系统(RDBMS),现在已经由Oracle发行和提供技术支持,像其它关系型数据库一样,MySQL存储数据在表中,使用结构化的查询语言(SQL)访问数据库,MySQL需要你预定义表的结构,数据表字段之间的关系在数据表中,关系信息也可以存储在分离的数据表中,使用这种方式实现数据的最小化,也就是减少数据的冗余

What is MongoDB?

MongoDB是MongoDB公司开发开源的数据库,MongoDB数据存储在像JSON结构的文档中,可以通过MongoDB查询语言快速查找相关信息,MongoDB使用动态的schemas,也就是说你可以不用预先定义结构就可以创建记录,比如某个字段是的类型是其它的值,你可以改变这个记录(在MongoDB中叫文档)的结构,可以很简单添加和删除字段,数据模型可以给你构建数据层次关系的能力,比如数组或者其它数据结构,文档在集合中不必具有相同的字段和数据的非规范化是很常见的,MongoDB的设计也考虑到成高用性和可伸缩性,比如开箱即用和 
自动分片

术语和概念

MongoDB很多概念和MySQL类似
MySQL    MongoDB  
Table    Collection  
Row      Document  
Column   Field  
Joins    Embedded documents, linking  

特性比较

像MySQL一样,MongoDB也提供丰富的特性,也有自己的查询语言,高可用的二级索引(包括文本搜索和地理位置),强大,高聚合数据分析框架,比关系型数据库有着更加丰富的数据类型和可扩展性
                     MySQL          MongoDB
Rich Data Model        No             Yes  
Dyamic Schema          No             Yes  
Typed Data             Yes            Yes  
Data Locality          No             Yes  
Field Updates          Yes            Yes  
Easy for Programmers   No             Yes  
Complex Transactions   Yes            No  
Auditing               Yes            Yes  
Auto-Sharding          No             Yes  

查询语言

MySQL  
INSERT INTO users (user_id, age, status) VALUES("bcd001", 45, "A")

MongoDB  
db.users.insert({  
    user_id: "bcd001", 
    age: 45, 
    status: "A"
})

MySQL  
SELECT * FROM users

MongoDB  
db.users.find()

MySQL  
UPDATE users SET status = "C" WHERE age > 25

MongoDB  
db.users.update(  
    { age: { $gt: 25 } },
    { $set: { status: "C" } },
    { multi: true }
)

为什么使用MongoDB替代MySQL?

各种规模的企业都在采用MongoDB,因为这使他们更快地构建应用程序和处理不同的数据类型,更有效地管理大型应用。
MongoDB的面向对象编程简化开发,更加接近现代高级语言,使用MongoDB可以在代码中不使用ORM层来操作关联表。
MongoDB’s有灵活的数据模型,意味可以应对业务需求的发展。
MongoDB也可跨数据中心的方式扩展,相对关系数据库MongoDB提供更高的可用性和更好的可扩展性,随着数据增长,MongoDB可以不停机和不用修改应用程序进行扩展,通常MySQL,需要工程师做更多工作。

什么时候使用MySQL会更合适?

有很多MongoDB和MySQL混合开发的案例,在某些案例中,按照场景选择合适工具来工作,比如,许多经济系统中会组合MySQL和MongoDB一起使用,产品目录,包括多个产品有不同的属性,就很适合MongoDB灵活数据模型,另一方面,像checkout system的复杂性使用MySQL或者其它关系型数据库更合适

MongoDB和MySQL一起使用?

有很多MongoDB和MySQL混合开发的案例,在某些案例中,按照场景选择合适工具来工作,比如,许多经济系统中会组合MySQL和MongoDB一起使用,产品目录,包括多个产品有不同的属性,就很适合MongoDB灵活数据模型,另一方面,像checkout system的复杂性使用MySQL或者其它关系型数据库更合适。

翻译内容来自这位老兄


补充,一篇关于MongoDB事务的好文章:MongoDB原子性和事务

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值