MongoDB實戰-操作分片叢集,向分片叢集中寫入資料
阿新 • • 發佈:2018-12-24
本篇文章中,我們將向分片集合寫入資料,這樣你才能觀察塊的排列和移動。這是MongoDB分片的要素。每個示例文件都表示一個電子表格,看起來是這樣的。
{
_id:ObjectId("4d6f29c0e4ef0123afdacaeb"),
filename:"sheet-1",
updated_at:new Date(),
username:"bank",
data:"RAW DATA"
}
請注意,data欄位會包含一個5KB的字串以模擬原始資料,通過Ruby驅動向叢集中寫入文件資料。改指令碼接收一個迴圈次數作為引數,每個迴圈都會為200個使用者各插入5KB的文件,指令碼的原始碼如下:
require 'rubygems' require 'mongo' con=Mongo::Client.new(["localhost:40000"],:database=>'cloud-docs') col=con[:spreadsheets] data="abcd" * 1000 def write_user_docs(iterations=0,name_count=200,data,col) iterations.times do |n| name_count.times do |n| doc={:filename=>"sheet-#{n}", :updated_at=>Time.now.utc, :username=>"bank", :data=>data } col.insert_one(doc) end end end if ARGV.size == 0 puts "Usage :insert.rb [iterations][name_count]" else iterations=ARGV[0].to_i puts iterations if ARGV[1] && ARGV[1]=~/^d+$/ name_count=ARGV[1].to_i else name_count=200 end puts name_count write_user_docs(iterations,name_count,data,col) end
在伺服器上執行ruby insert.rb。執行插入時截圖如下:
執行結束後,分別檢視兩個分片,連線mongo -port 30001和mongo -port 30100,連線了shard-a的從節點,和shard-b的主節點。分別查詢分片中對應的文件個數。shard-a從節點查詢結果如下圖
shard-b的主節點查詢文件結果如下:
根據結果分析,發現shars-a的分片上儲存了198個文件,shard-b的分片上儲存了2個文件。實現了資料的分片操作。
若再次執行insert.rb指令碼,執行完成後,再次檢視shard-a和shard-b。發現shard-a的文件數為398,shard-b的文件數為2