基于冗余数据结构优化递归查询及VSM信息流保障方法
1. 递归查询与冗余数据结构优化
1.1 递归查询背景
递归和分层数据库结构在商业应用中十分常见,用于表示企业层级、各类分类、物料清单、道路网络等。SQL:1999引入了递归查询,部分数据库系统实现了该功能,但仍有一些数据库(如MySQL)未实现。在这些数据库作为后端存储时,递归查询通常需要在客户端硬编码,效率较低。
1.2 冗余数据结构解决方案
为了更快地回答递归查询,提出使用冗余数据结构。具体方法是“全路径展开(full paths unrolling)”,即存储从每个节点到包含该节点的树的根节点的完整路径,每个路径用表 Paths 中的多个元组表示。
操作步骤如下:
1. 若应用程序员想使用全路径展开,需在实体类上添加注解 @unrolling(method = "full paths") 。
2. 首次访问数据库时,创建 Paths 表。
3. Paths 表填充数据后,在 Emp 表上安装适当的触发器,以保持路径数据的最新状态。
4. 若后端数据库未实现递归查询,Hibernate 在调用 getRecursive(String) 方法时会发送以下查询:
SELECT e . empId ,
e . fname ,
e . sname ,
超级会员免费看
订阅专栏 解锁全文
903

被折叠的 条评论
为什么被折叠?



