時(shí)間:2024-03-26 14:37作者:下載吧人氣:36
MongoDB 是當(dāng)下最流行的NoSQL數(shù)據(jù)庫(kù)之一,能夠存儲(chǔ)各種類型的數(shù)據(jù)??梢哉f(shuō),對(duì)于那些想要入門NoSQL、學(xué)習(xí)MongoDB的開(kāi)發(fā)者來(lái)說(shuō),掌握MongoDB是必不可少的技能之一。那么,在8天里,怎么樣才能玩轉(zhuǎn) MongoDB呢?
首先,啟動(dòng)MongoDB。在開(kāi)始學(xué)習(xí) MongoDB之前,首先要安裝它,可以在 MongoDB的官網(wǎng)上下載最新的版本,然后運(yùn)行適用于你的操作系統(tǒng)的安裝程序。安裝完成后,從命令行或者其他客戶端輸入相應(yīng)的指令可以運(yùn)行 MongoDB的實(shí)例,例如:
cd C:/mongo
mongod.exe
第二天,我們需要學(xué)習(xí)MongoDB的基本語(yǔ)句。以文檔類型為主的MongoDB,以BSON(二進(jìn)制文檔格式)存儲(chǔ)數(shù)據(jù),數(shù)據(jù)可以分配至collection(集合)中。MongoDB提供了CRUD操作,可以通過(guò)Regular Expression(正則表達(dá)式)來(lái)查找符合條件的數(shù)據(jù),例如:
// Create
db.profiles.insert({name: “John”, age: 25, job: “Developer”})
// Read
db.profiles.find({name: “John”})
// Update
db.profiles.update({name: “John”}, {$set: {age: 26}})
// Delete
db.profiles.remove({name: “John”})
第三天,我們需要學(xué)習(xí)如何使用MongoDB常用查詢操作。有時(shí),文檔也需要符合一定的規(guī)則才能被視為有效,如果更新時(shí)不符合規(guī)則,這往往會(huì)導(dǎo)致錯(cuò)誤。在MongoDB中,可以使用文檔約束(Schema Validation)來(lái)確保文檔是正確的。另外,也可以使用Aggregate函數(shù)對(duì)數(shù)據(jù)進(jìn)行匯總:
// Schema Validation
db.createCollection(“profiles”, {
validator: {$and: [
{name : {$type: “string”}
},
{age : {$type: “int”, $gt:20, $lt:30}}
]
}
});
// Aggregation
db.collection.aggregate([
{$group:{_id:”$name”,
total:{$sum: “$price”}}
}
]);
第四天,介紹了MongoDB的使用場(chǎng)景。隨著MongoDB的普及,現(xiàn)在幾乎可以在任何領(lǐng)域使用該數(shù)據(jù)庫(kù),只要數(shù)據(jù)模型適合NoSQL格式。有些企業(yè)用MongoDB來(lái)存儲(chǔ)文檔或能提升安全的報(bào)表;而有的游戲公司則會(huì)使用它來(lái)存儲(chǔ)從玩家的游戲前進(jìn)和技能升級(jí)中獲得的所有數(shù)據(jù)。MongoDB也可以用來(lái)存儲(chǔ)一些你認(rèn)為可能會(huì)受到攻擊的敏感數(shù)據(jù),因?yàn)镸ongoDB的自定義權(quán)限可以讓每個(gè)用戶對(duì)該數(shù)據(jù)都有細(xì)粒度的控制。
第五、六天,詳細(xì)介紹了MongoDB如何實(shí)現(xiàn)安全性。由于MongoDB存儲(chǔ)各種數(shù)據(jù),因此需要考慮保護(hù)數(shù)據(jù)的安全性,例如用戶認(rèn)證登錄、數(shù)據(jù)加密等,可以很好地實(shí)現(xiàn)安全措施。用戶可以使用CRAM-CHALLENGE/RESPONSE、TLS/SSL、X.509證書的驗(yàn)證機(jī)制登錄MongoDB,可以使用加密機(jī)制來(lái)存儲(chǔ)數(shù)據(jù),例如AES加密和Hashing算法:
// User authentication
// using CRAM-CHALLENGE/RESPONSE
db.createUser({
user: “testUser”,
pwd: “testpassword”,
mechanisms: [“CRAM-CHALLENGE”]
});
// Data Encryption
// using AES encryption
db.collection.find({
encryptedField: {$encrypt: {
keyid: “myAESKey”,
algorithm: “AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic”,
encryptValue: “{‘encoded_data:’ ‘a(chǎn)bc123’}”
}
});
第七、八天,學(xué)習(xí)MongoDB在大型應(yīng)用中的實(shí)施和部署??梢越柚鶰ongoDB實(shí)施數(shù)據(jù)庫(kù)水平擴(kuò)展或垂直擴(kuò)展,實(shí)現(xiàn)大規(guī)模數(shù)據(jù)庫(kù)的復(fù)雜部署,同時(shí)還可以針對(duì)不同的讀/寫場(chǎng)景進(jìn)行復(fù)制和冗余??梢允褂?MongoDB Atlas來(lái)管理數(shù)
網(wǎng)友評(píng)論