zoukankan      html  css  js  c++  java
  • Mongodb和mysql的区别

    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:softwareMongoDBServer3.0data"

    #-----------------------#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
     

  • 相关阅读:
    Linux打包&压缩 tar,gzip,bzip2
    Linux递归计算目录md5
    fetion飞信登录异常,错误码10033201、10033202
    Linuxscp如何实现nohup &后台启动
    Linux显示日文4字节半角字符
    Linux目录配置的依据FHS
    Linux解决中文乱码问题: vim/pdf/gedit
    ery validator addMethod 方法的使用
    查询今天发帖量 sql
    JAVA反射机制
  • 原文地址:https://www.cnblogs.com/onesea/p/13055346.html
Copyright © 2011-2022 走看看