新闻资讯
看你所看,想你所想

rds(关係型资料库服务)

rds(关係型资料库服务)

rds(关係型资料库服务)

RDS是关係型资料库服务(Relational Database Service)的简称,是一种即开即用、稳定可靠、可弹性伸缩的线上资料库服务。具有多重安全防护措施和完善的性能监控体系,并提供专业的资料库备份、恢复及最佳化方案,使您能专注于套用开发和业务发展。

基本介绍

  • 中文名:关係型资料库服务
  • 外文名:Relational Database Service
  • 简称:RDS
  • 类型:线上资料库服务

关係型资料库

关係模型就是指二维表格模型,因而一个关係型资料库就是由二维表及其之间的联繫组成的一个数据组织。 当前主流的关係型资料库有Oracle、DB2、PostgreSQL、Microsoft SQL Server、Microsoft Access、MySQL等。
云关係型资料库(RDS)是一种稳定可靠、可弹性伸缩的线上资料库服务,支持MySQL、SQL Server、PostgreSQL、PPAS(Postgre Plus Advanced Server,高度兼容Oracle资料库)、MariaDB等引擎,并且提供了容灾、备份、恢复、监控、迁移等方面的全套解决方案。

远程数据服务

RDS(Remote Data Services,远程数据服务)是允许我们处理客户端数据的一系列服务的统称。现在不用担心这方面的问题,因为RDS本身就是ADO的一部分,只有在需要传送和使用客户端数据时,才会使用。远程数据服务RDS允许程式设计师开发原生的WINDOWS分散式多层套用系统,或是开发以浏览器为图形用户接口的WEB套用系统。
远程数据服务RDS提供了客户端应用程式在INTERNET/INTRANET或分散式环境中使用ADO中RECORDSET对象的能力。
可以在浏览器中通过远程数据服务RDS取得RECORDSET对象,然后在脚本语言中存取数据。或在原生WINDOWS应用程式中通过RDS取得RECORDSET对象,然后使用程式代码来存取远程数据源中的数据。RDS能够将ADO取得的数据一DCOM或HTTP通信协定由中介软体或中介组件传递给客户端,并且把数据快取在客户端中让客户端存取数据。

与ADO

程式<-->ADO<-->RDS<---->IIS/PWS<-->ODBC<-->资料库.
当我们在程式中试图使用ADO来存取WEB资料库时,由于ADO与ODBC分属于两台通过Internet连线起来的机器上,因此数据存取方式与ADO,ODBC同属于一台机器的情况大不相同,为了让程式也一样可以利用ADO存取WEB资料库,于是诞生了RDS,而RDS的角色就象是一位帮ADO存取WEB资料库的服务员一样,所以取名“远程端数据服务”实际上RDS是由几个组件构成的。图10-1说明了这些组件以及它们之间是如何协同工作的。
组件似乎很多,但并不是所有的组件在每种情形下都被使用,实际上有一些不是RDS的一部分。然而这里还是把所有可能出现的组件都放在了图上,以备需要时查看。图10-1分成了两部分,因为使用客户端数据需要一些向客户端传送数据的方法,同时数据一旦到达客户端,也需要一些管理数据的方法。我们先从伺服器端开始。

伺服器

虽然RDS用于传送和访问客户端数据,但其确实有一些基于伺服器的组件。这是必需的,因为肯定需要某种方式将数据传送到客户端。因此有了一系列能访问数据并允许传送数据到客户端的伺服器组件。我们把实际的数据传送称为调度(marshal)。伺服器端组件图的最上端是数据存储,由OLE DB提供者访问。它并不是RDS的一部分,但这表示只要有相应的OLE DB提供者,就可以通过RDS在客户端使用任何数据。至于如何处理伺服器上的数据,可以有两种选择:· 数据工厂(DataFactory)是预设的用于访问数据存储的伺服器端组件。它作为伺服器端RDS组件的一部分安装在计算机上,除了能从数据存储中获取数据外,还为伺服器处理髮送到客户端以及从客户端传送来的数据。· 自定义组件只是一个普通的提供了数据传送方法的COM组件。当数据工厂不能提供所需的功能时,可以使用自定义组件。本章将介绍一个简单的组件例子,在本书的后面还有一个更複杂的例子。Web伺服器使用这两种组件作为客户和伺服器数据的接口。
rdsrds

客户组件

