[论文解读] Synthesizing Database Programs for Schema Refactoring
本文提出了一种全自动、一键式的技术,用于在模式重构后合成等价的数据库程序。该技术利用值对应猜测、程序草图生成以及一种基于最小失败输入的枚举搜索新方法,高效生成语义等价的程序,平均合成时间仅为69.4秒(在真实世界Web应用程序上)。
Many programs that interact with a database need to undergo schema refactoring several times during their life cycle. Since this process typically requires making significant changes to the program's implementation, schema refactoring is often non-trivial and error-prone. Motivated by this problem, we propose a new technique for automatically synthesizing a new version of a database program given its original version and the source and target schemas. Our method does not require manual user guidance and ensures that the synthesized program is equivalent to the original one. Furthermore, our method is quite efficient and can synthesize new versions of database programs (containing up to 263 functions) that are extracted from real-world web applications with an average synthesis time of 69.4 seconds.
研究动机与目标
- 为解决在模式演化过程中手动重构数据库程序所面临的挑战,该过程容易出错且耗时。
- 通过自动化程序迁移,消除在模式重构中对人工用户指导的需求。
- 确保原始程序与合成程序之间的语义等价性,保留所有期望行为。
- 使合成过程可扩展至包含最多263个函数的真实数据库程序。
- 开发一种轻量级、高效的方案,避免使用SMT求解器进行符号推理,转而采用带剪枝的枚举搜索。
提出的方法
- 提出一个三阶段流水线:(1) 懒惰枚举源模式与目标模式之间候选值对应关系,(2) 生成一个程序草图,以捕捉在给定对应关系下所有可能的等价程序,(3) 通过枚举搜索完成草图。
- 使用值对应作为源模式和目标模式中属性之间的高层映射,其来源于属性名称和模式结构。
- 构建一个程序草图,其中表、属性和布尔常量为占位符,通过值对应关系进行约束,以确保语义一致性。
- 采用一种基于最小失败输入(MFIs)的新型冲突驱动剪枝策略,以在草图完成过程中减少搜索空间。
- 通过直接枚举结合基于MFI的回溯机制,避免将问题符号编码为SMT公式,从而实现对SQL程序的高效可扩展性。
- 依赖现有的等价性验证器(Wang et al., 2018c)来验证原始程序与合成程序之间的语义等价性。
实验结果
研究问题
- RQ1我们能否在无需用户干预的情况下,自动生成模式重构后语义等价的数据库程序?
- RQ2如何有效利用值对应关系约束等价程序变换的搜索空间?
- RQ3我们能否在复杂模式变更下,对真实世界数据库程序实现高效的合成?
- RQ4何种剪枝策略能够在缺乏符号推理的情况下实现可扩展的枚举搜索?
- RQ5与现有数据库程序合成或验证技术相比,所提出方法在性能和正确性方面表现如何?
主要发现
- 所提出的技术成功合成了从GitHub提取的全部20个真实世界模式重构基准的程序新版本。
- 所有基准的平均合成时间为69.4秒,证明了该方法在真实世界应用中的实际效率。
- 该方法完全自动化,除原始程序和源/目标模式外,无需任何人工输入。
- 使用最小失败输入(MFIs)显著剪枝了搜索空间,使即使在大量潜在程序完成方案下也能实现可扩展性。
- 合成的程序在数学上等价于原始程序,确保无行为变更或意外副作用。
- 该工具名为Migrator,支持涉及关系与属性拆分和合并的模式重构,只要其可通过值对应关系表达。
更好的研究,从现在开始
从阅读论文到最终审阅,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。