Mongodb和mysql的区别

本文详细介绍了MongoDB和MySQL的区别,包括它们的存储方式、查询语句、适合场景和优缺点。MongoDB作为非关系型数据库,以其快速、高扩展性和JSON格式存储数据为特点,但不支持事务且占用空间大。MySQL则以其成熟的SQL查询和广泛应用为优势,但在海量数据处理时效率降低。此外,文章还提供了MongoDB的常用操作命令,如连接数据库、创建集合、插入和查询数据等。

Mongodb和mysql的区别

1.Mongodb简介及优缺点分析

Mongodb是非关系型数据库(nosql ),属于文档型数据库。文档是mongoDB中数据的基本单元,类似关系数据库的行,多个键值对有序地放置在一起便是文档,语法有点类似javascript面向对象的查询语言,它是一个面向集合的,模式自由的文档型数据库。

存储方式:虚拟内存+持久化。

查询语句:是独特的Mongodb的查询方式。

适合场景:事件的记录,内容管理或者博客平台等等。

架构特点:可以通过副本集,以及分片来实现高可用。

数据处理:数据是存储在硬盘上的,只不过需要经常读取的数据会被加载到内存中,将数据存储在物理内存中,从而达到高速读写。

成熟度与广泛度:新兴数据库,成熟度较低,Nosql数据库中最为接近关系型数据库,比较完善的DB之一,适用人群不断在增长。

优点:

快速!在适量级的内存的Mongodb的性能是非常迅速的,它将热数据存储在物理内存中,使得热数据的读写变得十分快。高扩展性,存储的数据格式是json格式!

缺点:

① mongodb不支持事务操作。

② mongodb占用空间过大。

③ 开发文档不是很完全,完善。

2.MySQL优缺点分析

优点:

在不同的引擎上有不同 的存储方式。

查询语句是使用传统的sql语句,拥有较为成熟的体系,成熟度很高。

开源数据库的份额在不断增加,mysql的份额页在持续增长。

缺点:

在海量数据处理的时候效率会显著变慢。

3.Mongodb和MySQL数据库的对比

传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由数据库(database)、集合(collection)、文档对象(document)三个层次组成。

MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。

4.MongoDB常用语句

# 连接Mongo数据库,并设置数据存储地址

mongod.exe --dbpath "d:\software\MongoDB\Server\3.0\data"

#-----------------------#1# 数据库

# 查看所有的数据库

show dbs

# 删除当前使用的数据库

db.dropDatabase()

# 使用这个数据库(只有插入数据后完成创建数据库)

use dbt

# 查看当前使用的数据库

db

db.getName()

# 查看当前数据库状态

db.stats()

# 修复当前数据库

db.repairDatabase()

# 从一个数据库复制到另一个数据库

db.copyDatabase("mydb", "temp", "127.0.0.1");

#-----------------------#2# 集合

# 查看当前数据库下所有的集合

show collections

show tables

# 创建名称为coll集合

db.createCollection('coll')

db.createCollection("coll2", {capped:true, autoIndexId:true, size:6142800, max:10000}) # 可选参数

# 查看当前集合状态

db.coll.stats()

# 删除名称为coll集合

db.coll.drop()

#-----------------------#3# 集合数据

# 插入空数据并且直接创建名称为coll集合

db.coll.insert({})

# 插入一个或多个数据

db.coll.insert({name:'tom', age:22})

db.coll.insert([{name:'adam', age:10},{name:'john', age:23}])

# 添加数据(save方法可以修改相同id的数据)

db.coll.save({name:'allen'})

# 删除一个或所有的数据

db.coll.remove({name:'tom'})

db.coll.remove({})

# 删除符合条件的数据中的第一条

db.coll.remove({name:'tom'}, 1)

# 更改数据

db.coll.update({name:'tom', age:22}, {$set:{name:'tom', age:222}})

# 查看数据

db.coll.find()

# 查看一条数据

db.coll.findOne()

db.coll.find({}, {name:1, '_id':0}) # 1表示显示,0表示不显示(find默认显示_id)

# 格式化显示数据,使数据更加清晰明了

