云的方法 – SQL 数据服务






4.54/5 (7投票s)
概述 Microsoft 的云平台
引言
想象一下,您有自己的公司。业务运作良好,您的企业不断发展。但是,您的网络基础设施会是什么样子?面临许多业务挑战,如增长、灵活性、存储和创新,都需要合适的基础设施。如今,有一种方法称为云计算,它似乎是应对这些挑战的答案。这样的概念不仅需要正确的硬件,还需要合适的软件 – SQL 数据服务 (SDS)。
背景
云计算是一种新的应用程序支持方式。在云计算概念中,存在一个云平台,它允许开发人员编写在云中运行的应用程序,或者使用从云中提供的服务,或者两者兼有。

与本地应用程序不同,云中的应用程序具有不同的架构。虽然本地平台支持企业级应用程序,但云平台运行在互联网级别,可处理更多并发用户。这种高可伸缩性迫使云平台以不同的方式提供功能。
SDS 就是这样一个云平台。它基于 HTTP,并使用 SOAP 和 REST 协议在云和客户端之间进行查询和数据传输。SDS 因其服务接口和简单的数据模型而非常灵活。为了轻松处理和操作数据,还有一个与服务接口和数据模型配合使用的查询语言。我们真的需要查询语言吗?这仅仅是开销吗?
在云平台上,存在一些限制。例如,无法访问底层操作系统功能来处理数据,但这是为什么呢?
“云计算之所以如此吸引人,部分原因在于其潜在的可伸缩性,但要使基于云基础构建的应用程序能够处理互联网级别的负载,就需要对其进行某些方面的限制。” [DavChap08]

这些限制导致平台必须自己提供功能,并且必须以灵活高效的方式提供这些功能,以处理大量用户请求并实现可伸缩性。因此,数据存储的访问是通过查询语言进行的。
还有一种不同的数据存储方式。SDS 使用三层包含模型 – ACE Concept。这是一个灵活的数据模型,存储数据无需模式。它有三个级别 – 权限 (authority)、容器 (container) 和实体 (entity)。权限是地理位置的单位,包含一组容器。容器包含一组实体,是一致性和搜索的单位。实体是名称-值对的属性包,因此是更新和更改的单位。这种数据模型允许云进行任意扩展。
使用 SDS 和 REST
首先,您需要 注册 SDS。一旦您拥有账户,就需要下载 SQL 数据服务 SDK。您会在其中找到一个名为 SDS Explorer 的应用程序,我将在此演示中使用它。
打开 SDS Explorer 后,您将看到以下界面。顶部是地址栏,您需要通过它在三个包含级别之间导航。然后有一些按钮用于支持模板和与服务交互。还有一个用于输入查询的文本框,如果您按下左下角的箭头按钮,您将获得有关请求和响应的额外信息。

SDS Explorer 使用 REST 协议连接到服务。我首先创建一个权限,它位于 ACE 概念的顶层。因此,我使用权限模板并将其 ID 命名为 **msp-goes-sds**。然后,通过按下“post”按钮将此语句发送到服务。您可以在窗口底部看到请求和响应。在这里,您会发现 REST 基于 HTTP。
注意:您必须明智地选择您的权限 ID,因为目前您无法删除或撤销它。
下一步是创建一个容器;因此,我选择适当的模板按钮。我将这个容器命名为 _actiongames_ 并将其发布。现在,我在三层包含模型中深入了一步。您可以在 URI 中看到这一点,或者通过比较这些语句来了解。
https://{authority id}.data.beta.mssds.com/v1/{container id}
https://msp-goes-sds.data.beta.mssds.com/v1/actiongames
是时候添加一些实体了;还有一个特殊的模板按钮用于此。在底部的框中,您可以看到实体的基本结构。实体可以有两种类型的属性:元数据属性和灵活属性。ID 标签是一个元数据属性,而另外两个,_Name_ 和 _ReleaseDate_,是灵活属性。
<Entity xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:x="http://www.w3.org/2001/XMLSchema"
xmlns:s="http://schemas.microsoft.com/sitka/2008/03/">
<s:Id>1</s:Id>
<Name xsi:type="x:string">Halo 3</Name>
<ReleaseDate xsi:type="x:dateTime">2008-10-18T10:54:27.2712064Z</ReleaseDate >
</Entity>
在图片中,您可以看到两个实体。这些实体的灵活属性在类型上有所不同;并且其中一个实体比另一个具有更多的属性。

