普通与云/Azure 托管以及 SQL Azure 与 SQL Server 的作用

Posted

技术标签:

【中文标题】普通与云/Azure 托管以及 SQL Azure 与 SQL Server 的作用【英文标题】:Normal vs Cloud/Azure Hosting and role of SQL Azure vs SQL Server 【发布时间】:2012-01-07 22:13:26 【问题描述】:

首先让我明确一点,我不是网络背景,所以如果我对它的工作原理有任何理解不正确,请随时纠正我

假设我有一个网站,我想在云上托管,因为

- I don't want to take care of hardware
- I want to scale my website as needed

在这种情况下,我对SQL Server 的角色和SQL Azure 的角色有些混淆。

普通虚拟主机

当我想到一个普通的网站时,我知道我需要一个主机/服务器来托管我的网站。主机应该能够支持SQL Server。出于扩展目的,我将不得不在多个服务器上托管我的网站/ASP 页面。同样,如果我想扩大我的SQL Server,我必须将它托管在多台服务器上,并且必须通过某种机制确保所有服务器中的数据都是最新的。

基于云的托管

现在我想我也可以在Cloud/Azure 上设置类似的结构。如果是,在这种情况下我会使用云的真正功能吗?

或者我应该使用SQL Azure 而不是SQL Server?在这种情况下我会得到什么好处?我还要负责数据的扩展和一致性吗?我知道我可以通过设置虚拟机/实例的数量来扩展网站,但是数据库的扩展呢?

编辑 感谢Florin Dumitrescu,我想使用的术语是Scaling Out,因为我更关心性能,而不是我的数据库在大小方面有多大。我更关心数据库如何在不同的服务器/系统之间扩展以适应负载,从而带来更好的性能

【问题讨论】:

我认为您使用 scale up 术语不正确,而您实际上指的是 scaling out @Florin Dumitrescu 你说得对,我的意思是向外扩展 【参考方案1】:

正如 Yossi 所提到的,SQL Azure 是一种数据库即服务。因此,您只需要求对其进行配置,奇迹就会发生,并且您拥有一个从 1GB 扩展到 5GB、10GB 到 50GB 的数据库(在 SQL PASS 中很快将达到 150GB,announced)。 SQL Azure 的好处:您不必担心任何基础设施、服务器、许可等。您只需使用连接字符串进行连接。 SQL Azure 旨在可扩展以处理大量并发租户,因此您不必担心扩展问题。

SQL Azure 还在数据中心复制其数据,以提供“持久”存储。您仍然需要设计一个灾难恢复方案,以防数据中心不可用(您可以使用Data Sync 服务)。

就您的网站本身而言:当您扩展到多个实例时,每个实例运行相同的代码并使用相同的资源。更进一步,您可以将静态(不变)Web 内容(例如图像和 CSS)移动到 Blob 存储。与将它们与网站本身一起存储相比,这有几个优点:

能够启用 Content Delivery Network,这是一项全球边缘缓存服务,可为您的最终用户提供更好的性能 减轻您的网络服务器实例的压力,因为对这些图像的请求现在将被定向到 Blob 存储,这是一个与您的网站完全不同的 URL 无需重新部署应用即可更新图像或样式表 - 只需将新文件上传到 Blob 存储即可。

我强烈推荐Windows Azure Platform Training Kit,因为有一些实验室可以带您了解所有这些的基础知识,以及完整的代码示例。这几乎每月更新一次,与最新的 Windows Azure SDK 和工具保持同步。

【讨论】:

请注意,Sql Azure 数据库实际上不会无限扩展自身。此外,在幕后,SqlAzure 数据库在共享服务器上运行。 Microsoft 没有给出此类数据库的预期性能数字,但您可能会使用中等价位的本地专用服务器获得更好的性能。从 2011 年底开始,Sql Azure Federations 将可用,它们确实提供了一种扩展 Sql Azure 数据库的方法:social.technet.microsoft.com/wiki/contents/articles/2281.aspx @Florin - 如果您将数据库设置为使用商业版并且最大大小为 50GB,则数据库将自动增长,并在当前使用层每天向您收费(以 10GB 为增量) )。如果您将最大大小设置为 5GB,则与 Web 版相同。随着数据库在 1GB 以上和以下的增长和缩小,您的每日计费将相应调整。 如果通过扩展意味着自动增加数据库的磁盘大小,那么我同意你的看法。我的实际意思是从性能的角度进行扩展,即数据库可以承受的负载。对不起,如果我在这方面模棱两可。 如果您担心水平扩展,您可能需要根据您网站所需的域对象/结构/功能的类型来查看表存储。 Florin Dumitrescu 是对的,我的意思是向外扩展。你们能根据我的最新编辑提供帮助吗?给您带来的不便深表歉意【参考方案2】:

如果您在云中托管您的网站,并且您需要一个数据库,那么 SQL Azure 几乎肯定是最佳选择。

SQL Azure 是一种数据库即服务,因此您将创建您的数据库并从您的代码中对其进行处理,但不必担心配置,没有这样的服务器,这一切都得到了照顾.

从应用程序的角度来看,它的外观和行为与 SQL Server 非常相似,因此最初的所有变化只是连接字符串

【讨论】:

【参考方案3】:

正如其他提到的,SQL Azure 消除了您对设置和维护基础架构的担忧。这是 Azure 总体前提的一部分,即提供平台而不仅仅是基础架构。

您为此付出的代价是对功能的一些限制(与常规 SQL 相比)。大小限制(至少在联邦可用之前)和延迟增加(因为您的数据库不在应用的同一台服务器上运行)

Microsoft Teched 有“SQL Azure Performance and Elasticity Guide”,您可能应该看看

【讨论】:

以上是关于普通与云/Azure 托管以及 SQL Azure 与 SQL Server 的作用的主要内容,如果未能解决你的问题,请参考以下文章

Azure 数据工厂 - Azure SQL 托管服务不正确的输出列类型

Azure SQL 数据库弹性池和 Azure SQL 数据库托管实例有啥区别?

Azure 托管 SQL - ODBC 驱动程序

Azure 恢复服务和 SQL 2014 托管备份不能很好地配合使用

具有托管标识(用户分配)的 Azure SQL 无法针对 AAD 使用

Azure Log Analytics - SQL 托管实例日志