簡體   English   中英

MongoDB中的受控數據分片

[英]Controlled data sharding in MongoDB

我是MongoDB的新手,我對其分片概念有非常基本的了解。 但是我想知道是否可以自己控制數據分割? 例如,一部分記錄將存儲在一個特定的碎片上? 這將與rails應用程序一起使用。

您可以關閉平衡器以停止自動平衡:

sh.setBalancerState(false)

如果你知道你是在分裂您還可以在關鍵的范圍內預裂您的數據范圍為所需的服務器看到預裂例子 碎片的管理將通過javascript shell完成,而不是通過rails應用程序完成。

你應該注意沒有碎片會有更多負載(變熱),這就是為什么默認情況下會有自動平衡,使用像免費彩信服務這樣的監控可以幫助你監控。

碎片的決定是一個復雜的決定,你應該考慮很多。

有關分片的知識有很多,其中大部分都是不明顯的。 我建議通過以下鏈接查看信息:

在分片群集的上下文中,塊是分配給特定分片的連續范圍的分片鍵值。 默認情況下, 為64兆字節(除非按上述方式進行修改)。 當它們超出配置的塊大小時,mongos將塊拆分為兩個塊。 MongoDB塊是邏輯的,其中的數據不是物理上位於一起。

正如我所提到的,平衡器會移動塊,但是,您可以手動執行此操作 如果每個分片上的塊數之間存在足夠大的差異(最小值為8),則平衡器將決定重新平衡並請求塊遷移。 塊的實際移動在“From”和“To”碎片之間進行協調,並且當完成時,從“From”碎片中移除原始塊並通知配置服務器。

相當多的人也預先拆分,這有助於他們的遷移。 有關更多信息,請參見此處

為了查看在兩個分片之間拆分的文檔,您需要插入足夠的文檔以填充第一個分片上的幾個塊。 如果您尚未更改默認塊大小,則需要插入至少512MB的數據才能查看遷移到第二個塊的數據。 測試這個通常是一個好主意,你可以通過將塊大小設置為1MB並插入10MB數據來實現。 以下是如何測試此示例的示例。

可能http://www.mongodb.org/display/DOCS/Tag+Aware+Sharding在v2.2中解決了你的要求
查看Kristina Chodorow的博客文章也是一個很好的例子: http//www.kchodorow.com/blog/2012/07/25/controlling-collection-distribution/

如果mongo DB自動為您執行此操作,您為什么要自己拆分數據?您可以升級rails應用程序層以與mongos實例通信,以便mongos將任何CRUD操作的調用路由到數據所在的位置。 這是使用配置服務器實現的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM