我在C#上运行了一个电子商务应用程序。此应用程序的每个实例现在都有它自己的:
我的搭档告诉我,我们需要抛弃这种方法并转移到云端。 似乎SQL Azure每个数据库收费。因此,采用这种方法对我们来说是非常昂贵的。 我们是否可以使用单个巨型数据库而无需重新编写整个数据访问层? * 或者有一种廉价的方式来拥有数百个小型SQL Azure数据库吗? *
注意:每个数据库仅约20 MB
答案 0 :(得分:2)
是的,SQL Azure会按每个数据库收费,但您真正支付的是数据库的大小。例如,一个1GB的数据库将花费你9.99美元和一个月,一个10GB的数据库将花费你每月99.99美元。 SQL Azure中的数据库当前最大大小也为50GB。
基于此以及您对应用程序(可能是数百个DB)所说的内容,并假设每个数据库将包含足够的数据来支付1GB的DB值,我会继续使用一个每个实例的数据库。
如果每个实例的数据实际上非常小,即使您有数百个实例也不会达到50GB限制,那么通过对数据进行分区并将其存储在一个数据库中可以节省资金(但不是时间)
如果费用是您最关心的问题而且您正在考虑重写,我会考虑使用Azure表存储(AZT),其中相同的1GB数据每月将花费0.15美元来存储(但您必须提供关于外键和查询的小东西,其中包含多个表格)
答案 1 :(得分:1)
每个数据库20MB,您将在一个1GB Azure数据库中覆盖大约50个此类数据库。
使用新的数据库大小,您的下一个大小为5GB,并且您的计费每天按照给定日期使用的最大存储量进行摊销。因此,对于1GB以下的时间,您需要支付1GB的费用(每月每月9.99美元)。一旦超过1GB,您将转移到5GB级别(每月49.95美元/天)。这比拥有50个1GB数据库要便宜得多,这些数据库大约可以运行。每月500美元。
要合并您的数据库,您需要某种类型的客户ID或实例ID,您必须将其添加到表中,以便为租户提供分区。
我看到了knightpfhor关于转移到Table Storage以节省成本的另一个建议。虽然表存储比SQL Azure存储便宜,但这可能是主要的应用程序更改,因为表存储是非关系的,并且没有存储过程或您通常从SQL Server获得的任何其他支持。添加分区/客户密钥比批量存储层重写要小得多。