Mongodb
資料存儲階段
檔案管理階段 (.txt .doc .xls)
優點:
資料可以長期儲存
資料有一定的格式化規範
可以大量存儲
使用簡單友善
缺點:
資料一緻性差
使用者查找修改不友善
資料備援
資料庫管理階段
優點:
資料組織結構化,降低了備援
提高了增删改查的效率
便于擴充,友善程式調試做自動化處理
缺點:
資料庫的使用往往專業性比較強,相對比較複雜
幾個概念:
資料:能夠輸入到計算機中,并被識别處理的資訊的集合
資料結構:研究組成資料集合中資料之間關系的學科
資料庫:按照資料結構,存儲管理資料的倉庫,是在資料管理系統軟體管理和控制下建立在一定媒體上的資料集合
資料管理系統:資料管理軟體,用于維護管理資料庫
資料庫系統:由資料庫,資料庫管理系統,開發工具等組成的工具集合
非關系型資料庫:
優點:
高并發,讀寫能力強
擴充性強,使用靈活
弱化了資料結構,降低資料一緻性
缺點:
通用性差,沒有sql那樣統一的操作語句
操作靈活,容易混亂
沒有join等複雜操作,版本更新快
Nosql的使用情況
1.資料的一緻性要求低
2.處理資料的海量并發
3.資料庫大小不容易确定,需要分布擴充
4.給定的資料結建構立非關系模型更加容易
mongodb資料庫組成結構
組織結構: 鍵值對 文檔 集合 資料庫
mysql中這樣的表單如何用mongo建立
ID | name | age |
----------------------
1 | jojo | 24 |
----------------------
2 | wenrou | 18 |
使用mongo插入資料對比
{
"_id":1,
"name":"jojo",
"age":17
}
{
"_id":2,
"name":"wenrou",
"age":18
}
mysql 和 mongodb概念比較
mysql mongodb 含義
database database 資料庫
table callection 表/集合
column field 字段/域
row document 記錄/文檔
index index 索引
建立資料庫
use databaseName
e.g. 建立一個stu的資料庫
use stu
實際上,use是選擇使用一個資料庫,當選擇的資料庫不存在的時候,就會建立
隻有像資料庫中插入資料時,資料庫才會被真正的建立出來,而use後,不會馬上被建立
show dbs 檢視資料庫 == show databases
系統資料庫
admin :存放使用者和權限
local :存放本地化資料
config :存儲分片資訊
資料庫的命名規則
1.mongodb是嚴格區分大小寫的
2.使用utf-8字元(雖然utf-8,但習慣使用小寫字母,表達資料庫的含義)
3.不能含有空格 . / \ ‘\0’ 字元
4.長度不能超過64位元組,不能和系統資料庫重名
db : mongo系統全局變量,代表目前正在使用的資料庫對象
當不使用use選擇任何資料庫的時候,db代表test,此時插入資料則建立test資料庫
資料庫的備份和恢複
備份
mongodump -h dbhost -d dbname -o dbdir
mongodump -h 127.0.0.1 -d stu -o D:\bak
備份 stu 資料庫 到D:\bak 目錄下 如果不存在bak 則自動建立
恢複
mongorestore -h db host:port -d dbname dbpath
mongorestore -h 127.0.0.1:27017 -d student D:\bak\stu
将stu資料庫恢複到127.0.0.1上的student資料庫中,如果student不存在,則自動建立
資料庫的檢測指令(動态)
mongostat
insert query updata delete : 每秒增查改删的次數
command : 每秒運作指令的次數
flushes : 每秒和磁盤互動次數
vsize : 使用虛拟記憶體大小
mongotop : 檢測每個資料讀寫時長
ns : 資料集合
total : 總時長
read : 讀時長
write : 寫時長
删除資料庫
db.dropDatabase()
删除db所代表的資料庫
eg:
use student
db.dropDatabase()
{ "dropped" : "student", "ok" : 1 }
表示删除成功
集合的建立和删除
建立集合:
db.createCollection(collection_name)
db.createCollection("class1")
當向一個集合中插入資料的時候,如果這個集合不存在,則自動建立
db.collection.instert(...)
如果class2不存在,則建立這個集合,并插入資料
db.class2.insert({"name":"lucy","age":18})
檢視集合
show collections
show tables
集合的命名規則:
1.合法的utf-8字元串
2.不能有’\0’
3.不能以system. 開頭(這是系統的保留字首)
4.不能和關鍵字重複(例如:insert,tables,等)
删除集合
db.collection.drop()
删除class2集合
db.class2.drop()
一次性删除所有集合:
不如試試删除這個資料庫好了:)
集合重命名
db.collection.renameCollection("new_name")
将class1重命名為class0
db.class1.renameCollection("class0")