  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.
