2016-09-28 89 views
2

爲了提供寫入縮放,我決定將獨立mongoDB轉換爲分片羣集。問題是我找不到具有高度隨機性的分片密鑰,以確保集羣的寫入操作均勻分佈,並且只要所有集合中存在複合唯一索引,我就不能使用散列分片密鑰。如何分割數據?

我看到2個解決方案:

  1. 要使用唯一索引作爲片鍵的前綴。但是即使忽略了不好的分配,也是不可接受的,因爲不知怎麼所有的塊都放在主碎片上,然後平衡器將它們分佈在碎片上。當我使用散列分片鍵時,負數放在第1個分片上,正數放在第2個分片上。我如何強制mongoDB使用範圍分佈在兩個碎片上分配塊?

  2. 使用標籤感知分片。但是我無法預測下個月的數據,所以未來我的標籤可能會分佈不均勻。我想沒有便宜的自動化數據標記解決方案。

您是否知道具有複合唯一密鑰的集合的任何分片解決方案?

+0

是時間局部性對你很重要?如果是這樣,使用便宜的選項,並與時間戳。 – wulfgarpro

+0

我不確定我是否有。你的意思是使用時間戳列作爲標記嗎?不幸的是,我們的「時間戳」是真正時間戳的小時截斷。是否會導致「熱碎片」? – versificator

+0

[This](https://www.mongodb.com/blog/post/on-selecting-a-shard-key-for-mongodb)是一個很好的寫作。 – wulfgarpro

回答