楼主: kedemingshi
1152 26

[计算机科学] 数据库和逻辑程序设计中递归查询的实验 系统 [推广有奖]

11
nandehutu2022 在职认证  发表于 2022-4-15 09:56:28
我们的方法遵循1和2 r-1之间的二进制枚举,对于这些二进制数中的每一个,它生成一个di-ertial规则;特别是,如果二进制数上的位置j包含一个0,那么pk-2ji被放入相应的规则中,其他w iseutlanpk-1ji使用d。对于前面的例子,在我们的方法中,规则(r)是用上面所示的连接(1)、(2)和(3)来评估的。逻辑程序设计的理论与实践13是一个半朴素的(输入:r,)。...,RL。输出:Q,...,Qm,P,...,Pn)beginfor i:=1到m do//计算非递归谓词(1)qi=EVAL(qi,R,...,Rl,Q,...,Qm);对于i:=1到n,请开始//初始化递归谓词(2)pk-2i=EVAL(pi,R,...,Rl,Q,..,Qm);(3)pk-1i=pk-2i;结束;repeatfor i:=1到n做begin(4)pki=EVALDIFF(pi,pk-2,..,pk-2n,pk-1,....pk-1 n,R,...,Rl,Q,...,Qm);(5)pki=pki-pk-2i-pk-1i;结束;对于i:=1至n,开始(6)pk-2i=pk-2ipk-1i=pki;结束;直到pki=i 1≤i≤n;对于i:=1至n,开始(8)pi=pk-2i;结束。图3.算法di-ertial半天真地认为这种方法产生更多的辅助规则W.R.T.(Balbin和Ramamohanarao 19 87;扎尼奥洛等人。1997)但是,在避免执行同一组冗余连接的同时,它允许处理较小的关系。在处理大量数据时,这可能是一个很好的优势,因为管理几个小连接比执行几个大连接需要更少的资源。它为输入程序P的每个组件PCC执行,并假定输入DLPArules已经被转换为SQL语句。这里,comp onent PCdepe nds关于谓词r,...,rn在以前的组件中解决并具有q,..,qmas非递归谓词或事实和p,...,pnas递归预测。函数EVAL(qi,R,..,Rl,Q,..,Qm)执行具有qias头的非递归规则的计算如下:它运行与具有qias头的规则相对应的每个SQL查询;函数EVALDIFF(pi,pk-2,..,pk-2 n,pk-1,..,pk-1 n,R,..,Rl,Q,..,Qm)实现了对半朴素方法的优化;它计算谓词piat当前迭代k的新值,从直到迭代k-2的计算值和在前一个迭代k-1中获得的新值开始。更详细地说,将考虑每个具有pias头的重复规则对应的SQL语句。EVALDIFF的最终结果存储在table(R)PKI中。显然,不能证明EVALDIFF不重新计算在以前的迭代中得到的任何一个metruth va lue s a lready。结果,在计算EVAL差值后,pkimustbe从这些值中清除;这正是算法的指令(5)所做的。说明(6)和(7)在每次迭代中重复使用相同的关系式(pki,pk-1i,pk-2i)。最后,值得指出的是,为了清楚地说明,给出了算法的最后一个for(说明14 G.Terracina,N.Leone,V.Lio,C.Panetta(8));实际上,在实际实现中,我们所表示的pk-2ii正是表pi。值得指出的是,计算的基本步骤是对底层数据执行标准d SQL查询。事实上,DLVDBB实现的主要目标之一是将单个(非递归)SQL语句与程序的每个规则(递归或NOT)相关联,而无需主存数据结构对计算的支持。这使得DLVDBB可以最小化由有限的mainmemory维度引起的“内存不足”问题。

