0

我试图找到我们如何使用内置的 AdoNetStorageProvider 按租户实现存储分片。我们正在为本地 SQL Server 进行规划。

例如:

  • 属于租户 1 的谷物应该保留到分片 A
  • 属于租户 2 的谷物应保留到分片 B
  • 属于租户 3 的谷物应该坚持到分片 A

我们的分片功能将指示使用哪个分片。为此,分片功能根据粒度扩展键从数据库中获取粒度分片。(所以不应该全部都在配置文件中,因为分片的数量很少改变,但经常添加新租户)。如果这可以通过一些内置框架来实现,那就更好了。

根据https://dotnet.github.io/orleans/Documentation/Core-Features/Grain-Persistence.html?q=sharded#shardedstorageprovider shardedstorageprovider 将根据散列函数在分片中平均分配(分片)数据。这没有达到这个目的。碎片可能(或可能不是)地理定位。

github 中的分片示例是指 Azure 上的 Elastic SQL Client,据我了解,它不适用于 SQL Server。

我知道我们可以编写自己的存储提供程序。但只要有可能,我们就会尽量保持核心。

4

1 回答 1

0

根据项目 Gitter 的答案,没有内置的按租户分片的能力。

实现这一点的方法是从https://github.com/dotnet/orleans/blob/master/src/OrleansProviders/Storage/ShardedStorageProvider.cs派生 并覆盖 HashFunction 方法。感谢@SebastianStehle

于 2017-11-15T11:23:11.643 回答