我目前希望在ASP.Net中构建一个ASP.Net,托管在Azure上。我正在寻找关于如何最好地构建我的数据库和实体框架的建议。一旦客户在web应用程序上注册,应用程序需要为我的Azure SQL服务器上的每个客户创建一个单独的数据库。
我已经开始研究弹性池的选项,但这让我非常困惑。为了告诉您一些关于我的数据库,它有一个“元”-database为所有的一般设置。然后每个客户都有他的投资组合的数据库。
示例
表的数据库设置(货币、股票、债券)[ Customer1 SomeFinanceProduct货币为外国货币,股票为外国货币,SomeOtherFinanceProduct货币为外国货币,债券为外国SomeFinanceProduct外币,股票为外国货币,SomeOtherFinanceProduct货币为外国货币,债券为外国货币等。
我希望更有经验的开发人员提供一些帮助。非常感谢,这对我来说是一个重要的问题。我还找到了2015年的这帖子,他们说这个解决方案很快就会发布,但我没有在网上找到任何东西。
发布于 2017-03-30 22:37:44
我不能对你问题中的实体框架部分说太多,但是,我可以对事物的弹性池边说话。
需要注意的是,Azure弹性池只是一个计费和资源分配结构。就您的应用程序或其代码而言,如果使用弹性池,则没有什么区别。仍然有一个数据库,它驻留在服务器上,而该服务器(以及间接的,更确切地说,在Azure的情况下,该数据库)有资源限制。
在Azure中,您通常会创建一个数据库并选择服务或定价层。您可以用X美元来交换该数据库的Y资源(CPU、内存、存储大小、连接计数等)。您对创建的每个数据库都重复此操作。随着时间的推移,数据库的大小或使用量都在增加,它们的要求也越来越高,因此您必须在发生这种情况时单独更改每个数据库的服务层。随着您拥有越来越多的数据库,这将变得乏味和成本无效。
有了弹性池,您可以使用任意数量的单个数据库,放弃单个服务/定价计划,而是购买一大桶资源,即弹性池,并将这些资源提供给所有数据库。理论上说,通过这种方法,你需要更少的资源,这样你就可以省钱了。它也能更好地利用你正在购买的资源。
您需要的资源较少的原因是,数据库通常在不同的时间经历高峰需求。当您单独购买资源时,您必须在每个数据库上过度购买以处理峰值(这意味着您有大量浪费的资源只是闲置在那里)。在弹性池上,由于所有数据库都在池中,所以您只需要购买足够的额外资源,这将覆盖您通常同时进行的多个高峰;现在空闲浪费资金的资源减少了。
正如我提到的,使用弹性池的另一个好处是您可以更好地利用您所拥有的资源。考虑一个对它的需求非常低的数据库,您自然会为它购买一个小的(因此也是便宜的)计划。然后考虑一个对它有很高要求的数据库;您可能会购买一个拥有更多资源的计划。现在,低使用率的数据库偶尔会大受欢迎。由于计划规模小,资源不足,性能严重下降。同时,另一个数据库拥有大量的资源,其中许多资源正在被使用。如果正在经历异常高峰的小型数据库能借几分钟这些资源,那不是很好吗?弹性泳池就是这么做的!弹性池有很多内置的可伸缩性为您的应用程序赢!
最后要注意的是,弹性池比常规数据库的单位资源成本更高。这意味着有一个盈亏平衡点,使用弹性池的成本更高,直到您有了足够的数据库才有价值。为了满足我的需要,我发现10到15个数据库是一个相当不错的平衡点。一旦你有足够的,创建池。然后,当您稍后将更多的数据库添加到池中时,“每个数据库”的成本开始下降得更多。
--
因此,为了回到您的问题,弹性池不会具体影响您在项目中使用实体框架的能力。无论您是否选择集中数据库,您都必须让代码根据登录的人来与特定于客户的数据库进行对话。
发布于 2017-02-23 14:38:13
你想要一个弹性游泳池,每个房客都有碎片。
这个链接描述了在多租户场景中可用于管理和查询切分数据库的工具。请按照第一段中的链接获得每一段的详细信息。
https://stackoverflow.com/questions/42411694
复制相似问题