db.coll.find().pretty()

# 使用and,or查看数据

db.coll.find({name:'tom', age:22}) # 等同and使用

db.coll.find({$or:[{name:'tom'}, {age:21}]}) # or使用

# 操作符大于,小于,等于,不等于,大于不等于,小于不等于

db.coll.find({age: {$gt: 22}}) # 大于

db.coll.find({age: {$lt: 22}}) # 大于

db.coll.find({age: 22}) # 等于

db.coll.find({age: {$ne: 22}}) # 不等于

db.coll.find({age: {$gte: 22}}) # 大于等于

db.coll.find({age: {$lte: 22}}) # 小于等于

# 显示从skip之后limit个

db.coll.find().limit(2).skip(1)

#-----------------------# # 用户

# 3.x之后版本添加用户

use admin

db.createUser({user:'nu', pwd:'nu', roles:[{role:'readWrite',db:'admin'}]})

# 用户认证

db.auth("nu", "nu");

# 显示当前所有用户

show users;

db.system.users.find()

3.x版本删除用户

db.removeUser('nu') # 不推荐使用,已经废弃

db.dropUser("nu");

# 当前db版本

db.version();

# 当前db的链接机器地址和端口

db.getMongo();

# 备份到备份目录

mongodump

# 从备份目录恢复备份语句。

mongorestore

如果本文对你有帮助,别忘记给我个3连 ,点赞,转发,评论,

咱们下期见。

### MongoDBMySQL 的主要区别及适用场景 #### 数据模型 MongoDB 是一种文档型数据库,采用 BSON(类似 JSON)格式存储数据,支持灵活的模式设计[^3]。每个文档可以包含不同的字段结构,适合处理非结构化或半结构化的数据。而 MySQL 是一种关系型数据库,基于表行的结构化数据模型,需要预先定义严格的表结构数据类型[^1]。 #### 查询语言 MySQL 使用标准的结构化查询语言(SQL),提供强大的声明式查询功能,适用于复杂的多表联结操作事务处理[^5]。MongoDB 则使用基于 JSON 的查询语言(MQL),语法更加直观,尤其适合对嵌套文档进行查询操作。此外,MongoDB 提供了丰富的聚合框架地理空间查询功能[^5]。 #### 事务支持 MySQL 提供全面的 ACID 事务支持,确保数据的一致性完整性,特别适合金融系统、电商交易等对数据一致性要求极高的场景[^2]。相比之下,MongoDB 在较新的版本中引入了分布式事务支持,但其性能可能不如 MySQL,在高并发场景下需谨慎使用[^2]。 #### 扩展性 MongoDB 设计之初就考虑了水平扩展的需求,支持分片(Sharding)技术,能够轻松应对大规模数据集高吞吐量操作[^4]。而 MySQL 更擅长垂直扩展,通常通过增加硬件资源来提升性能。对于需要动态扩展的应用场景,MongoDB 明显更具优势[^2]。 #### 空间占用 由于 MongoDB 的文档存储方式不需要固定的表结构,因此在某些情况下可以减少冗余字段的空间占用[^1]。然而,这种灵活性也可能导致数据重复存储,从而增加总体存储需求。MySQL 的表结构化设计通常能更好地优化存储效率。 #### 成熟度与生态系统 MySQL 是一个成熟的关系型数据库,拥有庞大的用户群体丰富的社区支持,广泛应用于企业级应用开发[^1]。MongoDB 作为新兴的 NoSQL 数据库,虽然发展迅速,但在某些传统领域仍不如 MySQL 成熟[^3]。 #### 适用场景 - **MongoDB**:适合需要灵活数据模型、快速扩展高性能读写的场景,例如内容管理系统、实时分析、物联网数据存储等[^4]。 - **MySQL**:适合需要严格数据一致性复杂事务处理的场景,例如银行系统、电子商务平台、ERP 系统等[^2]。 ```python # 示例代码:MongoDB MySQL 的简单对比 # MongoDB 查询示例 db.collection.find({"field": "value"}) # MySQL 查询示例 SELECT * FROM table WHERE field = 'value'; ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值