热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:mangodb与mysql的区别及部署

篇首语:本文由编程笔记#小编为大家整理,主要介绍了mangodb与mysql的区别及部署相关的知识,希望对你有一定的参考价值。一,mangodb与

篇首语:本文由编程笔记#小编为大家整理,主要介绍了mangodb与mysql的区别及部署相关的知识,希望对你有一定的参考价值。



一, mangodb与mysql的区别

     mangoDB与MYSQL都是开源的数据库,但是mysql是传统的关系型数据库,mangdb则是非关系型数据库,也可以称之为文档型数据库,是一种NoSQL的数据库,两则各自都有各自的优缺点


mysql: 关系型数据库。

  优点: 成熟稳定, 源代码的可移植性; 支持的操作系统多   为多种编程语言提供API(接口)    

  缺点: 关系表的不灵活性;存储引擎混乱原生json支持的缺乏


mangodb: 非关系型数据库

  优点: 01不存在sql注入:MySQL的是sql注入是一个很严重的缺点,虽然可以使用参数绑定和预处理以及特殊字符转义来处理。但是MongoDB根本不存在这个问题。xss攻击是需要防范。

     02,不需要提前创建表:在MySQL中如果想要写入一条数据的话必须要先创建好一张表然后才能写入数据,比如:要在user表里写入id=1,username=‘aaa’,sex=\'女\',age=‘20’这条数据,那你就必须在MySQL数据库上提前建好一张user表,并且至少必须有id,username,sex,age这几个字段才能写入成功。但是MongoDB可以直接写入数据,不需要提前创建表

     03,字段数据格式自由:在MySQL中,如果id字段是数字的话你写一个字符串进去是会报错的,但是MongoDB不会

     04,可以处理json结构:在MongoDB可以存储一个json对象,比如 字段a的值为{"a":11,"b":12,"c":"abc","d":[1,2,3]},你可以直接去读取或设置a字段的b值 a.b,读取a字段d数组的第二个值:a.d.1,可以去删除a字段的a数据$unset:{"a.a":1},就会变成:{"b":12,"c":"abc","d":[1,2,3]}

     05,充分利用了计算机内存,所以查询和插入效率要远大于MySQL。我自己测试(400w随机数据)的时候只有在没有索引的情况下MongoDB的查询效率要远大于MySQL,插入效率和MySQL差不多都是8w条左右1分钟。在有索引的时候MySQL的查询要速度要高于MongoDB。

    缺点:

      Mongodb全局锁机制。

      删除数据集合后空间不会自动释放


mysql与 mangodb对比









































































































































































































































































































































 

MySQL




MongoDB




服务器守护进程




mysqld




mongod




客户端工具




mysql




mongo




逻辑备份工具




mysqldump




mongodump




逻辑还原工具




mysql




mongorestore




数据导出工具




mysqldump




mongoexport




数据导入工具




source




mongoimport




新建用户并授权




grant all on *.*

to username@\'localhost\'


 identified by \'passwd\';





db.addUser("user","psw")

db.auth("user","psw")





显示库列表





show databases;





show dbs





进去库





use dbname;





use dbname





显示表列表





show tables;





show collections





查询主从状态





show slave status;





rs.status





创建库





create database name;





无需单独创建,直接use进去





创建表





create table tname(id int);





无需单独创建,直接插入数据





删除表





drop table tname;





db.tname.drop()





删除库





drop database dbname;





首先进去该库,db.dropDatabase()





 





 





 





插入记录





insert into tname(id) value(2);





db.tname.insert({id:2})





删除记录





delete from tname where id=2;





db.tname.remove({id:2})





修改/更新记录





update tname set id=3

where id=2;





db.tname.update({id:2},

{$set:{id:3}},false,true)





 





 





 





查询所有记录





select * from tname;





db.tname.find()





查询所有列





select id from tname;





db.tname.find({},{id:1})





条件查询





select * from tname where id=2;