我多次重复此步骤,在我的 _actiongames_ 容器中添加了几个游戏。现在我可以使用查询语言查询它们。但首先,我必须回到容器级别。这意味着什么?在创建新实体后,URI 会自动移至实体级别。**1** 是当前创建实体的 ID。如果您想返回到容器,只需删除这个 1。
https://{authority id}.data.beta.mssds.com/v1/{container id}/{entity id}
https://msp-goes-sds.data.beta.mssds.com/v1/actiongames/1
现在,我可以查询容器中的实体。我首先创建一个查询,其中使用了一个元数据属性。您应该会识别出访问属性数据的区别。
- 元数据属性: from
e
in entities wheree.Id=="1"
selecte
- 灵活属性: from
e
in entities wheree["Name"]=="Halo 3"
使用 SDS 和 SOAP
这部分需要 Visual Studio 2005 / 2008。我会在 Visual Studio 中创建一个新的控制台应用程序,并希望从 SDS 服务查询数据。创建控制台应用程序后,我需要一个 SDS 的服务引用,所以我会在解决方案资源管理器中转到项目并添加一个服务引用。接下来,我必须通过输入地址来查找服务,然后按“GO”。我将此服务引用命名为 SDSClient 并按“Ok”。

服务地址: http://data.beta.mssds.com/soap/v1?wsdl
之后,我必须通过在源代码顶部添加一个 using
语句来添加命名空间,并在主块中添加以下代码来查询 SDS 服务。
using MSP_SSDS_Demo.SSDSClient;
static void Main(string[] args)
{
using (SitkaSoapServiceClient proxy = new
SitkaSoapServiceClient("SitkaSoapEndpoint"))
{
// 1 - Access to SSDS
proxy.ClientCredentials.UserName.UserName = _YourUserName;
proxy.ClientCredentials.UserName.Password = _YourPassword;
// 2 - Definition of the scope
Scope myContainerScope = new Scope();
myContainerScope.AuthorityId = "msp-goes-ssds";
myContainerScope.ContainerId = "actiongames";
// 3 - Sample Query
string sampleQuery = @"from e in entities where e.Id >
""1"" select e";
// 4 - Process Query
IEnumerable<Entity> games = proxy.Query(myContainerScope,
sampleQuery);
// 5 - List response
foreach (Entity e in games)
Console.WriteLine(e.Properties["Name"]);
Console.Write("Press any key...");
Console.ReadKey(true);
}
}
首先,我创建了一个 using
块,并在其中实例化了一个 SitkaSoapServiceClient
对象。这个对象是我的服务的代理。现在我必须提供我的凭据给代理才能访问 SDS。接下来我需要一个范围,因为 ACE 概念。我在第 2 点定义了这个范围。通过 myContainerScope.AuthorityId
和 myContainerScope.ContainerId
,我明确指定我想在 _actiongames_ 容器中查找实体。之后,我创建查询。我想要所有 ID 大于 1
的游戏。所以,我使用查询语言来构建这样的结构。所以现在,我只需要处理这个查询。我在第 4 点执行此操作。最后,我将响应列出到输出。
注意:在本文中,有时您会看到缩写 SSDS 而不是 SDS,尤其是在演示截图或服务 URL 中。这是因为名称从 Microsoft SQL Server Data Services (SSDS) 更改为 Microsoft SQL Data Services (SDS)。也可能在 Beta 状态后某些 URL 会有所不同。
[DavChap08] | Chappell, David: Cloud Platforms – An enterprise oriented overview. Chappell & Associates, 2008 |
[JasLee08] | Lee, Jason: Microsoft SQL Data Services – Under the Hood. Microsoft, 2008 |
[MSDN08] |
MSDN Library – SQL Data Services Primer |
历史
- 2008 年 11 月 9 日:初始发布