2016-03-03 83 views
2

我正在安裝與ArangoDB的集羣分區。我需要在集合中使用索引。在ArangoDB中動態添加分片密鑰

我們假設我們有一個名爲myCollection的集合,它是使用分片鍵_key創建的。

myVariablemyCollection的唯一密鑰,所以我對myVariable有一個唯一的約束。

myCollection創建,數據在裏面。

我不想刪除所有,再創myCollection並添加新的片鍵與myVariable和恢復myCollection,所以我需要添加一個新片段關鍵dinamically同時該myCollection已創建。

這可能嗎?不知何故,我可以添加新的分片鍵嗎?

我的意思是,在沒有重新創建收藏的情況下在_shardBy標籤中添加標籤。

感謝您的幫助。

+0

答案是否滿足您的需求?如果沒有,缺少什麼?如果,你能否接受它? – dothebart

回答

1

不,創建後更改分片鍵不受支持。如果你看看這會帶來的後果,它會很容易理解爲什麼:

分片鍵標識協調器哪些文檔應該在哪個集羣節點上結束。反之亦然,因此可以預測在哪裏搜索基於分片鍵的文檔。如果您將該條件更改爲新條件,此假設將失敗。因此,不符合條件的文檔將不得不移動到正確的新分片。

如您所見,您需要處理所有文檔。所以,如果你不想將所有數據下載到客戶端,就如福克斯服務協調一些JavaScript可能會填補這一空白:

  • 創建新的集合與合適的片鍵
  • 獲取所有_key s到內存中
  • 發出重複AQL查詢,從舊集合中選擇一個範圍並將其插入到新集合中。

如果您不想爲此使用現有設置,則可能需要啓動其他協調器。

提示:升級到ArangoDB 3.0無論如何都需要一個轉儲/恢復週期 - 所以如果你可以推遲你的問題一點,你可以解決它。