在客户端先从底端的DataSpace对象开始,该对象作为客户端的一部分与数据工厂或自定义对象协同工作。DataSpace对象是一个代理对象,负责与伺服器进行通信,同时也是数据传输的通道(或者通常所说的调度)。DataSpace对象是用客户端脚本语言或用HTML语言中的标记创建的COM对象。在本章后面会看到关于这方面的例子。DataSpace对象上面是数据源对象(Data Source Object,DSO),负责存储客户端数据。一个数据源对象??数据。客户数据快取只是一种管理客户端数据的客户游标服务。同时数据源对象又是一个COM对象,与DataSpace对象类似,也可以通过客户端脚本或使用HTML语言中的标记来创建。同样,在本章稍后也会介绍关于这方面的一些例子。数据源对象的上面是数据绑定管理器,任务是建立HTML控制项与数据源对象的连线。这就是我们所知道的绑定,可以通过设定某些HTML控制项的DATASRC和DATAFLD属性来实现。下面将对这些内容进行讨论,并示範如何在浏览器中方便地使用数据。
rdsrds

浏览器

要知道RDS是微软的技术,因此只能在微软的浏览器上工作。实际上,只有在IE 4.0或者更高版本的浏览器中才完全支持RDS。当编写依赖于RDS的应用程式时,需要注意访问应用程式的客户的RDS版本可能与伺服器端有所不同。举例来说,IE 4中的是RDS 1.5版本,而IE 5、Office 2000和Visual Studio 6中的则是RDS 2.0版本。有两种方法可以处理这种兼容性问题:
rdsrds
· 确保所有用户已经升级到RDS的最新版本。如果客户运行的是Windows 2000,那幺已经在运行最新版本的RDS了。RDS 2.5版本是目前最新的随同Windows 2000一起发布的版本,同时也是一个可单独下载的软体包。· 当连线到数据源时,指定数据工厂的模式。这可以指定使用的是哪一个版本的RDS组件,后面将介绍这方面的一个例子。

数据源

数据源对象是一个存储和管理客户端数据的客户端对象。因为这是使用RDS最简单的一种方式,首先研究一下这些对象。
这里有几个不同的数据源对象,每一个都针对不同类型的数据:· 表格数据控制项(Tabular Data Control,TDC),用于处理表格形式或分隔形式的文本档案。· RDS数据控制项,用于连线OLE DB数据存储,能够指定连线到哪个数据存储,以及返回哪些数据。· Java资料库连线器,这是一个通过Java资料库控制项(Java DataBase Control,JDBC)连线到数据存储的Java小程式。这里我们不想讨论JDBC,因为它并不提供其他控制项无法实现的功能。· 微软的HTML(MSHTML)数据源对象用HTML标记数据,并把它作为数据源。· XML数据源对象使用XML数据,用于结构化的或任意结构的XML。
rdsrds
选用哪一种数据源对象取决于你想做什幺,以及数据从哪里来。如果需要向客户提供少量的数据,并且不允许用户修改数据,那幺表格数据控制项(TDC)可能会比较适合。这种数据源是一个文本档案,不需要任何资料库,因此编辑起来比较简单。对于从资料库中取出数据并且可能需要更新的情况,RDS数据控制项是最合适的。而对于许多新数据源,会发现此时需要使用XML数据控制项。这实际依赖于所使用的Web应用程式的类型,以及用户所需的功能。

数据控制项