db.tname.find({id:2})





条件查询





select * from tname where id <2;





db.tname.find({id:{$lt:2}})





条件查询





select * from tname where id >=2;





db.tname.find({id:{$gte:2}})





条件查询





select * from tname where id=2

and name=\'steve\';





db.tname.find({id:2,

name:\'steve\'})





条件查询





select * from tname where id=2

or name=\'steve\';





db.tname.find($or:[{id:2},

{name:\'steve\'}])





条件查询





select * from tname limit 1;





db.tname.findOne()





 





 





 





模糊查询





select * from tname where name

like "%ste%";





db.tname.find({name:/ste/})





模糊查询





select * from tname where name

like "ste%";





db.tname.find({name:/^ste/})





 





 





 





获取表记录数





select count(id) from tname;





db.tname.count()





获取有条件

的记录数





select count(id) from tname

where id=2;





db.tname.find({id:2}).count()





查询时去掉

重复值





select distinct(last_name)

from tname;





db.tname.distinct(\'last_name\')





 





 





 





正排序查询





select *from tname order by id;





db.tname.find().sort({id:1})





逆排序查询





select *from tname

order by id desc;





db.tname.find().sort({id:-1})





 





 





 





取存储路径





explain select * from tname

where id=3;





db.tname.find({id=3}).explain()




 


二,  mangodb安装

   01,配置yum地址  


1 cat /etc/yum.repos.d/mangodb.repo
2 [mongodb-org]
3 name=MongoDB Repository
4 baseurl=https://mirrors.tuna.tsinghua.edu.cn/mongodb/yum/el$releasever/
5 gpgcheck=0
6 enabled=1
 yum makecache


  02,安装mangodb

    yum install mongodb-org

    等待安装完成


  03,配置mangodb

      更改限制ip 由于我内网环境,python爬虫使用,设置为所有能访问

      

    启动: service mongod start

    停止: service mongod stop


  04,使用mangodb 

    本地连接:  mongo 127.0.0.1:27017   

        

  文章文字借鉴:  https://www.cnblogs.com/syomm/p/5760441.html

                https://www.cnblogs.com/fanhuo/p/9822853.html   




 




推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • Python操作MySQL(pymysql模块)详解及示例代码
    本文介绍了使用Python操作MySQL数据库的方法,详细讲解了pymysql模块的安装和连接MySQL数据库的步骤,并提供了示例代码。内容涵盖了创建表、插入数据、查询数据等操作,帮助读者快速掌握Python操作MySQL的技巧。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了记录一次MySQL两千万数据的大表优化解决过程,提供三种解决方案相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 《Python3 网络爬虫开发实战》:高效实用的 MongoDB 文档存储
    NoSQL,全称NotOnlySQL,意为不仅仅是SQL,泛指非关系型数据库。NoSQL是基于键值对的,而且不需要经过SQL ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文讨论了在使用sp_msforeachdb执行动态SQL命令时,当发生错误时如何捕获数据库名称。提供了两种解决方案,并介绍了如何正确使用'?'来显示数据库名称。 ... [详细]
  • WhenIusepythontoapplythepymysqlmoduletoaddafieldtoatableinthemysqldatabase,itdo ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
  • 前面刚有AWS开战MongoDB,双方“隔空互呛”,这厢又曝出2亿+简历信息泄露——MongoDB的这场开年似乎“充实”得过分了些。长期以来,作为“最受欢迎的NoSQL数据库”,M ... [详细]
  • 数据库基本介绍
    1、数据库基本知识概念:数据库:database(DB),是一种存储数据的仓库数据库是根据数据结构组织、存储和 ... [详细]
  • hackingTeam是如何被黑的
    hackingTeam是如何被黑的 ... [详细]
  • 什么是堡垒机?堡垒机是一个主机系统,其自身通常经过了一定的加固,具有较高的安全性,可抵御一定的攻击,其作用主 ... [详细]
author-avatar
手机用户2502913717
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有