Most modern database-backed web applications are built upon Object Relational Mapping (ORM) frameworks. While ORM frameworks ease application development by abstracting persistent data as objects, such convenience often comes with a performance cost. In this paper, we present CADO, a tool that analyzes the application logic and its interaction with databases using the Ruby on Rails ORM framework. CADO includes a static program analyzer, a profiler and a synthetic data generator to extract and understand application's performance characteristics. We used CADO to analyze the performance problems of 27 real-world open-source Rails applications, covering domains such as online forums, e-commerce, project management, blogs, etc. Based on the results, we uncovered a number of issues that lead to sub-optimal application performance, ranging from issuing queries, how result sets are used, and physical design. We suggest possible remedies for each issue, and highlight new research opportunities that arise from them.
翻译:由数据库支持的大多数现代网络应用都建立在目标关系映射(ORM)框架的基础上。虽然ORM框架通过将持久性数据作为物体来提取来方便应用开发,但这种方便往往带来性能成本。在本文件中,我们介绍了CADO,这是一个分析应用逻辑及其与数据库互动的工具,它使用Rup on Rails ORM框架。CADO包括一个静态程序分析器、一个剖面仪和一个合成数据生成器,以提取和理解应用的性能特征。我们利用CADO分析27个实际世界开源铁路应用的性能问题,包括在线论坛、电子商务、项目管理、博客等领域。基于结果,我们发现了一些导致亚最佳应用性能的问题,包括发布询问、如何使用结果组和物理设计。我们为每个问题提出了可能的补救方法,并突出了从中产生的新的研究机会。