我们将依次介绍这些数据控制项,一旦了解了如何用它们把数据传送到客户端,将会介绍如何使用这些数据。
表格数据控制项
表格数据控制项(Tabular Data Control,TDC)是最简单的数据源对象,主要用于少量的唯读数据,特别是那些从不改变或很少修改的,不需要从客户端进行更新的静态数据。例如,表格数据控制项能提供一个网页内的选单项或连结的列表。
通过在HTML代码中使用标记可以创建一个表格数据控制项。参数DataURL可以指定包含文本数据的档案名称。
TDC唯读取表格中的数据或标记为表格形式的数据,例如,可以处理逗号分隔形式的数据(Comma Separated Value, CSV),类似于下面的数据:"172-32-1176","White","Bob","408 496-7223""219-46-8915","Green","Marjorie","415 986-7020""238-95-7766","Carson","Cheryl","415 548-7723""267-41-2394","O'Leary","Michael","408 286-2428""274-80-9391","Straight","Dean","415 834-2919""341-22-1782","Smith","Meander","913 843-0462""409-56-7008","Bennet","Abraham","415 658-9932"TDC也可以自由定义。除??记的参数项或编写脚本代码来配置这些参数。参数的说明如表10-1所示:
下面是使用参数创建TDC的一个例子。也可以在客户端脚本中获取数据,下面的例子显示了给TDC载入数据的JScript脚本。function fillTDC(){ dsoAuthors.dataURL = 'authors.csv'; dsoAuthors.Reset();}如果改变了TDC的DataURL参数,必须使用Reset方法,这样才能使新的URL起作用。当介绍数据绑定时,会更详细地讨论如何使用它。Reset方法是TDC唯一的一个方法。 2. RDS数据控制项 RDS数据控制项能够访问一般的数据存储,而不是平面档案。它通常用于连线SQL资料库以从表、查询或存储过程获取数据。与TDC不同,RDS数据控制项允许更新数据。在本章稍后通过示例说明如何进行数据更新。类似于TDC,可以用HTML脚本中的OBJECT标记来创建一个RDS数据控制项,并以类似的方式设定其属性。authorsonclick="resetData('publishers')">publishers下面创建虚表。 这充当了模板的作用。注意,表格中还没有单元格。这是因为并不知道数据有多少个栏位,所以也将在运行期间创建它们。现在编写JScript代码。首先看一下resetData函式,该函式设定数据控制项的属性并载入数据。function resetData(sTable){ // reset the data dsoData.Connect = 'Provider=SQLOLEDB; Data Source=' + '' + '; Initial Catalog=pubs; User ID=sa; Password='; dsoData.Server = 'http://'; dsoData.SQL = 'SELECT * FROM ' + sTable; dsoData.Refresh();} 虽然这看起来比使用参数更複杂一些,但是仍然比较简单。别忘了参数名是如何映射到属性的?这里所做的就是设定那些属性,然后调用Refresh方法更新数据控制项。看上去,这可能比以前的例子更糟糕,因为在代码中只有不多的ASP,也只是简单地在属性中填入Web伺服器的名字。但使用该方法可以在不修改代码的情况下将此ASP页面从一个伺服器移到另一个伺服器。作为数据源的表名可以通过选择适当的按钮而传给函式。一旦载入了数据,将触发数据控制项的ondatasetcomplete事件,运行createCells函式。function createCells(){ var fldF; var tblCell; // delete what's there already deleteCells(); // now create the new cells for (fldF = new Enumerator(dsoData.recordset.Fields); !fldF.atEnd(); fldF.moveNext()) { // create a new cell for the heading tblCell = tblData.rows【0】.insertCell(); tblCell.innerHTML = '' + fldF.item().name + ''; // create a new cell for the body tblCell = tblData.rows【1】.insertCell(); tblCell.innerHTML = ' fldF.item().name + '">'; } // now bind to the data source tblData.dataSrc = '#dsoData';}这同样也很简单。首先删除了现有的表格单元格(马上会介绍这个函式),然后遍历记录集的栏位。在行头为每个栏位创建一个新单元格(这个表格只有两行:第一行,即第0行,是表头;第二行,即第1行,是表体)。表格单元创建完后,将innerHTML属性设为对应的栏位名。在表体中创建新单元格的过程类似,但此时使用innerHTML元件保存绑定到数据栏位的INPUT标记。当所有的栏位都完成这样的操作后,这个表就与数据控制项绑定了。因为这个页面允许在两个不同的数据集之间进行切换,所以需要先删除现有的数据。function deleteCells(){ var iCell; var iCells; // unbind the table tblData.dataSrc = ''; // delete existing cells iCells = tblData.rows【0】.cells.length for (iCell = 0; iCell < iCells; ++iCell) { tblData.rows【0】.deleteCell(); tblData.rows【1】.deleteCell(); }}这个子程式只是对表解除绑定,然后在表格中遍历所有的单元格并删除它们。等到上述程式执行完毕,表格就只剩下空的表头和表体行。这是一个用RDS和一些DHTML实现的简单例子。可以容易地把其加到一个ASP包含档案中,并把该档案放到任何应用程式中,即使数据源不改变也可使用这种方法。这个例子的全部代码——档案RDSDynamicBinding.asp以及类似的其他类型的数据控制项例子,可以在Wrox站点上找到。 10.2.6 更新数据迄今为止,仅学习了在客户端如何取到数据,但还没有涉及如何更新客户端数据,和将其送回伺服器。别忘了,记录集是下线的,那幺如何更新数据呢?对数据所做的任何修改只是数据控制项中本地记录的一部分,因此为了更新伺服器必须发一条特殊的指令。然而这并不需做什幺複杂的工作,因为RDS数据控制项有两个方法,允许我们要幺取消最近对数据所做的任何修改,要幺将所有修改送到伺服器。为了方便用户,可以为此创建一些按钮。 ONCLICK="dsoData.CnacelUpdate()">Cnacel ONCLICK="dsoData.SubmitChanges()">SaveSubmitChanges方法只将那些改动过的记录送回伺服器,而CancelUpdate方法则取消在本地记录集上所做的任何修改。更新和取消更新操作并不是唯一所需的。如果想增加新的记录或删除一条现有的记录,怎幺办?可以使用记录集的AddNew和Delete方法。这将增加或删除记录集中的记录,然后在传送SubmitChanges命令后,伺服器上的数据就可以被更新。 ONCLICK="dsoData.recordset.Delete()">Delete ONCLICK="dsoData.recordset.AddNew()">Add 1. 解决冲突的方法 由于与数据源下线,可能会碰到有关冲突的问题。例如在更新一条记录并将其保存到数据存储的时候,有人也修改了这条记录时,会发生什幺情况? SubmitChanges方法已经提供了相应的处理冲突的方法,如果发生冲突,那幺该方法将产生一个错误。 在调用SubmitChanges方法期间,只要其中一条记录更新失败,那幺所有的记录更新都会失败。这保证了原始数据不会被部分更新。可以遍历记录集,并检测记录的Status属性来告诉用户哪一条记录更新失败了。例如,最好调用自己的updateData函式,而不只是在命令按钮中调用SubmitChanges方法。 此时,我们知道已经发生了一个错误,但并不知道是哪一个错误,因此必须重新同步当前数据与数据存储中的数据。使用adResyncUnderlyingValues确保只有栏位的UnderlyingValues属性被数据存储中的值覆盖,也就是说所做的修改是安全的(记住,修改的内容保存在Value属性中)。可以在后面的代码中比较当前的值与资料库中的值。 Status可以是不同值的组合,详见附录。例子代码( RDSConflicts.asp )中有一个将这些值转换为描述性字元串的函式。 我们知道记录有某些形式的冲突,但无法确切地知道为什幺或哪一个栏位引起了冲突。因此需要遍历栏位检测它们的值。 这就是UnderlyingVaule属性发挥作用的地方。 栏位有三种值: Vaule代表新值,即经过修改的栏位值。 UnderlyingVaule代表数据存储中存储的栏位值。 OriginalVaule代表从数据存储读取后,但还没有修改之前的栏位值。 这意味着UnderlyingVaule会保存其他用户修改过的值,而OriginalValue是栏位原有的值。因此比较两者之值,如果不同,则说明栏位已经被另外的用户修改了。 可以利用所有这些错误信息来创建一个表格以显示是否确实发生错误。例子(RDSConflicts.asp)产生的输出结果如图1 0 - 11所示。 这里可以见到三种不同的值。原始值是Johnson。然后,在另一个视窗(如SQL Server Query Analyzer)中将值改为Johnson。在浏览器视窗,利用RDS将这个值改为Andy,并按下Save All Changes按钮。Resync命令将资料库中的值取出并写入UnderlyingVaule属性。我也对Lastname列做了相似的修改。 使用这种方法,可以看到每一个发生变化的栏位的值。由于SubmitChanges方法可以处理多个栏位,读者可能希望为这个表增加额外的列以显示ID栏位,这样就可以看到是哪一个栏位更新失败了。

无线广播

RDS是英国BBC广播公司开发的一种特殊的无线电广播,称“无线数据广播系统”(Radio Data System),它是在调频广播发射信号中利用副载波把电台名称、节目类型、节目内容及其它信息以数字形式传送出去。通过具有RDS功能的调谐器就可以识别这些数位讯号,变成字元显示在显示屏上。在收到节目的同时,通过RDS可知道接收到的是那个电台,它的发射频率,并给出该电台其余的频率,由此再使用“切换频率”钮来保证所接收的信号为最强的频率。RDS无线数据广播档案可显示接收到的节目名称及其它资料。RDS功能可按节目类型决定取捨,寻找到符合你要求的电台。RDS还能用来自动控制接收机,使流动工作的汽车收音机一直保持最佳接收状态,及时收到紧急交通报告,有利交通安全。 RDS除使收音机自动化、高档化外,并在城市交通管理中发挥作用,其使用领域尚在拓展中。

转载请注明出处海之美文 » rds(关係型资料库服务)

相关推荐

    声明:此文信息来源于网络,登载此文只为提供信息参考,并不用于任何商业目的。如有侵权,请及时联系我们:ailianmeng11@163.com