350 likes | 493 Views
VOQL 学习. 报告人:刘波 2004.12.30 日. Voql 作为三层进行描述. Open SkyQuery 由三部分组成. NVO Registry 所有的节点都必须在注册中心注册,在注册中心可以进行高级查询查出全部的 skynode 节点信息 Open SkyNodes 它是 openskyquery 的精髓。查询功能是由各个节点实现的。查询是由多个节点联合实现的。 Open SkyPortal
E N D
VOQL学习 报告人:刘波 2004.12.30日
Open SkyQuery 由三部分组成 NVO Registry • 所有的节点都必须在注册中心注册,在注册中心可以进行高级查询查出全部的skynode节点信息 Open SkyNodes • 它是openskyquery的精髓。查询功能是由各个节点实现的。查询是由多个节点联合实现的。 Open SkyPortal • 查询的起始点就是portal。在这里,查询被按一定的顺序分开并发给第一个节点。每个Portal必须要实现将查询分开,并传送。特殊的portal来提供异步执行,并且对查询状态进行跟踪,这都是额外的功能。
Execution Portal创建了一个含有特定节点查询的目标后,将会这个目标送到第一个节点。然而这个节点并没有执行,而是把这个目标传送到下一个节点,这样一直下去,直到要查询的目标到达最后一个节点。然后,最后一个节点执行结果返回给前一个节点,如此继续,知道再次返回主portal。这是方法避免了状态跟踪,并很好的实现了异步查询。
Basic skynode 的必备条件 • Skynode将用注册中心来注册,type=skynode skynodetype=basic;intermediate;full • Skynode 要实现tables”接口,用来返回所有表数据的列表。 • Skynode 要实现“column”接口,用来返回关于一个给定列表的列信息 • Skynode要实现“format”接口,返回一个这个node节点支持的查询结果格式的列表。比如:Votale;dataset;ascii • Skynode 要实现“function”接口,用来返回大量的metafunctions • Skynode要实现“performquery”接口,用xml文档来包括adql查询和一个可选的被称为“format”的字符串参数 • Skynode接受了与voql等同的sql98元数据查询标准,这些查询将用sql语句来表达,但用adql/xml来传送到节点。
Full skynode的必备条件 • Skynode要实现querycost()接口,用来让一个简单的adql查询去返回每平方度的物体密度 • Skynode要接受复杂Shapes,在他们的查询里作为定义的adql句法来。 • Skynode要能在他们研究的数据和提供的数据中,用votalbe格式的表执行交叉证认
VOQL第一层(ADQL版本) • ADQL-0.9 Specification - WD_ADQL-0.9.pdf • ADQL基于xml的查询语言 • ADQL/x:符合XSD的xml文档 • ADQL/s:基于SQL92,符合ADQL语法 • ADQL/x and ADQL/s 是可转换的,并且在转换的时候没有信息丢失。 • VOQL比ADQL要高一个层次它基于adql和webservice
ADQL---SQL转换器 • The currect translation services are for 0.7.4 and are at(网上转换器s/x;x/s) http://openskyquery.net/adqltranslator • 提供了一个A java client for the translation service has been prepared (JAVA客户端转换)
ADQL0.9的功能 • Functions : Built-in function support in ADQL • DML : Insert, Delete, Update (Create, Drop ?) • Comments : SQL style comments should be in ADQL • Sub Queries: Currently this is not suported • INTO : MyDb, MySpace for both select and insert • Top : tie down semantics • GCDIST : This is just another function .
功能 • XMATCH : Move sigma inside the bracket (or drop it ?) Add + for outer join and ? for uncovered areas • JOIN : Use Explicit JOIN syntax • UNITS : Add to ADQL/s, ADQL/x (need more metadata on table in SkyNode) • XPATH : Allow XPath like column names • Special Characters : Allows for [ ] to enclose names containing keywords or starting with numerals • Mathmatical Functions • Regions: Region(‘CIRCLE J2000 19.5 -36.7 0.02’)= • Xml的表达方式:RegionXML (‘<circle><coordsys>ICRS</coordsys><ra>19.5</ra><dec>-36.7</dec><radius>0.02</readius></circle>’)
演示 • www.Openskyquery.net
解析skyquery.net 报告人:刘波 2004.12.30日
Skyquery网站 • Skyquery是一个联合数据库查询原型,他是使用了一系列webservice的互操作来实现的。 • 他们的项目是取决于部分的数据集,sdss,2mass,first radio survey等星表。这些不同的巡天天文数据集被分别存储在不同的地理位置并在同一个系统框架中被转换,并运行在sql server数据库上,使用了skyserver的模板。 • Openskyquery和skyquery用的是同样的数据源。
Skyquery的体系结构:三层:portal;skynode;clientsSkyquery的体系结构:三层:portal;skynode;clients
三层说明 • The Portal: The XML (.NET) Web service 提供一个进入分布式查询网络的入口,它取决于元数据和skynode上的数据库查询服务 • SkyNodes: 独立的数据库连同他们的xml webservice 包都位于不同的位置。Clients:每一个client都是一个基于applet的查询接口连同一个soap client。 目前他们用一个asp client来进行测试。
工作流程 • 每一个数据库可以通过他们在portal上的注册信息.自发的参与查询。目前skynode webservice是一个内部的,并没有实现uddi注册,这些信息可以通过文件的形式得到实现。 • 用户通过asp客户端提交查询到portal。Portal解析查询然后进入子查询。这是通过skynode上的元数据服务器来使用有效的元数据信息来完成的。 • 子查询首先被转换成为很多查询,这些查询的行的数量由原始的子查询来决定。此后将查询按照一定的规则进行分配。如果遇到交叉证认情况:他们会将用户所要证认的信息按照一定的算法进行逐点交叉,会在一开始就进行分类,将最小数量的信息或最大数量的信息先交叉,然后将交叉后的信息传递给下一个节点,最终把交叉证认的结果返回到portal上来。这样做的好处,就是解决了部分传输的问题,把数据分布在不同的skynode portal上进行交叉证认,同时也缓解了skyquery portal的压力。 • 在每个数据库节点的 web service 解释信息,数据库执行查询 并将其作为一个xml数据集返回给client
交叉证认算法 • 他们已经做了很多关于交叉证认算法的设计,并且将其封装在sql的存储过程中,被成为spGetMatch 它是通过SkyNodeWS的 XMatch()函数来被调用的。 • 他们的交叉证认原理如下: • 为了优化网络冲突,我们首先在符合用户匹配限制的数据库中获取天体的数量。同时做一个计算将天体信息导入缓存。当我们访问天体信息第二次去做交叉证认时,如果可能,我们将在缓存中找到他们,因此交叉证认的速度会便的更快。很多时间被花费在节点间传输天体信息中,因此,我们设计了这个缓存。
我们需要用户去指定以下除了非空间限制之外的信息:我们需要用户去指定以下除了非空间限制之外的信息: • 依据天文坐标(ra,dec)的中心和一个查找半径(角分)指定一个圆形区域来进行空间范围的查找。它允许我们去限定查找一个定义好的区域的空间范围去。This allows us to limit the spatial extent of the search to a well-defined area. • The syntax for this in SkyQL is AREA(<ra>, <dec>,<search-radius>)
我们已经开发了一个被称之为 spGetMatch()的 SQL Server 的存储过程,在两个数据库之间进行交叉证认。它在的两个数据库的数据之间做概率连接,这个数据时基于标准差的。 • 交叉证认算法编码在存储过程中,作为一个最小二成法的概率计算: • 这里的xyz是笛卡儿匹配,对应具体的ra,dec。a是一个from the astrometric precision of the survey的加权参数。l是拉格朗日乘法器,在最低限度的保证xyz是一个单位向量。spGetMatch的代码包含在代码列表里。
我们在每步交叉证认中计算四个积累量他们是:我们在每步交叉证认中计算四个积累量他们是: • 给出的 是最好的位置 The log-likelihood at that point is given by • This is divided by the number of surveys considered up to that point, and compared to the tolerance. If a tuple抯 log-likelihood exceeds this threshold, it is killed. This cross-identification process is fully symmetric, the particular order of matching does not matter. The cross-matching is applied to each node recursively by the portal when it runs the query execution plan.
What is SkyQL? • SkyQL 是一个基于SQL的简单查询语句, 包括sting of SELECT ... FROM ... WHERE ... 字句. • It has several restrictions, mostly imposed by the time constraints of this web-contest 。 • 它业有一些扩展,主要部分处理分布天文的数据,面向天文进行查询 (XMATCH, AREA clauses).
Restrictions • 所有SQL关键字必须用大写 (including AND, OR, etc). • 这里总是必须是一个SELECT, FROM and WHERE 字句 • 在数据库的from字句中必须为他们标记符号服务名加上前言,如:(currently one of SDSS, TWOMASS, FIRST), 用(:)分开. • 每个数据表必须跟一个独有的别名,并且所有的列名应该为他们的别名加前言,并用(.)分开. • 从每一个数据库主表中,必须至少表述一次,并且能多次显示。 • 你应该选择出现在where字句中的所有的属性。 • 在where字句中,他们必须是一个 XMATCH and an AREA 字句. • The XMATCH 在不同数据库之间进行证认。主要表的别名必须被声明。当别名前面有!号时,我们就认为是一个剔除,除掉该表交叉证认的信息。 • XMATCH(s,t,!f)< 2.5 的意思是: 找出所有在s和t中显示的天体 并且不要在f中检测到的信息。这里s,t,f都是主表。返回的这些行,都是在2.5个sigma 以内的公共中心.
Restrictions • SELECT o.objId, o.ra, o.type, t.objId, t.j_m, o.i • FROM SDSS:PhotoPrimary o, TWOMASS:PhotoPrimary t • WHERE XMATCH(o,t)<3.5 AND AREA(185.0,-0.5,4.5) • AND o.type=3 • AND o.i < 21 AND t.j_m <18 AND (o.i - t.j_m) > 2
令人迷惑的问题 • 什么是skynode,openskynode • 什么是skynodeportal openskynodeportal • 什么是skyquery,openskyquery • 什么是skyqueryportal openskyqueryportal • 什么是skyql; 什么是adql 以下解释仅代表个人观点。如有雷同纯属巧合
令人迷惑的问题(skynode) • Skynode(概念)就是用webservice实现查询的天文数据库节点。有两种实现:(skynode=openskynode) Ivoa提出的SkyNodeInterface-0.7.4.pdf说明了实现skynode需要满足的条件。 • skynode必须实现一系列的web接口。输出时需要支持votable。 • skyquery网站中的skynode不是按照voql来实现的。Openskynode是按照voql标准实现的。
令人迷惑的问题(skynodeportal) • 任何一个执行查询接口的VO站点都被认为是一个basic skynode。仅full skynode可以实现交叉证认,每个skynode均需要去注册中心注册。我们可在NVO的注册中心进行注册并通过 OpenSkyQuery Portal来进行交互。但skyquery portal 没有实现注册功能! • 概念中:Skynodeportal(概念)=openSkynodeportal(实现),在2004年的会议后将skynode 分为两层,一层为skynode(定义中的), 一层为skynode portal(为skynode发布数据用的门户).
令人迷惑的问题(skyquery) • Skyquery=openSkyquery:是一个分布式天文数据联合查询系统。一个时定义,是个是具体实现。 • Skyquery是一个联合数据库查询原型,它是使用了一系列webservice的互操作来实现的。 • 网站:Skyquery.net=openskyquery.net:联合查询系统的门户,支持分布式查询,支持交叉证认,可以画图。实现机制均是用webservice来实现的。区别:一种支持的是skyql 查询,另一种则支持adql查询。
令人迷惑的问题(adql&skyql) • Adql:基于xml且工作在sql最小扩展集上支持天文查询的语言。并实现了cone search等功能(为了便于程序交互)。 • Skyql:是传统的sql语句为基础的天文数据查询语言。 包括 SELECT ... FROM ... WHERE ... 字句. • 它业有一些扩展,主要部分处理分布天文的数据,面向天文进行查询 (XMATCH, AREA clauses).
问题的总结 • 我们的目标是建立一个符合ivoa 的skynode标准的天文数据节点。Nvo就是按照这种标准来实现的分布式天文数据查询系统并按照其标准建立的节点。 • 因此我们只需要参考nvo的openskyquery.net来设计和建立属于我们自己的skynode即可。 • 下面我主要和大家讨论的是关于nvo所实现的openskyquery查询系统。