我正在设计一个将在Azure上运行并使用SQL Server的SaaS系统。该应用程序将利用Azure弹性数据库池来支持通过分片向外扩展。计划是运行Shared-Sharded模型并利用Shard Map将租户Id映射到正确的数据库。
我一直在阅读Azure文档,并在我的DEV环境中成功地跨几个测试数据库设置了一个弹性DB池。所以我知道如何实现和理论上这将如何工作。
我不清楚的是,在自己的Azure SQL服务器上创建每个Azure SQL数据库(分片)或只是运行一个具有多个数据库的服务器是否是最佳实践。我试图弄清楚,如果我在一台服务器上有30个数据库,而不是30台服务器上各有一个数据库,是否会有潜在的性能瓶颈。在这两种情况下,我都假设这30个数据库都是一个弹性池的一部分。
谁能帮我从概念上理解资源是如何分配的?所有的文档都谈到了分配给数据库的资源,而服务器从来没有提到过,所以我认为这是不相关的,在这种情况下只是一个容器。
这个问题是由我在物理SQL服务器上的大量经验所驱动的,在物理SQL服务器上,每个服务器上可以使用的数据库数量是有限的。
在发布后不久,我通过Azure测试回答了自己的问题。只能将同一数据库服务器上的数据库添加到同一个弹性池中。