RavenDb Sharding Hilo 存储模式
RavenDb Sharding Hilo storage pattern
我的理解是 RavenDb 的设计目的是如果一个分片出现故障,其他分片可以正常运行。
但最近我在实现 ShardingResolutionStrategy 时发现了 MetadataShardIdFor 方法。这是我们可以为每种文档类型指定用于存储的分片的方法。
因此,如果我没弄错的话,如果存储特定文档类型的 Hilo 的分片已关闭,我们将无法在其他分片上创建此类新文档(至少自动生成的 ID 将不起作用)。或者可能是我错了,希洛以某种神奇的方式在碎片之间复制?
分片设计为独立的,但为了创建一致的 ID,我们需要能够从一致的存储中创建它们。
因此,我们将拆分数据到多个节点和 HA 的概念分开。
典型的场景是元数据分片是独立的,是运行个复制的数据库,在所有分片节点上共享。以这种方式,如果您丢失了元数据分片,则只需切换即可。
这利用了 RavenDB 分片和复制是正交的事实
我的理解是 RavenDb 的设计目的是如果一个分片出现故障,其他分片可以正常运行。
但最近我在实现 ShardingResolutionStrategy 时发现了 MetadataShardIdFor 方法。这是我们可以为每种文档类型指定用于存储的分片的方法。
因此,如果我没弄错的话,如果存储特定文档类型的 Hilo 的分片已关闭,我们将无法在其他分片上创建此类新文档(至少自动生成的 ID 将不起作用)。或者可能是我错了,希洛以某种神奇的方式在碎片之间复制?
分片设计为独立的,但为了创建一致的 ID,我们需要能够从一致的存储中创建它们。
因此,我们将拆分数据到多个节点和 HA 的概念分开。 典型的场景是元数据分片是独立的,是运行个复制的数据库,在所有分片节点上共享。以这种方式,如果您丢失了元数据分片,则只需切换即可。
这利用了 RavenDB 分片和复制是正交的事实