第10周 Mongodb的GridFS與分片

2021-06-19 22:24:00 字數 2329 閱讀 5489

用於在資料庫裡儲存二進位製大檔案

可以統一用資料庫處理資料,而無需借助外部的檔案系統

可以利用mongodb的複製或分片機制,故障恢復和可擴充套件性較好

避免使用檔案系統的某些限制(例如linux在同一目錄下的檔案數限制)

避免檔案碎片(mongodb分配空間以2gb作為單位)

#使用mongofiles操作gridfs

[root@linux bin]# echo "hello, word" > foo.txt

[root@linux bin]# cat foo.txt

hello, word

[root@linux bin]# ./mongofiles put foo.txt

connected to: 127.0.0.1

added file:

done!

[root@linux bin]# ./mongofiles list

connected to: 127.0.0.1

foo.txt 12

[root@linux bin]# rm -rf foo.txt

[root@linux bin]# ./mongofiles get foo.txt

connected to: 127.0.0.1

done write to: foo.txt

[root@linux bin]# cat foo.txt

hello, word

#gridfs原理

檔案被分成若干塊(chunk),每個塊作為乙個文件儲存

有乙個單獨的文件儲存分塊的資訊,以及檔案的元資料

 fs.chunks集合

 fs.files集合

#何時分片

單個節點的磁碟不足

單個mongod不能滿足寫資料的效能要求

將大量資料放到記憶體中提高效能

#片鍵什麼是片鍵 (就是文件的屬性,我們通常說的列)

選擇遞增片鍵還是隨機片鍵 (當然是隨機的好,跟b*tree索引傾斜一樣的道理)

片鍵對操作和效能的影響

##實施分片

1、啟動配置伺服器

./mongod --dbpath /nosql/mongodb/dbs/config --port 20000

2、啟動mongos

./mongos --port 30000 --configdb 127.0.0.1:20000

3、新增mongod例項(片)

./mongod --dbpath /nosql/mongodb/dbs/shard1 --port 10000

#使用連線mongos

./mongo 127.0.0.1:30000/admin

mongos> db.runcommand()

4、對資料庫啟用分片

mongos> db.runcommand()

##對foo資料庫啟用分片

5、對集合進行分片

mongos> db.runcommand(})

##foo是資料庫 bar是集合 _id是片鍵

#健壯的集群規劃

可以多配置伺服器

可以啟動多個mongos

可以每個片都是副本集

#檢視所有的片

mongos> use config

switched to db config

mongos> db.shards.find()

#database集合

mongos> db.databases.find()

#chunks集合

mongos> db.chunks.find()

, "ns" : "foo.bar", "min" : }, "max" : }, "shard" : "shard0000" }

#獲得概要

mongos> db.printshardingstatus()

--- sharding status ---

sharding version:

shards:

databases:

foo.bar chunks:

shard0000 1

} -->> } on : shard0000

#刪除片

mongos> use admin

switched to db admin

mongos> db.runcommand()

mongos> db.runcommand()

,"ok" : 1

}

第10周作業

1 編寫指令碼selinux.sh,實現開啟或禁用selinux功能 2 統計 etc fstab檔案中每個檔案系統型別出現的次數 awk uuid end etc fstab sort nr 3 提取出字串yd c m05mb 9 bdh7dq yvixp3vpw中的所有數字 echo yd c ...

第10周作業

問題描述 東東在玩遊戲 game23 在一開始他有乙個數字n,他的目標是把它轉換成m,在每一步操作中,他可以將n乘以2或乘以3,他可以進行任意次操作。輸出將n轉換成m的操作次數,如果轉換不了輸出 1。思路首先計算出兩者相差的倍數 進行除6運算,cnt 2 然後測試除2或者除3,cnt 1 注意除0導...

第10周 總結

node專案已經考核結束,自己的node專案中還存在的很大的問題,一些小的細節需要修改,很多東西需要深挖,知識點需要進一步進行鞏固,很多錯誤自己都能看出來,有時候可能因為懶,很多細節就沒有做到位,這在以後是需要避免的,不允許出現的。今天,就新專案給19級全部成員和部分大三學長進行了詳細的講解。盡可能...