专利名称:用于访问物理数据存储器中的文件的系统和方法
技术领域:
本发明涉及一种用于访问数据库的物理数据存储器中的文件的系统和 方法。
背景技术:
通常,数据库的文件存储在物理数据存储器,例如RAID系统中,其 中使用某种文件一文件夹结构安排文件。如果要执行对期望文件的搜索, 需要打开并检查物理存储器中包含的每个文件夹和文件。这是由操作系统 执行的标准过程。
需要访问文件的在客户端上运行的应用程序必须提供适当的机制,来 发起这种过程。在本领域中,可经由众所周知的编程语言Java使用工作空 间版本和配置管理应用编程接口 (WVCMAPI)存储和获取XML数据库 的文件。WVCM API的描述例如可在A印:〃www.wek/av.org/Je/tov/wvcm 找到。在内部,WVCMAPI在使用WebDAV协议,该协议是HTTP协议 的扩展。
然而,WVCM API的抽象级别是相当低的并且用于简单的文件存储、 读取和查找所花费的努力是非常大的。特别地,开发者必须知道WebDAV 协议和WVCM API的略显复杂的原理。此外,仅仅可能通过在文件一文 件夹结构中进行递归式移动并读取每个文件夹和文件来搜索数据库中的文 件和文件内容。换言之,为了查找特定文件,每个文件夹和文件内容必须 在通信线路上发送到客户端,以便由在客户端上实现的逻辑在本地进行分 析。很明显,该方法是缓慢且效率低的,因为在获得所请求的文件之前, 它需要客户端和数据库服务器之间通信线路的大量带宽。
因此,本发明下的技术问题是提供一种系统和方法,其方便了对数据 库的物理存储器中文件的访问且由此克服现有技术的上面概述的缺点中的至少一些。
发明内容
在本发明的一个方面中,由用于访问物理数据存储器中的文件的系统 解决该问题,所述系统包括应用编程接口 (API)层,该API层包括扩展
类Java.io.file以包括用于文件访问请求的至少一个方法的API。所述系统 还包括至少一个内部层,该内部层将文件访问请求转换为数据库调用。最 后,所述系统包括具有数据库的存储层,该数据库适于响应于数据库调用 来访问物理存储器。
通过本发明获得的优点之一是通过利用用于文件访问请求的方法对类 Java.io.file进行扩展而为数据库应用程序的开发者赢得了编程效率。 Java.io.file对所有有经验的Java开发者来说是众所周知的。它对于定位、 读取和查找文件提供了简单且有效的接口。学习基于Java.io.file的、用于 文件访问的新接口仅需要很少的努力。
在一个实施例中,扩展了类Java.io.file的API包括用于查找文件、获 取文件、搜索文件内容且获得文件版本的方法。优选地,扩展的方法不直 接访问数据库的文件系统,而是访问内部层。然而,取决于特定实施方 式,在扩展的API中可能存在更多的或仅一部分的所述方法。
在一个实施例中,所述至少一个内部层优选地适用于将文件访问请求 转换为XQuery调用,其中扩展了类Java.io.file的API可包括用于通过内 部层发起执行XQuery调用的方法。XQuery是用于例如使用通常在XML 数据库中提供的索引来查询该数据库的高效率语言。
根据本发明的另一方面,内部层可根据HTTP协议的WebDAV扩展 将文件访问请求转换为调用。将内部层用于这种转换有效地对客户端屏蔽 了 WebDAV协议的细节,该客户端仅仅关心扩展后的基于JAVA的API。 WebDAV协议扩展了 HTTP的功能,以便通过提供用于创建可交互操作 的、协作性的应用程序的网络协议来使得分布式创作(authoring)变得方 便。
在本发明的一个实施例中,在数据库服务器上提供内部层和存储层两者。结果,可减少客户端逻辑并且仅仅在从数据库到客户端的通信线路上
发送必要的内容。
在进一步的从属权利要求中定义了所述系统的另外可能的改进。 根据另一方面,本发明涉及一种用于使用任一上述实施例的系统来访
问物理数据存储器中的文件的方法。
在随后的详细描述中,参考下面的附图进一步描述本发明的当前优选 图1:本发明的示例性实施例中的系统的各层的示意性表示;
图2:本发明的示例性实施例中的类Java.io.file的扩展的示例。
图3:利用根据本发明的系统的实施例在数据库中存储文件的过程的 示意性表示;
图4:利用根据本发明的系统的实施例获取数据库中的文件的过程的 示意性表示。
具体实施例方式
在下面,参考访问XML数据库的文件来描述本发明的当前优选实施 例。然而将会理解,本发明不限于访问这种数据库的XML文件。相反, 本发明的原理可应用于访问数据库的任何物理存储器中的任何类型的文 件。
但是, 一个重要的示例是面向服务的(软件)架构SOA的注册表 (registry) /储存库的例子。在SOA中,对于网络中的用户来说,各种处 理对象作为可以用标准化方式访问的独立服务而可用。SOA的对象基于独 立于底层硬件和软件平台以及编程语言的形式化定义而交互操作。
管理SOA是复杂且困难的任务。管理诸如web服务之类的处理对象 的整个全景的概观对于保证使用各个处理对象的应用程序正确操作来说是 重要的,所述web服务中的一些可随时间推移而动态改变。因此,本发明 的申请人开发了在商标CentraS iteTM下可得到的集中式注册表/储存库。CentraSite实际上是XML数据库,其包括对处理对象特别是SOA的web 服务的描述,等等。Web服务可由web服务描述语言(WSDL)文件来描 述。WSDL文件包含关于各个web服务的功能、数据、数据类型和交换协 议的典型信息。想要向某个web服务发送请求的客户端可从CentraSite获 得WSDL文件,以得知如何访问该web服务。因此,对CentraSite中存储 的WSDL文件的有效访问对于SOA的设计时和运行时都是重要的。
可用本发明有效访问的数据库的另一示例,可由申请人的Tamino XML服务器提供,该服务器是使用因特网技术进行数据管理的通用XML 服务器。
图1给出了根据本发明实施例的系统各层的概观。如所看到的,存在 包括客户端2的应用程序层1。客户端例如可以是需要访问CentmSite数据 库中的某些WSDL文件的SOA开发者或者应用程序,该应用程序在运行 时期间动态选择某个web服务,并且该应用程序还需要访问WSDL文 件,以便得知如何寻址web服务。
为了发送文件访问请求,客户端2使用另一层即所谓的API层10中 的API 11。如下面参考图2进一步描述的,通过用于访问文件的方法, API 11扩展了 Javaio.file 12。在一个实施例中,该扩展称为 "WebdavFile"。取决于客户端2所调用的方法,图1系统中的下一层即 内部层20将调用转换为适当的数据库请求。为此,内部层20根据 WebDAV协议(HTTP协议的WebDAV扩展),例如通过使用工作空间 版本和配置管理API (WVCMAPI) 23在一个实施例中生成数据库请求。
因此,本发明使用数据库中存储的文件和文件夹的基于Java.io.file的 视图,而无需直接访问WVCM API。这使得开发者易于上手,因为所有的 Java程序设计员都熟悉Java.io.file类。
在图1中还示出的另一实施例中,API11的方法调用被査询API21转 换为XQuery调用。如将从以下详细描述所显见,转换为XQuery调用使得 可以高效地搜索和访问数据库的内容。尽管现有技术中的文件访问不提供 来自基于数据库的文件存储的益处,但本发明的该实施例使得有容易的方 式用XQuery以及关于文件如何存储的知识来定位文件,其中应用了 XML数据库的益处。
除了 WVCM API 23和查询API 21 ,在内部层20中可以有更多的转换 单元,如由图1中的单元22所示意性表示的。此外,在内部层20下面可 以有更多的(内部)层,来另外地处理文件请求。事实上,各层20、 30 和40之间的界限不是固定的,使得层的数目可以随着实施方式而变化。
图2示意性地给出了根据本发明实施例的Java.io.file的扩展。如所看 到的,Java.io.ffle类50包括许多涉及文件处理的方法。Java.io.file 50的扩 展60另外提供了用于在诸如CentraSite之类的数据库中创建和管理文件的 方法(例如参考图2中的方法"WebDAVFile ( centraSiteURL : String)")。
在图2的实施例中,扩展60还包括用于特定地发起XQuery调用的方 法(参考图2中的方法"executeXQuery (xquery: string))和用于从数据 库中查找和得到文件的方法。最后,存在用于获得某个文件的版本的方 法。
此外,图2示出了要实现的两个另外的可选接口 61和62。称为 "serializable"的接口 61用作文件的串行化和传输,并且接口 62 "comparable"用作比较。
对于查找和读取文件来说,基于Java.io.file并且有可能在XML数据 库上使用XQuery的接口将是更好且更高效的方式。相比于WVCM API, 抽象的级别高得多。该接口可以在不需要理解WebDAV协议的情况下使 用。仅需少许努力来理解新的接口,因为其基于众所周知的Java.io.file 类。没有用于名称、文件夹、特性、用户、日期/时间、内容等的客户端交 互的预选是可能的。方法可隐藏所存储文件和QXuery调用的结构,使得 它们对于用户来说不可见。如果数据库需要验证,另外的方法可添加到扩 展60,其可能将用户名和密码作为参数。
图3示出了用所描述系统对特定文件的访问,即在XML数据库中存 储新文件。使用API层10及其对Java.io.file的扩展11 (图3中未示 出),文件向下传到内部层20和WVCM API 23 (也未在图3中明确示 出),WVCM API 23提供了在数据库100中存储XML文件70的必要WebDAV接口。
最后,XML文件70存储在XML数据库100中。自动生成的索引101 将帮助减少在查找文件、定位文件和确定文件内容时所花费的努力。在文 件存储期间,将以高效的方式写入不同的索引101并存储文件70。这使得 定位和读取文件所花费的努力更少。
图4示出了相反类型的文件访问,即使用XQuery从XML数据库100 获取文件70。 XQuery是访问XML数据的标准化方式。通过在XML数据 库中放置XML文件70并使用索引101和优化的XQuery调用,可以快得 多地得到搜索结果。这适用于搜索文件名称、文件特征、文件属性和文件 中的内容。特别地,搜索是基于服务器端的,无需客户端逻辑或交互。不 需要将辅助结果(例如文件夹内容)传送到客户端2。
作为WebDAV资源存储的XML文件可以映射到扁平结构的数据库集 合,例如"documents"集合。在该情况下,所有文件直接位于该集合中并 且不是以递归文件夹的结构。然后XQuery可用于在该集合中搜索。例如 下面的XQuery:
r她m咏.g^iVopeWes
对"documents"中所有存储的XML文件,返回其所有属性。这些属性 是
*文件的名称和位置 *所有者
*日期/时间信息修改日期、最后修改日期、创建曰期
*长度
内容类型
*版本号
其它用于更多属性的方法是可用的。 过滤器可显著地减少数据量。使用名称,可直接定位并返回文件。搜 索文件名、文件夹、所有者、创建和修改日期无疑是可能的。可以仅使用一个XQuery调用来找到在给定路径下的独立于所处文件夹的一个或多个 文件。相应的XQuery例子内容为
这从位置/路径"/ino:dav/ino:dav/projects/WSDL/"及其子文件夹返回所有 文件。如果深度"1"用于代替"infinity",则返回来自该文件夹(除了 子文件夹之外)的所有文件。"0"仅返回关于相称文件夹的信息。
XQuery还可用于将来自数据库搜索的结果集限制为在其全名(这包 括路径)中具有特定模式的文件。考虑下面的XQuery
:=哮'ge,/Voper"&sf^ '7Ce"加iSVte/CeM加5V'te/ii"o:(i6(v/i!.肌'^3v,q/erf5/S認'"aswiVo(:ewMetorZ)fi;to/承.扁/'
第二行中的"for"语句从"documents"集合中选择所有文档。下一 行将结果集的WebDAV属性映射到变量Sp。在第4行中的where语句中, 将 结 果 集 限 制 为文 件 夹
中具有xml文件扩展名的文档。语句
w/iere ^ ccwto'似re;cf(^p/D.如e/ 〃,肌'wawfVoc咖MetoDato/"
将获取其全名中具有字符串"BusinessProcessMetaData"的所有文档。如 果要寻找其全名以gif或jpg结束的文档,则语句内容必须为如果下层的XQuery实现支持,还可以在搜索字符串中使用正则表达式。
使用XQuery,物理存储器上的给定文件夹结构可映射到不同的数据 库集合。例如,存储器的根目录可映射到特定集合,以使得XQuery搜索 仅仅察看其中所有相关文件都无层次地存储的一个特定集合。在上述例子 中,通过经由函数"tdf.getProperties()"中的构造察看文件的Webdav属性 来选择文件。选择是在数据库端完成的,这使得搜索非常有效率。返回的 列表可提供所选择文件的内容或属性。
如果非XML文件存储在XML数据库中,本发明也是可应用的。在该 情况下,对文件属性像日期、时间或存储位置的搜索仍然与XML数据的 情况一样快。缺省情况下不能搜索内容,但是可以通过连接自动分度器来 实现搜索内容,所述分度器支持各种文档和图像格式,如DOC、 PDF、 GIF、 JPEG。
为了示出本发明的技术益处,下面示出了非常少的程序语句,其对于 在目录"MyFirstProject"(包括其子目录)中获取所有WSDL文件且还对 于在该目录及其子目录中查找具有字符串"*page*"的所有文件和文件夹 是必要的。
J^eWaWZe wec avF"e =打ew
尸"e_/^s/7 = viWavFz7e.,"(iFz7ef'*7\^Rra^Vq/erf/*page*",. // 2 〃 to c/zecA " & a力/e or/bWer
如果改为将已知的WVCM API直接用于执行这些文件有关的操作, 为完成同样任务,需要超过一百行的Java代码。
权利要求
1.用于访问在物理数据存储器中的文件(70)的系统,该系统包括a.应用编程接口(API)层,该应用编程接口层(10)包括应用编程接口(11,60),该应用编程接口(11,60)扩展了类Java.io.file(12;50)以包括至少一种用于文件访问请求的方法;b.至少一个内部层(20),该内部层将文件访问请求转换为数据库调用;和c.包括数据库(100)的存储层(40),该数据库(100)适用于响应于所述数据库调用来访问所述物理存储器。
2. 如权利要求1所述的系统,其中扩展了所述类Java.io.file (12, 50)的所述应用编程接口 (11, 60)包括用于查找文件(70)、获取文件(70)、搜索文件(70)内容和获得文件(70)版本的方法。
3. 如权利要求1或2所述的系统,其中扩展了所述类Java.io.file (12, 50)的所述应用编程接口 (11, 60)包括用于在数据库(100)处进行验证的方法。
4. 如前述权利要求之一所述的系统,其中所述至少一个内部层 (20, 30)适用于将所述文件访问请求转换为XQuery调用。
5. 如前述权利要求所述的系统,其中扩展了所述类Java.io.file (12, 50)的所述应用编程接口 (11, 60)包括用于通过所述内部层(20)来发 起执行XQuery调用的方法。
6. 如前述权利要求中的任意一个所述的系统,其中所述内部层 (20)根据HTTP协议的WebDAV扩展将所述文件访问请求转化为调用。
7. 如前述权利要求中的任意一个所述的系统,其中在数据库服务器 上提供所述内部层(20)和所述存储层(40)两者。
8. 如前述权利要求中的任意一个所述的系统,其中所述数据库 (100)是XML数据库。
9. 如前述权利要求中的任意一个所述的系统,其中所述数据库(100)是面向服务的架构(SOA)的注册表并且其中要访问的文件 (70)是描述所述SOA的服务的WSDL文件。
10. 用于使用前述权利要求1-9中的任意一个所述的系统来访问物理 数据存储器中的文件(70)的方法。
全文摘要
本发明涉及一种用于访问物理数据存储器中的文件(70)的系统,该系统包括应用编程接口(API)层(10),API层(10)包括对类Java.io.file(12,50)进行扩展以包括用于文件访问请求的方法的API(11,60)。所述系统还包括至少一个内部层(20),该内部层(20)将文件访问请求转换为数据库调用。最后,所述系统包括具有数据库(100)的存储层(40),该数据库(100)适用于响应于数据库调用来访问物理存储器。
文档编号G06F17/30GK101286167SQ20081008967
公开日2008年10月15日 申请日期2008年4月11日 优先权日2007年4月11日
发明者拉尔夫·温克尔, 杰拉尔德·里斯托 申请人:软件股份公司