2013-06-23 44 views
2

當您在分片環境中使用RavenDB時,文檔ID將包含分片ID,如europe/companies/21。它也記錄on the RavenDB siteRavenDb分片和文檔ID

ModifyDocumentId:讓您存儲的碎片ID爲 文檔本身中的文檔。默認的實現是:(慣例,shardId, documentId)=> shardId + convention.IdentityPartsSeparator + documentId

通過這樣做,我猜RavenDB是搞清楚智能查詢技術,可以專門針對適當的碎片這很棒。但是,我有幾個問題我無法回答:

  • 如果我需要將文檔移動到新的碎片,那麼該怎麼辦?這會改變密鑰並破壞使用該密鑰的URL,如問here

  • 我可能只從一臺服務器開始,然後我可能決定實施分片。所以,在這種情況下,鍵會改變(?)或者智能查詢不起作用(?)。

關於這些問題的一般建議是什麼以及這些問題是如何解決的?

回答

1

如果您在分片之間移動文檔,您需要修改分片功能以瞭解它。如果文檔可能駐留在多個分片上,RavenDB可以,但您必須確保它並不在多個分片上。

如果您只從一臺服務器開始,我建議您仍然在同一臺服務器上的不同dbs上進行分片。

+0

感謝您的回答。無論如何改變分片環境中的id代?我希望我的ID看起來像'countries/1001',其中前3位是碎片ID。在我們的例子中,分片ID是100,文檔ID是1. – tugberk

+0

是的,你可以這樣做,查看ShardStrategy上的ModifyDocumentId –