Nosql RavenDb分片和文档ID

Nosql RavenDb分片和文档ID,nosql,ravendb,sharding,Nosql,Ravendb,Sharding,在分片环境中使用RavenDB时,文档id将包括分片id,如europe/companys/21。它还记录了: ModifyDocumentId:用于将文档的碎片id存储在 文件本身。默认实现是:(约定,shardId, documentId)=>shardId+convention.IdentityPartsSeparator+ 文档ID 通过这样做,我猜RavenDB正在研究智能查询技术,并且可以专门针对合适的碎片,这非常好。但是,我有几个问题无法回答: 如果我需要将一个文档移动到一个新的

在分片环境中使用RavenDB时,文档id将包括分片id,如
europe/companys/21
。它还记录了:

ModifyDocumentId:用于将文档的碎片id存储在 文件本身。默认实现是:(约定,shardId, documentId)=>shardId+convention.IdentityPartsSeparator+ 文档ID

通过这样做,我猜RavenDB正在研究智能查询技术,并且可以专门针对合适的碎片,这非常好。但是,我有几个问题无法回答:

  • 如果我需要将一个文档移动到一个新的切分块,怎么样?这将更改键并断开按要求使用该键的URL

  • 我可能只从一台服务器开始,然后,我可能决定实现分片。因此,在这种情况下,密钥将更改(?)或智能查询将无法工作(?)


关于这些问题的一般建议是什么?这些问题是如何解决的?

如果在分片之间移动文档,则需要修改分片功能以了解它。RavenDB是可以的,如果一个文档可能驻留在多个碎片上,您只需确保它不同时位于多个碎片上


如果您只从一台服务器开始,我建议您仍然在同一台服务器上的不同dbs上进行分片。

谢谢您的回答。在分片环境中是否仍有更改id生成的方法?我希望我的id看起来像
countries/1001
,其中前3位是碎片id。在我们的例子中,碎片id是100,文档id是1。是的,您可以这样做,请查看碎片策略上的ModifyDocumentId