目前,我有一个原型在本地计算机上的IIS中运行,并使用SQL Server Express 2005将数据存储在三个SQL表中。我使用最多使用这三个表中的两个表的事务来运行查询。
现在我需要将我的原型移动到Windows Azure,无法决定选择哪一个-SQL Azure还是Azure表存储。
它们的比较如何?我如何决定选择哪个?
Windows Azure的SQL数据库是一个关系数据库,包含关系数据库中的所有内容(多个索引、存储过程、强大的查询等)。Azure表存储是一个非关系的、可大规模扩展(每个帐户最多100TB)的存储设施,实体通过分区键(实体的主机代管)和行键定位。
如果你想拥有一个非常简单的存储机制,而不需要复杂的关系操作,Azure表存储将非常好地工作。
2012年6月7日编辑:更新为春季版定价也存在成本差异。SQL数据库100MB的起价为4.99美元,可按分层规模扩展(5GB约26美元,50GB约125美元,150GB约225美元),但没有交易成本。Azure表存储的运行成本为0.125/GB(或0.09/GB,无地理复制),随着数量的增加,每GB的价格会下降,但交易成本为0.01/100000美元(对于低容量系统来说是正常的,但对于非常高容量的系统来说可能很重要)。完整的定价细节在这里。
MSDN杂志最近有一篇文章详细介绍了用例、差异等。
如果您要直接迁移现有的数据库,SQL数据库将与SQL Server Express 2005中的数据库非常匹配。然而,由于目前它只是一个原型,因此值得重新评估您的需求。
"如何决定选择哪个?"
好问题。
你必须弄清楚你关心什么,并根据彼此的选择进行评估。
在我看来,关键的区别在于SQL Azure的可扩展性不如表存储。如果你预计会有大量访客,你的数据库可能无法跟上,并成为阻止你进一步扩展的瓶颈——在云中,你可以不断添加前端服务器,直到你的信用卡出血,但一旦你使用了"大型"数据库服务器,你就无处可去了。
(但事实并非如此——您还可以找到一种跨多个数据库服务器划分应用程序的方法)。
因此,如果你关心可扩展性,你可能想使用表存储——它没有SQL Azure那样的可扩展性限制。
然而,这种可伸缩性的成本也是你可能关心的问题——你基本上必须从头开始构建你的应用程序才能使用表存储,而且你必须重新创建从关系数据库中免费获得的很多东西。例如,事务的工作方式并不像您所期望的那样。
所以,如果它只是一个原型,而你并没有明确打算成为下一个Facebook,我会留在SQL Azure,直到可扩展性的痛苦变成现实。