图表 Ipedo XML 数据库查询引擎
这幅图展现了XML检索引擎执行一个查询的工作流程及相关部件。查询语句用字符串的形式输入到检索引擎中,解析(parse)生成语法树,进行静态类型检查以发现非法数据类型。如果目标文档关联模式(Schema),还需要访问模式管理器。同时分析阶段还会对查询表达式静态优化,生成优化方案。表达式优化器是整个引擎中最重要、复杂的部分,包括谓词重组(对条件表达式中的各种条件谓词的顺序进行重新组合,尽可能的在执行时缩小检索范围)、选择最优的索引,甚至重写整个查询语句来获得最优方案。XQuery引擎同时提供一个易读的查询方案纪录,以方便在需要的时候开发者自己修改。
查询执行之前,需要界定事务(transaction)和获得相应的锁(只有更新动作需要)。一个事务被定义为必须在一个请求中完成的一系列连续动作,以保证请求的合法性。如果一系列动作中的某一个失败,那么整个动作序列需要滚回(rollback),而不是提交(commit)。申请锁是为了防止对数据操作的冲突,包括对同一数据的同时修改,或者企图读取正在被其他人修改的数据。Ipedo XML 数据库通过为一个事务中被修改的数据加锁来防止可能的冲突操作,例如正在被修改的数据不允许其他人访问。这些锁在事务结束后会自动释放。
如果一个XQuery语句用到了XML 视图,那么Integration Manager也会参与进来,负责将查询语句派发到各个外部数据源并收集结果。将各个数据源返回的结果汇总成最终结果,提供给应用程序。