12
何人来此 在职认证  发表于 2022-4-15 09:56:36
此外,评估策略的整体组织允许从对prog ram的密集组件的优化(在本节开始时概述的程序重写技术)和对扩展组件(数据)的优化(在DBMS中作为工作数据库实现)两个方面进行优化。这些优化的结合,以及对e-cient SQL查询中的数据图的明智翻译,使得DLVDBB能够在晚些时候促进评估过程。主存计算策略(参见第6节)。4.2本节从DLPAto SQLIn中,我们描述了用来翻译DLPArulesin SQL语句的一般函数。Functio以伪代码表示,为了表示清晰,它们省略了一些细节;此外,由于逻辑程序中的谓词和数据库中的关系之间存在一对一的关系,在下面,当这不混淆时,我们可以互换地使用谓词和关系。值得回顾的是,这些一对一的对应关系是由辅助指令中的use r指定和系统自动派生的映射确定的。为了给所给出的函数提供示例,我们利用以下引用模式:employee(Ename,Salary,Dep,Boss)department(Code,Director)存储给定公司各部门员工的信息。只有包含聚合函数的规则和包含内置的规则例外。在Translation中生成的SQL语句的一般格式是:insert INTO head(r)(TranslateSQL(r)),其中head(r)返回与r的head相关的关系;这项任务是通过考虑辅助指令中规定的映射来完成的。TranslateSQL(r)考虑规则的类型(例如,如果它包含否定或内置等)并调用合适的转换函数。逻辑程序设计的理论与实践15正规则的翻译。直观地说,正规则的SQL语句是由规则头与规则体之间的变量绑定决定的。陈述的起始部分是由构成规则的b部分的前项决定的;体原子和常数之间的变量绑定决定语句的WHERE条件。最后,为了消除元组重复,增加了一个EXCEPT部分。例4.1考虑fo lowing规则:q(Ename):-employee(Ename,100,000,Dep,Boss),department(Dep,rossi)。它返回所有在该部门工作的雇员,其主管是rossi,年薪为100,000欧元。corr esponding SQL语句如下所示:插入q(选择employee.ATTFROM employee,departmentWHERE employee.ATT=Department.ATTAND Department.ATT=\'ROSSI\'and EMPLOYEEE.ATT=1000.000 Exception(选择*FROM q))转换带有反原子的规则。直观地说,这类规则的SQL语句的构造如下所示:规则的po sitive部分的处理方式与函数translatePositiverule的处理方式非常相似;然后,每个被否定的原子由一个corr来处理,而不是部分地在语句中。

13
kedemingshi 在职认证  发表于 2022-4-15 09:56:42
下面的例子很好地说明了这种行为。示例4.2下面的程序(使用目标topEmployee)计算除了董事之外没有其他老板的员工的。topEmployee(Ename):-employee(Ename,paraly,Dep,Boss),department(Dep,Boss),not otherBoss(En ame,Boss)。otherBoss(Ename,Salary,Dep,Boss):-employee(Ename,Salary,Dep,Boss),employee(Boss,Salary,Dep,Boss),employee(Boss,Salary,Dep,Boss)。上面的规则被转换为以下SQL语句:插入topEmployee(SELECT employeee,attrom employee,departmentWHERE(16 G.Terracina,N.Leone,V.Lio,C.PanettaTranslating使用内置谓词的规则。正如第2节所指出的,除了用户定义的谓词之外,推理语言E还提供了一些比较谓词和算术谓词。当运行包含内置谓词的pro gram时,必须对相关变量的允许值范围进行调整。我们在workingdatabase中添加了一个基于允许变量的最大值的限制来映射这种必要性。此外,为了允许属性之间的数学运算,DLVDBB要求属性的类型在辅助指令中适当地定义。翻译包含内置谓词的规则的函数与翻译正规则的函数相比略有不同。事实上,规则中内置谓词的存在意味着在语句的WHERE部分添加相应的条件。然而,如果内建的变量与原子的任何其他变量都不绑定,必须利用#MaxintValue将该变量绑定到其允许的值范围。示例4.3程序:q(Ename):–employee(Ename,Salary,Dep,Boss),Salary>100.000.被转换为SQL语句:insert INTO q(SELECT employee.attfrom employee WHERE employeee.att>100.000 except(SELECT*FROM q))转换带有聚合原子的规则。在第2节中,我们介绍了带有聚合的DLP的语法和语义。我们还表明,对于每个包含gaggre gate原子的规则,必须满足特定的安全条件,以保证相应规则的可计算性。举个例子,聚合原子不能包含与它们所放置的规则的头部相互递归的谓词;在我们看来,这意味着每个聚合函数的真值可以在计算相应的规则之前一次性地计算出来(可以是,反过来,递归)。实际上,在输入程序执行前重写输入程序的过程,自动重写每个包含Gregate原子的规则,使其遵循标准格式(我们在下面将此过程称为标准化)。给定形式为:head:-body,f({V ars:Conj})Rg的ge neric规则,其中Conj是g能合符而Rg是保护符,系统自动将该规则转换为formauxAtom:-Conj,BindingAtoms.head:-body,f({V ars:auxAtom})Rg的一对规则,其中auxAtom是包含Conj和Conj与body和/或head结合所必需的原子(BindingAtoms)的sta ndard规则。

14
mingdashike22 在职认证  发表于 2022-4-15 09:56:49
注意,uxAtom只包含那些对于逻辑编程的计算理论和实践严格必需的Conj属性17Function TranslateAggregateRule(VAR r:DLPArule):SQL statementbeginfor aggr atom(r)中的每个a do beginaux:=auxatom(a);SQL:=“Create VIEW”+aux+“supp”+“as(选择”+bound attr(a)+“,”+aggr func(a)+“(”+aggr attr(a)+“)”+“from”+aux+“group BY”+boundattr(a)+“);(r,guards(a));end;返回SQL;end.fig。4.函数TranslateAggregateRuleof f a nd,co。它的属性可能比conj中的属性少得多。在我们的方法中,我们依靠这种标准化来将这类规则翻译成SQL;很明显,只有第二个规则,关于a gregate函数的c,由我们接下来介绍的函数处理;实际上,figurrst规则是由已经给出的函数之一自动转换的。直观地说,我们翻译的目的是从auxAtom创建一个SQL视图auxatomsupp,它包含将auxAtom与原始r ule的其他原子绑定所需的所有属性,以及一个存储在auxAtom上的计算结果的列;然后,原始的聚合原子被thisview和guard条件替换,并适当地被逻辑条件转换为tween变量。在这一点上,结果规则是一个标准规则,不包含aggre gatefunctions,然后可以由我们前面预先指定的函数之一翻译;很明显,在这个过程中,必须对原始输入规则r进行修改,以便对其“S Tandard”部分进行适当的翻译。函数如Infigure4所示;它接收一个以聚合为输入的规则r,并返回r中聚合函数的SQLviews和modi(标准)r,后者将由标准转换函数处理。这里,aggratom(r)函数返回r中的聚合原子pres;aux atom(a)返回与a的Conj相对应的辅助原子,并由标准化自动生成。函数绑定attr(a)在输出中产生与规则中其他原子的属性绑定的theatom a的attr ibutes,而aggrattr(a)返回必须对其进行聚合的属性(V ars中的figurst变量)。类的聚合函数对应的SQL aggre gation语句。removeFromBody和addToBody函数负责改变原始规则r,使其成为标准规则(没有聚合)。特别地,removeFromBody(r,a)将聚合原子a从r uleHere中移除,在下面我们使用operator+来表示Strings之间的“append”运算符。18 G.Terracina,N.Leone,V.Lio,C.Panettar,而addToBody将auxatom supp(a)和guards(a)添加到r中。

15
kedemingshi 在职认证  发表于 2022-4-15 09:56:55
注tha tauxatom supp(a)在输出中产生与刚创建的辅助视图相对应的原子名称,其中a s gu ards(a)在规则中的属性之间转换逻辑语句中的聚合atoma的gua rd。示例4.4考虑以下规则,计算为其雇员的sa Lariese花费的部门,大于c e值阈值的量,假设100000:costlydep(Dep):-department(Dep,),#Sum(工资,Ename:雇员(Ename,工资,Dep,)}>100000。标准化自动将此规则重写为:AUXEMP(工资,Ename,副):-部门(副,)、雇员(Ename,工资,Dep,).costlydep(Dep):-department(Dep,),#sum{Salary,Ename:auxemp(Salary,Ename,Dep)}>100000。figurrst规则被视为标准的正规则,并被转换为:INSERT INTO aux emp(SELECT employee.att,employee.att,department.attfrom department.att.attfrom department,employee WHERE department.att=employee.attexcept(SELECT*FROM auxemp))第二条规则被转换为:create VIEW aux emp supp as(SELECT auxemp.att,SUM正如前面所指出的,我们的程序评估策略利用了半朴素方法的重新版本。这是基于将递归语句转换为非递归SQL语句,在与递归谓词相关的关系的标准和di版本上交替操作。该算法每次执行该语句时,必须只计算头中predic ate的新值,这些新值可以从两次迭代所计算的值中获得。直观地说,翻译算法必须从所考虑的规则r中选择sta ndard和di interential res的适当组合;然后,对于这些组合,它必须在相应的规则r\'中重写r。这样得到的每个r\'都是非递归的,因此,它可以由函数处理。注意,还需要Ename来对获得s ame金额的员工的工资进行求和(参见Dell\'Armi et al.中关于set/multisets的讨论)。逻辑编程的理论与实践19function TranslateRecursiveRule(r:DLPArule):SQL StatementBeginSQL:=“”;如果(hasAggregate(r))SQL:=TranslateAggregaterule(r);n:=2RecursiveP Reddicates(r)-1SQL:=SQL+“插入到”+“head(r)+”(“;对于i:=1到n做beginLet r\'是一个规则;sethead(r\',head(r));对于每个非r ecursive谓词qjin body(r)doaddToBody(r\',qj);对于j);else addToBody(r\',@pk-1j);if(i6=1)SQL:=SQL+”union“;SQL:=SQL+Tr ansl ateNonRecursiveRule(r\');end;SQL:=SQL+”)“;return SQL;end.fig。5.TranslateRecursiveRuleTranslateNonRec ursiverule。算法Transla teRec ursiveRule如图5所示。这里,函数TranslateAggregateRule和TranslateNonRecursiveRule在前面已经介绍过。函数hasAggregate(r)返回true(如果r-c ontains聚合函数)。函数RecursivePredicates(r)返回r的主体中递归谓词的出现次数;head(r)返回与r的head相对应的关系的di-herential版本。函数setHead(r\',p)将r ule r\'的中心设置为谓词p;类似地,函数addToBody(R\',p)将谓词p加到R\'aC的主体上。

16
何人来此 在职认证  发表于 2022-4-15 09:57:01
函数bit(j,i)返回i的二进制表示的j-thbit。值得注意的是,由functionTranslateRecursiveRule产生的查询的执行为r实现了函数EVAL DIFF(图3的算法)。示例4.5考虑这样的情况,我们需要知道雇员是雇员的老板是直接的还是通过一些雇员,…,eis e的boss,eis e的boss等。那么,我们必须计算程序:R:q(e,e):-employee(e,squary,Dep,e).R:q(e,e):-q(e,e),q(e,e).包含重复规则R。这一步不能在半朴素计算的一个迭代中求出。ris规则不是递归的;它被函数TranslatePositiveRule转换为下面的SQL并计算一次:20 G.Terracina,N.利昂,V.利奥,c.PanettaINSERT到q(选择employee.att,Employee.attfrom employeeEXCEPT(SELECT*FROM q))规则ris firefrst通过函数TranslateRecursiveRule转换为规则的temporaryset:R\':qk(E),E):-QK-2(E,E),qk-1(E,E).qk(E,E):-qk-1(E,E),QK-2(E,E).qk(E,E):-qk-1(E,E),qk-1(E,E).它被翻译成:插入到qk(选择qk-2.att,qk-1.att2 FROM qk-2,qk-1 where(qk-2.att=qk-1.att)除(SELECT*FROM@qk)UNIONSELECT}qk-1.att,qk-2.att2 FROM@qk-1,qk-2.att2除(SELECT*FROM@qk)UNIONSELECT}qk-1.att,qk-2.att2除(SELECT*FROM@qk)UNIONSELECT}qk-1.att)除(SELECT*FROM@qk)UNIONSELECT}qk-1.att,qk-2.att)除(SELECT*对于上面的声明:除了(SELECT*FROM qk-1)除了(SELECT*FROM qk-2)请注意,在算法di hierential Semi-Naive(图3)之后,qk-2和qk-1是用r的计算结果初始化的(存储在q中-参见图e 3中的说明(2)和(3)。然后,itera执行上面的SQL,直到reached figuxp oint。注意,前面提到的proce ss执行图3中算法的指令(1)(5)。由指令(6)和(7)以直接的方式执行从一个迭代到随后一个迭代的qk-1和qk-1的更新。4.2.1完整的示例4.6考虑示例3.1中展示的datalog prog ram和图2中展示的映射。DLVDB为它们派生的完整查询计划是:(1)插入到destinationsrel(选择f.fromx,F.Toy,f.company从treathightrel作为f)(2)插入destinationsrel(选择f.fromx,F.Toy,C.Company2从Treatightrel作为f,codeshare rel作为cWHERE(f.id=c.flightid)和(f.company=c.company1)除(选择*FROM destinations rel)外的逻辑程序设计理论与实践21(3)插入d destinations rel(选择d1.fromx,D2.Toy,d1.CompanyFrom d1destinations rel AS d1,destinations rel AS d2WHERE(d1.Toy=D2.Fromx)和(d1.Company=D2.Company)UNIONSELECT d1.Fromx,D2.Toy,d1.Company FROM d1destinations rel AS d2WHERE(d1.Toy=D2.Fromx)和(d1.Company=D2.Company UNIONSELECT d1.Fromx,d1.CompanyD1Destinations rel AS d2WHERE(d1.Toy=D2.Fromx)和(d1.Company=D2.除了(SELECT*FROM ddestinations rel)外,SQL语句(1)和(2)只执行一次,因为它们与递归规则相关。相反,语句(3)被exe c uted多次,直到达到最小值,即ddestinations rel为空。注意ddestinations rel和d1 destinations rel分别对应于函数translaterecursiverule中引入的“head(r)”和“pk-1”;如4.1节所示,计算算法suita bly从ddestinations rel中每次迭代时派生的新值更新destinations rel的元组。5系统架构在本节中,我们介绍了我们系统的总体架构。它被设计为DLV系统的扩展(Leone等人)。

17
何人来此 在职认证  发表于 2022-4-15 09:57:08
2004),它允许在数据库上评估逻辑程序,并处理分布在多个数据库上的输入和输出数据,它结合了DLV的强大功能(以及在其中实现的优化策略)和DBMSs(Garcia-Molina et al.2000)。如前所述,该系统提供了两种截然不同的功能模式,即直接数据库执行模式和主存储器执行模式。下面我们分别给出了两个相应的体系结构。5.1直接数据库执行体系结构(DLVDB)图6说明了用于直接数据库执行的系统体系结构。解析器对输入的pr图进行分析,解析器以适当的方式在内涵数据库(IDB)中对其进行编码,并根据程序中直接指定的事实(如果有的话)在主存数据结构中建立扩展数据库(EDB)。对于已经存储在数据库中的事实,主存中不生成EDB。在此之后,优化器应用重写过程,以便对一个程序P\'进行重写,该程序P\'相当于P,可以更准确地进行计算;由该模块执行的一些操作已经在第22节G.Terracina,n.Leone,V.Lio,C.Panettafig中强调了。6.DLVDB.4.1的体系结构。依赖图构建器计算P\'的依赖图,它连接的组件和这些组件的顶级排序。最后,激活系统的核心部分DB实例模块,该实例模块包括:(一)解析器生成的IDB和EDB(如果不是空的);(二)依赖图生成器生成的依赖图(DG);(三)指定DLVDBand与数据库之间所需交互的辅助指令。它通过第4节中所示的自底向上的FiffxPoint评估策略来评估输入程序。由于输入程序假定d是正常的和分层的(见第2节),所以DB实例化完全重新评估程序,之后不需要再使用其他模块。所有实例化步骤都是通过执行SQL语句直接在工作数据库上执行的,在PR-OCESS的任何阶段都不从数据库加载数据到主存中。这使得DLVDBB可以完全独立于输入数据的维度和在评估过程中生成的事实的数量,与数据库的通信是通过ODBC执行的。这使得DLVDBBotht能够独立于特定的数据库管理系统,并且能够在互联网上处理数据库。需要指出的是,DLVDBBotht的体系结构是这样设计的,它充分利用了逻辑理论和数据库理论的优化。实际上,实际评估的ted prog ram是优化器模块应用程序重写技术产生的,旨在简化评估过程并降低所涉及关系的维数(见4.1节)。然后,在数据库管理系统中实现了面向XploitData的查询计划中SQL语句的执行。就这后一点而言,逻辑编程的理论与实践23fig。7.DLVIoo的体系结构方面,我们发现,为DLVDBB处理workingdatabase的那种DBMS可能具有良好的ECT系统性能;事实上,whenDLVDBwas与高度复杂的DBMSs相结合,在处理大量数据时通常表现出更好的性能。上面的观察指出了面向数据的优化的重要性和dlvdbw.r.t的潜在优势。操作onad-hoc dbmss的演绎系统。

18
何人来此 在职认证  发表于 2022-4-15 09:57:14
事实上,DLVDBB可以很容易地与目前使用的最先进的DBMSS相结合(前提是它支持标准SQL),因此,对专用DBMS的改进是一个更重要的任务。5.2 main-memory execution(DLVIO)的体系结构DLVIO的体系结构如图7所示。它用ODBC功能扩展了经典的DLVarchitecture以将RT/数据从/导出到DatabaseRelations。主存执行方式作为外部数据库和标准DLV程序之间的接口(基于onODBC连接)。在更多的deta中,输入数据由常规数据库和通过#import命令指定的ODBC a访问的关系表提供。具体来说,foreach#imp ort命令系统通过用户指定的SQL查询“逐行”从相应的表中检索数据,并为每个选定的元组创建一个原子inmain-memory(按照DLV要求的格式)。将ofeach导入atom的名称设置为predname,并将红色作为事实。文本框中可能存在的事实以标准方式输入DLV。在执行任何计算任务之前,在主存中提取所有数据,然后DLV内核(文件中阴影部分)每隔一段时间生成一个答案集。它由三大模块组成:“智能接地”模块、“模型生成器”模块和“模型校验器”模块;这些共享一个maindata结构,即“地面程序”。该模型是通过智能地基技术,使用di-erential(和其他先进的)数据库技术和suita blemain-memory数据结构创建的,并由模型生成器和ModelChecker使用。保证地面程序与原始程序具有完全相同的应答集。对于图6.24中G.Terracina,N.Leone,V.Lio,C.Panetta所示的一些语法受限的programsIt i.n Corporates解析器、优化器和DG Builder类(例如Strati firemed程序),智能接地模块已经计算出了相应的答案集。对于较难的问题,大部分计算由模型生成器和模型检查器执行。另外,前者产生一些“候选”答案集(模型)(Faber et al.1999b;Faber et al.2001),后者随后验证这些答案集的稳定性和极小性。模型检验器验证模型a t手是否是答案集。这一任务通常是很难的,因为检验一个模型的稳定性是已知的conp-complete。然而,该模块利用了这样一个事实,即最小的模型检查--最难的部分--可以为相关类的headcycle-free(HCF)程序执行(Ben-Eliyahu and Dechter1994;Ben-Eliyahu and Dechter1996)。每次找到答案集M时,都会调用“筛选”,它执行一些后处理,控制计算的继续或中止,并可能按照#export命令的规定将输出数据存储在相应的关系表中。特别是,如果存在来自prednameto tablename的#expor t命令,模块将在tablename中为名为predname的M中的eachatom生成一个新的元组。6实验和基准测试本节我们将介绍我们的实验框架以及将DLVDBsystem与几个最先进的系统进行比较的结果。基准是根据(Bancilhon and Ramakrishnan 1988)和(Greco 2003)中提出的准则、问题和数据结构设计的,以评估演绎数据库系统的性能。粗略地说,在(Bancilhon and Ramakrishnan 1 988)和(Greco 2003)中使用的问题基本上求助于对数据结构进行递归查询。

19
何人来此 在职认证  发表于 2022-4-15 09:57:20
实验的主要目的是评价被测系统在查询回答时间和可管理数据量两方面的演绎能力,所有的测试都是在Pentium4机器上进行的,机器上有1.4GHz的CPU,512 Mbytes的RAM.6.1比较系统概述为了与所考虑的re搜索领域的最先进的系统进行比较和共同的分析,我们在两种执行模式(即两种DLVDBand DLVIO)下将我们的系统性能与:(i)LDL++进行了比较,因为它是DuctiveDatabase系统最健壮的实现之一;㈡XSB,作为自上而下评价战略的具体实施;(iii)Smodels,与DLV一起使用最广泛的答案集Progr ammingsystems之一;(iv)支持上述执行的商业DBMSs中,#EXP ort命令的存在自动限制系统只能生成给定的答案集。递归查询逻辑程序设计的理论与实践25。请注意,此类DBMSs的使用许可证不允许usto在文件中明确提及它们;a是一个结果,在下面,我们简单地称它们为DB-A,DB-B和db-c。读者只需知道它们是目前可用的三个顶级商业数据库系统,它们也支持递归查询。请注意,目前的DBMS,如Postgres和MySQL不能测试;事实上,它们不支持递归查询,而递归查询是我们测试框架的基础。此外,正如我们在导言中所指出的,其他基于逻辑的系统如ASSAT、Cmo de ls和CLASP没有经过测试,因为它们使用了相同的Smodels(LParse)的接地层,并且,正如下面将清楚地表明的那样,基准测试程序完全由这一层解决。下面我们将概述被测试系统的主要特征,重点讨论它们对本工作所述语言和技术能力的支持。具体来说,我们考虑,对于每个数据库系统,它表示递归查询的能力,对于每个基于逻辑的系统,它的语言的可扩展性及其与e xternal dbms交互的能力。对于每个系统,我们使用了测试结束时可用的最新版本。6.1.1数据库系统就数据库系统而言,值得指出的是,没有一个被考虑的数据库系统完全采用SQL99标准来识别递归查询,但它们都引入了专有构造。特别是,DB-A和DB-B都支持我们的基准测试所需的标准递归功能,即使专有构造必须添加到标准SQL99语句中以保证一些kindsof查询的终止。相反,DB-C实现了SQL99特性的一个很大的子集并支持递归,但就r ecursive查询而言,它利用了专有的c onstructs,这些c onstructs不遵循标准的SQL99表示法,并且它们的表达能力低于SQL99;例如,不可能在递归语句中表达未绑定的查询(例如,图中至少有一条路径链接的所有节点对)。6.1.2 LDL++LDL++系统(Arni et al.2003)将基于规则的编程与辅助内存访问、跨操作管理恢复和集成控制集成在一起。底层数据库引擎是在ELDL项目中专门开发的,被设计成一个虚拟内存记录mana ger,它针对包含经常使用的数据的页可能存在于主内存中的情况进行了优化。LDL++也可以与外部DBMSs接口,但有必要实现供应商指定的驱动程序来处理数据转换(Arni et al.2003)。

20
大多数88 在职认证  发表于 2022-4-15 09:57:26
LDL++语言支持c omplex术语,在事实和规则中,分层否定,并不关心N-决定论,基于26 G.Terracina,N.Leone,V.Lio,c.Panettaon稳定模型语义。此外,LDL++支持通过特殊规则进行更新。6.1.3 XSBXSB系统(Rao et al.1997)是一个基于PROLOG/SLD解析策略的内存演绎数据库引擎,称为SLG。它支持显式的本地分层程序。SLG-WAM推理机由一个用于反逻辑程序的推理机组成,该推理机通过否定处理循环的机制进行了扩展。这些机制是负环检测、延迟和简单性。XSB允许利用驻留在外部数据库中的数据,但对这些数据的推理是在主存中进行的。我们在测试中使用的XSB版本是2.2.6.1.4 SmodelsSmodels system(Niemel-a et al.2000;Niemel-a and Simons1997)实现了由内置函数扩展的正常逻辑程序的答案集语义,以及域受限程序的基数和权重约束。SModels system以Prolog风格的语法作为输入逻辑程序规则。然而,为了支持e的实现技术和扩展,要求programs是域受限的,其思想是:progra m中的谓词符号被分为两类,域谓词和非域谓词。域谓词是非递归定义的谓词。域谓词的主要直觉是,它们被用来定义程序的每个规则中的变量范围所覆盖的项集。P的所有规则都必须在s ense中被域RESTR描述,即规则库中的每个变量都在域谓词中调用r,而域谓词在r ule体中出现为正。除了常规的逻辑程序规则之外,SMODE L S支持带有基数和权重约束的规则,这些规则类似于DLV的#count和#sum聚合。Smodels不允许处理数据库关系中的数据重侧;此外,计算的各个阶段都在主存中完成。最后,对绑定查询不需要rt优化策略;因此,在所有参数未绑定或某些参数绑定的情况下执行同一查询所需的时间完全相同。2.28和Lparse ver。1.0.17.测试数据通过存储输入数据的文本文件传送到系统。逻辑程序设计理论与实践276.1.5DLVDBIt是我们系统的直接数据库执行;在我们的测试中,我们使用commercialdatabase作为工作数据库的DBMS。但是,为了保证与其他系统的公平性,我们没有为所涉及的关系设置任何额外的索引或关键信息。我们再次指出,任何支持ODBC的DBMS都可以很容易地与DLVDBS耦合。6.1.6DLVIOIt是本文所述系统的主存执行模式。回想一下,它基本上是从数据库加载数据来执行标准的DLV系统。6.2基准测试问题为了评估上述系统的性能,我们使用演绎数据库的c ontext(Bancilhon and Ramakrishnan1988;Greco2003)中的classica l基准测试问题进行了几次测试,即可达性和sameGeneration。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
jg-xs1
拉您进交流群
GMT+8, 2026-1-7 14:05