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   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM