问题标签 [azure-elastic-scale]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
897 浏览

c# - 具有弹性池的实体框架。如何管理我的 SaaS 客户端数据库?

我目前正在寻找在 Azure Cloud 上托管的 ASP.Net 中构建 SaaS。我正在寻找有关如何最好地构建我的数据库和与之配套的实体框架的建议。客户在 Web 应用上注册后,该应用需要在我的 Azure SQL 服务器上为每个客户创建一个单独的数据库。

我已经开始研究弹性池的选项,但它让我很困惑。简单介绍一下我的数据库,它有一个用于所有常规设置的“元”数据库。然后每个客户都有一个包含他的投资组合的数据库。

例子

带有表格(货币、股票、债券)的数据库 [设置] [

[Customer1] SomeFinanceProduct [Currency as foreign, stock as foreign], SomeOtherFinanceProduct [Currency as foreign, bond 作为外币]

[Customer2] SomeFinanceProduct [Currency as foreign, stock as foreign], SomeOtherFinanceProduct [Currency as foreign, bond 作为外币]

[客户3]等

我会感谢更有经验的开发人员的一些帮助。非常感谢,这对我来说是一个重要的问题。我还发现了 2015 年的这篇文章,他们说解决方案很快就会发布,但我在网上没有找到任何东西。

0 投票
1 回答
250 浏览

azure - 使用 Elastic Query 更新弹性池 Db 中的一行表

我有一个 SQL Server,我在其中创建了“n”个具有相同架构和表的弹性池 DB。我想像使用弹性查询一样更新弹性池数据库Column1中表中的列。可能吗?如果是,请提供样品。table1ElasticDB1

0 投票
1 回答
367 浏览

sql - 在 Azure 数据库中实现多租户的最佳方法是什么

我们计划在 Azure 云中实现多租户应用程序。我正在寻找一种在数据库级别实现此功能的最佳方法。DB 模式非常庞大,我们有 100 多个表分布在多个模块中。并且每个客户端的数据大小都不同。对于某些人来说,表中可能有 100 行。但对于某些人来说,它可能是数百万行。在这种情况下实施 Elastic DB 的最佳方法是什么?

在这种情况下我如何设计分片?每个分片或租户列表的单个租户?如果我为每个分片创建一个租户列表,并且相邻的租户有很多数据,那么它就会人满为患。我们如何有效地找到分区的分片键?

如果我每个分片单租户,我可以根据数据大小扩展单个分片吗?

有没有人遇到过这样的场景?请帮我提供一些示例链接?

谢谢您的帮助!

0 投票
1 回答
126 浏览

sql-server - 如何通过 Azure Elastic Sc​​ale 查询复制的分片数据库?

我正在将现有解决方案转换为使用多租户分片而不是单个数据库。

我的主数据库被复制到辅助 Azure 区域(活动异地复制)。我们使用这个复制的数据库来获取一些数据以减少主数据库的负载。

我想将所有分片与 Shard Manager 数据库一起复制,以便我可以通过复制的 Shard Manager db 连接到复制的租户数据库。

问题是复制的 Shard Manager 数据库仍然返回与位于主数据库服务器上的分片的连接。

有什么方法可以强制复制的 Shard Manager DB 返回到复制的分片的连接?

0 投票
1 回答
467 浏览

azure - 每个客户的单个 DB 的 Azure 分片映射管理器连接池

分片映射管理器是创建一个连接池来管理所有 sql 连接,还是在每个客户场景一个数据库的情况下为每个唯一的连接字符串/分片/数据库生成一个新池?

连接多个数据库的应用程序将导致池碎片并消耗服务器中的大量内存。微软建议记住这一点,甚至在下面的链接中提出了一个解决方案,但我不确定他们是否在他们的分片映射管理器中使用了这种做法:

https://msdn.microsoft.com/en-us/library/8xx3tyca(v=vs.110).aspx

0 投票
1 回答
711 浏览

c# - 无法使用 Azure SQL Elastic Sc​​ale 删除分片映射

我们的系统中有一个实体,称为“身份程序”。这也是我们的分片边界,每个身份程序都存储在自己的分片中,所以分片的标识符就是身份程序的标识符。

我们正在实施物理删除身份程序的能力。作为该过程的一部分,我们要清理分片映射。为此,我编写了以下内容:

问题是当它DeleteMapping调用它时会出现异常:

ShardManagementException:在分片映射“IdentityProgramIdListShardMap”中引用分片“[shard-connection-string]”的映射不存在。为操作“RemovePointMapping”执行存储过程“__ShardManagement.spBulkOperationShardMappingsGlobalBegin”时出错。如果另一个并发用户已经删除了映射,则可能会发生这种情况。

但是映射并没有被删除,因为在那之后我执行:

而且我可以看到 shardmap 条目仍然存在,并且标记为 Offline。

如果我删除对我的调用,MarkMappingOffline我会收到一个异常,指出无法删除分片映射,因为它是在线的。

所以我似乎有一个catch-22。如果我将其标记为离线,它会认为分片映射已经消失并且不会让我删除它。如果我没有将其标记为离线,它会告诉我它必须离线。

0 投票
2 回答
2273 浏览

azure - Azure SQL Server 弹性池 - 自动将数据库添加到池中

目前我们有一个 Azure SQL Server,每次创建新的 Web 应用程序时,我们都会使用 EF Core Code First 来生成数据库。但是,在创建数据库后,我们手动转到 Azure 门户并将新创建的数据库添加到 Azure SQL Server 内的弹性池中。是否有可能以某种方式自动化该过程,以便通过门户或使用 EF 或其他方式生成的每个新创建的数据库都会自动添加到池中?

0 投票
1 回答
99 浏览

azure-sql-database - 如何在不更改弹性查询的情况下添加新数据源?

我们有一个场景,我们希望使用 Azure Elastic Query,以便允许我们在地理上分布的多个数据库上运行聚合查询,并且可能会随着时间的推移而添加。但是,在添加或删除数据源时,我们还找不到有用的文档或建议如何设计和运行无需修改(手动)即可可靠运行的 Azure 弹性查询。

非常欢迎有此数据库技术经验的人提供任何建议。

作为进一步的具体限制,不同的源数据库都是 SQL Express DB - 我们正在考虑将它们映射到在线 Azure SQL 实例 (PaaS)。

更新:我在这里看到过类似的问题,但正在寻求更好的答案。

0 投票
0 回答
105 浏览

azure - 列表分片映射。UpdateMapping 抛出异常 LockOwnerId 不能为 Null

我尝试了不同的方法并用谷歌搜索了很多错误,但到目前为止还没有运气。

我正在尝试创建一个可以更新现有分片映射的函数,但出现以下异常。

虽然我创建了 Create Shard 和 Delete Shard 功能,但它们工作正常。但是在更新或创建映射时出现上述错误。

以下是我的代码:

无论是否提供令牌,我都会遇到相同的错误。然后我也尝试以这种方式提供令牌 MappingLockToken.Create(),但随后我得到不同的错误,即未提供正确的令牌。这也很明显,因为令牌不同。

我还检查了数据库中 [__ShardManagement].[ShardMappingsGlobal] 表中的 LockOwnerId,这是 ID = 00000000-0000-0000-0000-000000000000

我虽然收到空插入错误,因为令牌 ID 为零,所以我通过执行更新查询将其手动更新为数据库中的 451a4da0-e3d4-42ac-bdc3-5b57022693d0。但它不起作用,我得到相同的无法将值 NULL 插入列“LockOwnerId”错误。

在创建新映射时,我也面临同样的 Null 错误,并且在代码中我没有看到在创建映射时提供令牌的位置。以下是代码。

我在谷歌上搜索了很多并下载了一些示例应用程序,但我找不到解决方案。我将非常感谢任何形式的帮助。

0 投票
1 回答
68 浏览

.net - 每个租户的数据库托管建议(高可扩展性)

我们目前正在生产一个具有每个租户逻辑的数据库的 Web 应用程序。我们当前的数据库设置都托管在具有单实例免费 SQL 快速版本的单个 VM 上。

所有数据库都是在服务器端动态创建的,并在每次经理注册时添加到同一个实例中。

但是,考虑到新 SQL 版本的成本、与具有多个数据库的一个实例相关的性能问题、未来的开发和管理,我预计在不久的将来我们可能会遇到高可扩展性的问题。

我正在考虑从 Azure 切换弹性池结构,因为我们现在没有很多客户端,但我真的不知道它是否对一开始的价格和可扩展性有益。

为了拥有超过 100 个客户,使用弹性池更改我的结构是否有益?

谢谢!