繁体   English   中英

适用于Azure多租户应用程序的云数据库?

[英]Cloud database for Azure multi-tenant application?

我开始将一个旧的桌面单租户应用程序移植到云中,并希望听到您对基于云的多租户应用程序的数据库有何建议?

我的基本要求很简单:

  1. 对于每个租户,其数据都与任何其他租户的数据分开。 我可以轻松备份,还原和导出一个租户的数据,而不会影响其他租户。
  2. 我真的不想关心业务逻辑代码中的多租户。 它看起来像是安全层后面的单个租户应用程序,没有租户ID传递等。
  3. 使用LINQ等成熟技术可以轻松查询。
  4. 可用性和可伸缩性当然很容易设置副本,故障转移以及放大和缩小等。

我已经对多租户应用程序开发进行了一些调查。 我注意到来自Azure和AWS的SQL数据库都非常昂贵(仅SQL数据库实例的成本就接近原始应用程序的许可费用),因此我绝对不能为租户使用单独的SQL数据库实例。

现在,我正在阅读本书《 为云开发多租户应用程序》(第3版) ,它使用Azure存储服务来实现多租户。 我还没有读完这本书,看来您仍然必须自己处理多租户,示例代码已经过时了。

我已经看到很多SO问题,将Azure Table Storage与MongoDB进行比较。 MongoDB对我来说是一个新手,不确定是否可以轻松地使用它来满足我的要求?

我也看到过RavenDB,它确实支持开箱即用的多租户。 但是我没有看到有关如何在Azure应用程序开发中使用它的一些很好的示例代码。

希望能听到很棒的SO家伙的一些好的建议。

我最好选择在MongoDB之上使用RavenDB。 甚至Raven还是游戏的新手,它也支持传统SQL支持的大多数功能。

同样,要制定决策,您正在处理的数据量也是关键的决策指标。 以及您期望的流量。

还请记住运营成本和开发工作。 当您使用Raven或Mongo时,HA和DR方案可能会出现问题,因为您需要托管它们。 但是当涉及到Azure存储时,默认情况下,它会通过维护3个信息副本来最大程度地保护您。

因此,我建议您仔细权衡取舍,并根据您的业务需求,成本优化,开发和运营努力明智地选择。

每个租户只有一个应用程序实例是实现应用程序的非常昂贵的方法,但是我意识到,如果开发一个应用程序时只考虑一个租户,那么转换的成本可能会很高。

首先,我们可以从一个为什么您的桌面应用程序连接到另一个位置的数据库开始。 延迟确实会减慢应用程序的速度。 理想情况下,您需要本地安装的数据库,并使其与云数据库同步,或者在应用程序中添加适当的缓存。

但是,数据库仍需要区分客户端。

为什么需要此文件才能访问云数据库? 是出于备份目的,不是在客户端计算机上本地安装数据库,还是从多台计算机或其他设备访问相同数据?

除非您的应用程序非常大,否则我建议将其用于多租户重写到一个SQL Azure数据库。 在项目开始时选择的体系结构现在不适合您的要求。 随着扩展,您将遇到更多问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM