2013-06-19 34 views
-47
  1. 分片鍵必須是唯一的
  2. 集合上必須有一個以分片鍵開頭的索引。
  3. Mongo無法對分片鍵本身以外的分片集合執行唯一索引。
  4. 任何不包含分片鍵的更新都會發送到所有分片。
  5. 如果您願意,您可以更改集合上的分片鍵。

我選擇了1,2,4提交答案但錯誤。 有人可以幫我哪一個適合這個分片鍵嗎?以下哪些陳述對選擇和使用分片鍵是正確的?

+7

分片鍵不必是唯一的,基本上2,3和4是正確的答案 – Sammaye

+25

來自MongoDb大學課程的作業問題。我認爲如果你要解釋你的推理,這個問題會更合適,而不是在多項選擇問題上尋找簡單的驗證。 – Dawson

回答

62
  1. 的碎片鍵必須是唯一

不正確的。

  1. 集合上必須有一個以分片鍵開頭的索引。

正確。

所有分片集合都必須有一個以分片鍵開頭的索引。

https://docs.mongodb.org/manual/core/sharding-shard-key-indexes/

  • 蒙戈不能在比所述片鍵本身以外的分片集合執行唯一索引。
  • 正確。

    對於分片集合,這些唯一索引無法實施唯一性,因爲插入和索引操作對於每個分片都是本地的。

    https://docs.mongodb.org/manual/tutorial/enforce-unique-keys-for-sharded-collections/

  • 不包含分片密鑰的任何更新將被髮送到所有的碎片。
  • 正確。 Mongos將無法確定哪個分片包含所有相關條目。

    1. 如果您願意,您可以更改集合上的分片鍵。

    不正確。

    分片鍵是不可變的,插入後無法更改。有關更多信息,請參閱分片羣集的系統限制。

    https://docs.mongodb.org/manual/core/sharding-shard-key/#sharding-shard-key

    +0

    你可以添加(3)的引用:http:// docs .mongodb.org /手動/教程/執行器唯一密鑰換分片的集合/ –

    5

    我認爲你說得對1 2,但3也是一個基於這個頁面的答案,如果我閱讀它的權利。

    mongo manual

    在許多方面,你能想到的片鍵集羣範圍內唯一的指標。但是,請注意,除非唯一字段位於分片鍵中,否則分片系統無法強制執行集羣範圍的唯一索引。

    另外5絕對不是答案。

    mongo sharding commands

    此外,shardCollection後,不能更改碎片鍵或修改您的碎片關鍵指標使用的任何字段的值。

    4不是一個答案,因爲默認情況下,更新將僅更新一個記錄

    mongo update

    更新()方法是用於修改文件的MongoDB中的主要方法採集。默認情況下,update()方法更新單個文檔,但通過使用多選項,update()可以更新與集合中的查詢條件相匹配的所有文檔。

    看起來2也是錯誤的。

    mongo indexes

    在分片集羣,如果你不使用_id字段作爲片鍵,那麼你的應用程序必須確保值的唯一的_id領域以防止出現錯誤。這通常是通過使用標準的自動生成的ObjectId來完成的。

    +0

    我越來越錯了答案選擇選項1,2,3選項。 – Suresh

    +0

    嗯看起來我們都錯了2. 索引不一定是分片鍵。 「 」在分片羣集中,如果您不使用_id字段作爲分片密鑰,那麼您的應用程序必須確保_id字段中的值的唯一性以防止錯誤。這通常是通過使用標準自動分配生成ObjectId「。 – sisharp

    +0

    沒有2是正確的,該陳述只是說如果你正在使用你自己的分片鍵會發生什麼,你必須有一個索引集合是分片鍵或與它對齊 – Sammaye

    2

    我覺得nswer是2,3,4,我認爲首先是錯誤的,因爲它只是要

    2

    正確的答案是選擇2,3,4 :)

    3
    1.The shard key must be unique 
    2.There must be a index on the collection that starts with the shard key. 
    3.Mongo can not enforce unique indexes on a sharded collection other than the shard key itself. 
    4.Any update that does not contain the shard key will be sent to all shards. 
    5. You can change the shard key on a collection if you desire. 
    

    答案是2,3,4選項

    1

    答案是2,3,4,但我看到的問題是,如果我沒有記錯的4只如果多選項爲真則有效。如果錯誤或未指定,更新應該失敗,因爲mongos不知道將哪個分片放入文檔。