mysql mango_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.repo2 [mongodb-org]3 name=MongoDB Repository4 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
總結
以上是生活随笔為你收集整理的mysql mango_mangodb与mysql的区别及部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C语言:用字符读取流和输出流来读写入数据
- 下一篇: 从C语言到C++成长经历所得的一些技巧和