2016-11-24 125 views

回答

1

分片簇總是有一個主碎片,和一個或多個次級碎片。

請讓我再知道如果數據庫是分片則在 該數據庫將分片

不,你收藏的默認沒有將分片的所有集合。所有這些藏品完全停留在主要碎片上。要分片收集,使用shardCollection命令

還請確認是否分片聚集查詢將在 多臺服務器上運行,並交付結果快。

在分片環境中定義集合時的一件重要事情是shard key。你應該確保選擇一個好的分片密鑰,它負責分佈整個分片的數據。因此,如果你選擇一個好的分片密鑰,你可以期望比非分片環境更好的性能。

如果是的話聚合查詢如何運作。

聚合查詢被$match拆分爲不同的分片,具體取決於文檔存在的位置,並最終在分片上合併在一起。一個好的閱讀是https://docs.mongodb.com/v3.2/core/aggregation-pipeline-sharded-collections/

+0

謝謝@hyades,請澄清一下,在不同的分片上分片和運行查詢是什麼意思在mongodb中。問候,克里斯 – chiku

1

聚集管線支持在分片集合操作。

如果流水線在分片鍵上以精確的$匹配開始,則整個流水線僅在匹配的分片上運行。以前(版本3.2之前),管道將被拆分成兩部分,合併工作必須在主碎片上完成。

對於必須在多個分片上運行的聚合操作,如果操作不需要在數據庫的主分片上運行,這些操作會將結果路由到隨機分片以合併結果以避免主分片過載爲那個數據庫。 $ out階段和$ lookup階段需要在數據庫的主碎片上運行。

將聚合管道拆分爲兩部分時,管道將被拆分以確保分片儘可能多地執行多個階段並考慮優化。

參考: https://docs.mongodb.com/manual/core/aggregation-pipeline-sharded-collections/

+0

非常感謝@Clement – chiku