skip to main content
research-article

WeBridge: Synthesizing Stored Procedures for Large-Scale Real-World Web Applications

Authors Info & Claims
Published:26 March 2024Publication History
Skip Abstract Section

Abstract

Modern web applications use databases to store their data. When processing user requests, these applications retrieve and store data in the database server, which incurs network round trips. These round trips significantly increase the application's latency. Previous approaches have attempted to reduce these round trips by prefetching query results or batching database accesses. However, neither method can efficiently reduce the latency when some queries depend on previous queries' results. In real-world applications, nearly 50% of the queries depend on the result of other queries.

This paper presents WeBridge, the first system capable of synthesizing stored procedures for large-scale real-world web applications. First, WeBridge employs concolic execution technique to analyze the applications and generate stored procedures for hot program paths. Then, it seamlessly integrates the stored procedures into the application by extending the database access library. Finally, it improves the efficiency of the stored procedures with speculative execution. Evaluation using real-world web applications and workloads show that WeBridge achieves up to 79.8% median latency reduction and up to 2× peak throughput.

References

  1. 2020. Byte Buddy - runtime code generation for the Java virtual machine. https://bytebuddy.net/#/Google ScholarGoogle Scholar
  2. 2020. Java JDBC API. https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/Google ScholarGoogle Scholar
  3. 2020. MySQL 8.0 Reference Manual -- SAVEPOINT, ROLLBACK TO SAVEPOINT, and RELEASE SAVEPOINT Statements. https://dev.mysql.com/doc/refman/8.0/en/savepoint.htmlGoogle ScholarGoogle Scholar
  4. 2020. PostgreSQL: Document: 13: SAVEPOINT. https://www.postgresql.org/docs/13/sql-savepoint.htmlGoogle ScholarGoogle Scholar
  5. 2020. The Rise of REST API. https://blog.restcase.com/the-rise-of-rest-api/Google ScholarGoogle Scholar
  6. 2020. Stored procedure - Wikipedia. https://en.wikipedia.org/wiki/Stored_procedureGoogle ScholarGoogle Scholar
  7. 2022. BroadleafCommerce. https://github.com/BroadleafCommerce/BroadleafCommerceGoogle ScholarGoogle Scholar
  8. 2022. Dart2js: Dart-to-javascript compiler. https://dart.dev/tools/dart2jsGoogle ScholarGoogle Scholar
  9. 2022. J2OBJC; google developers. https://developers.google.com/j2objc?hl=enGoogle ScholarGoogle Scholar
  10. 2022. MyBatis. https://mybatis.org/mybatis-3/Google ScholarGoogle Scholar
  11. 2022. shopizer. https://github.com/shopizer-ecommerce/shopizerGoogle ScholarGoogle Scholar
  12. 2023. Better use of Java development community (forum) - pybbs. https://github.com/tomoya92/pybbsGoogle ScholarGoogle Scholar
  13. 2023. A blogging system implemented with spring-boot & thymeleaf & mybatis. https://github.com/ZHENFENG13/My-BlogGoogle ScholarGoogle Scholar
  14. 2023. Companies using Broadleaf Commerce. https://enlyft.com/tech/products/broadleaf-commerceGoogle ScholarGoogle Scholar
  15. 2023. Connector/J Reference. https://dev.mysql.com/doc/connector-j/8.1/en/connector-j-reference.htmlGoogle ScholarGoogle Scholar
  16. 2023. Extra Materials for WeBridge. https://anonymous.4open.science/r/webridge-materials-2D8AGoogle ScholarGoogle Scholar
  17. 2023. Known Users of Apollo. https://github.com/apolloconfig/apollo#known-usersGoogle ScholarGoogle Scholar
  18. 2023. A reliable configuration management system - Apollo. https://github.com/apolloconfig/apolloGoogle ScholarGoogle Scholar
  19. 2023. Spring | Home. https://spring.io/Google ScholarGoogle Scholar
  20. 2023. The spring.io site and reference application - sagan. https://github.com/spring-io/saganGoogle ScholarGoogle Scholar
  21. ActiveRecord. 2022. ActiveRecordApis. https://api.rubyonrails.org/classes/ActiveRecord/Base.htmlGoogle ScholarGoogle Scholar
  22. Frances E. Allen and John Cocke. 1976. A program data flow analysis procedure. Commun. ACM 19, 3 (1976), 137.Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. Saswat Anand and Mary Jean Harrold. 2011. Heap cloning: Enabling dynamic symbolic execution of java programs. In 2011 26th IEEE/ACM International Conference on Automated Software Engineering (ASE 2011). IEEE, 33--42.Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Anastasios Antoniadis, Nikos Filippakis, Paddy Krishnan, Raghavendra Ramesh, Nicholas Allen, and Yannis Smaragdakis. 2020. Static Analysis of Java Enterprise Applications: Frameworks and Caches, the Elephants in the Room. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (London, UK) (PLDI 2020). Association for Computing Machinery, New York, NY, USA, 794--807. https://doi.org/10.1145/3385412.3386026Google ScholarGoogle ScholarDigital LibraryDigital Library
  25. Peter Bailis, Alan Fekete, Michael J. Franklin, Ali Ghodsi, Joseph M. Hellerstein, and Ion Stoica. 2015. Feral Concurrency Control: An Empirical Investigation of Modern Application Integrity. In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data (Melbourne, Victoria, Australia) (SIGMOD '15). Association for Computing Machinery, New York, NY, USA, 1327--1342. https://doi.org/10.1145/2723372.2737784Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Roberto Baldoni, Emilio Coppa, Daniele Cono Dâazelia, Camil Demetrescu, and Irene Finocchi. 2018. A survey of symbolic execution techniques. ACM Computing Surveys (CSUR) 51, 3 (2018), 1--39.Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. Clark Barrett, Christopher L. Conway, Morgan Deters, Liana Hadarean, Dejan Jovanovic, Tim King, Andrew Reynolds, and Cesare Tinelli. 2011. CVC4. In Proceedings of the 23rd International Conference on Computer Aided Verification (CAV '11) (Lecture Notes in Computer Science, Vol. 6806), Ganesh Gopalakrishnan and Shaz Qadeer (Eds.). Springer, 171--177. http://www.cs.stanford.edu/~barrett/pubs/BCD11.pdf Snowbird, Utah.Google ScholarGoogle ScholarCross RefCross Ref
  28. Ivan T. Bowman and Kenneth Salem. 2007. Semantic Prefetching of Correlated Query Sequences. In 2007 IEEE 23rd International Conference on Data Engineering. 1284--1288. https://doi.org/10.1109/ICDE.2007.368994Google ScholarGoogle ScholarCross RefCross Ref
  29. Broadleaf BroadleafCommerce. 2022. BroadleafAddCart. https://github.com/BroadleafCommerce/ReactStarter/blob/3ea3b209064654f4a6bcd4882b994535d739832d/api/src/main/java/com/mycompany/api/endpoint/cart/ReactCartEndpoint.java#L157Google ScholarGoogle Scholar
  30. Broadleaf BroadleafCommerce. 2022. BroadleafCheckout. https://github.com/BroadleafCommerce/ReactStarter/blob/3ea3b209064654f4a6bcd4882b994535d739832d/api/src/main/java/com/mycompany/api/endpoint/checkout/ReactCheckoutEndpoint.java#L314Google ScholarGoogle Scholar
  31. Stefan Bucur, Johannes Kinder, and George Candea. 2014. Prototyping Symbolic Execution Engines for Interpreted Languages. SIGPLAN Not. 49, 4 (feb 2014), 239--254. https://doi.org/10.1145/2644865.2541977Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Cristian Cadar, Daniel Dunbar, and Dawson Engler. 2008. KLEE: Unassisted and Automatic Generation of High-Coverage Tests for Complex Systems Programs. In Proceedings of the 8th USENIX Conference on Operating Systems Design and Implementation (San Diego, California) (OSDI'08). USENIX Association, USA, 209--224.Google ScholarGoogle ScholarDigital LibraryDigital Library
  33. Chen Cao, Le Guan, Jiang Ming, and Peng Liu. 2020. Device-agnostic firmware execution is possible: A concolic execution approach for peripheral emulation. In Annual Computer Security Applications Conference. 746--759.Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. Yinliang ZHAO Changpeng ZHU, Bo HAN. 2022. A bi-metric autoscaling approach for n-tier web applications on kubernetes. Frontiers of Computer Science 16, 3, Article 163101 (2022), 0 pages. https://doi.org/10.1007/s11704-021-0118--1Google ScholarGoogle ScholarCross RefCross Ref
  35. Sarah Chasins, Alvin Cheung, Natacha Crooks, Ali Ghodsi, Ken Goldberg, Joseph E. Gonzalez, Joseph M. Hellerstein, Michael I. Jordan, Anthony D. Joseph, Michael W. Mahoney, Aditya G. Parameswaran, David A. Patterson, Raluca Ada Popa, Koushik Sen, Scott Shenker, Dawn Song, and Ion Stoica. 2022. The Sky Above The Clouds. CoRR abs/2205.07147 (2022). https://doi.org/10.48550/arXiv.2205.07147 arXiv:2205.07147Google ScholarGoogle ScholarCross RefCross Ref
  36. Mahendra Chavan, Ravindra Guravannavar, Karthik Ramachandra, and S Sudarshan. 2011. Program transformations for asynchronous query submission. In 2011 IEEE 27th International Conference on Data Engineering. IEEE, 375--386.Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Alvin Cheung, Owen Arden, Samuel Madden, Armando Solar-Lezama, and Andrew C Myers. 2013. StatusQuo: Making Familiar Abstractions Perform Using Program Analysis.. In CIDR. Citeseer.Google ScholarGoogle Scholar
  38. Alvin Cheung, Samuel Madden, Owen Arden, and Andrew C. Myers. 2012. Automatic Partitioning of Database Applications. Proc. VLDB Endow. 5, 11 (jul 2012), 1471--1482. https://doi.org/10.14778/2350229.2350262Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. Alvin Cheung, Samuel Madden, and Armando Solar-Lezama. 2014. Sloth: Being Lazy is a Virtue (When Issuing Database Queries). In Proceedings of the 2014 ACM SIGMOD International Conference on Management of Data (Snowbird, Utah, USA) (SIGMOD '14). Association for Computing Machinery, New York, NY, USA, 931--942. https://doi.org/10.1145/2588555.2593672Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. Alvin Cheung, Samuel Madden, and Armando Solar-Lezama. 2016. Sloth: Being Lazy Is a Virtue (When Issuing Database Queries). ACM Trans. Database Syst. 41, 2, Article 8 (jun 2016), 42 pages. https://doi.org/10.1145/2894749Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Alvin Cheung, Armando Solar-Lezama, and Samuel Madden. 2012. Inferring SQL queries using program synthesis. arXiv preprint arXiv:1208.2013 (2012).Google ScholarGoogle Scholar
  42. Alvin Cheung, Armando Solar-Lezama, and Samuel Madden. 2013. Optimizing database-backed applications with query synthesis. ACM SIGPLAN Notices 48, 6 (2013), 3--14.Google ScholarGoogle ScholarDigital LibraryDigital Library
  43. Jong-Deok Choi and Harini Srinivasan. 1998. Deterministic Replay of Java Multithreaded Applications. In Proceedings of the SIGMETRICS Symposium on Parallel and Distributed Tools (Welches, Oregon, USA) (SPDT '98). Association for Computing Machinery, New York, NY, USA, 48--59. https://doi.org/10.1145/281035.281041Google ScholarGoogle ScholarDigital LibraryDigital Library
  44. Alessandro Cimatti, Alberto Griggio, Bastiaan Schaafsma, and Roberto Sebastiani. 2013. The MathSAT5 SMT Solver. In Proceedings of TACAS (LNCS, Vol. 7795), Nir Piterman and Scott Smolka (Eds.). Springer.Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Leonardo De Moura and Nikolaj Bjørner. 2008. Z3: An efficient SMT solver. In International conference on Tools and Algorithms for the Construction and Analysis of Systems. Springer, 337--340.Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. Joseph Devietti, Brandon Lucia, Luis Ceze, and Mark Oskin. 2009. DMP: Deterministic Shared Memory Multiprocessing. In Proceedings of the 14th International Conference on Architectural Support for Programming Languages and Operating Systems (Washington, DC, USA) (ASPLOS XIV). Association for Computing Machinery, New York, NY, USA, 85--96. https://doi.org/10.1145/1508244.1508255Google ScholarGoogle ScholarDigital LibraryDigital Library
  47. doctrine. 2022. doctrine2ormdocumentation. https://www.doctrine-project.org/projects/doctrine-orm/en/2.13/index.htmlGoogle ScholarGoogle Scholar
  48. George W. Dunlap, Dominic G. Lucchetti, Michael A. Fetterman, and Peter M. Chen. 2008. Execution Replay of Multiprocessor Virtual Machines. In Proceedings of the Fourth ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments (Seattle, WA, USA) (VEE '08). Association for Computing Machinery, New York, NY, USA, 121--130. https://doi.org/10.1145/1346256.1346273Google ScholarGoogle ScholarDigital LibraryDigital Library
  49. Christian Duta, Denis Hirn, and Torsten Grust. 2019. Compiling pl/SQL away. arXiv preprint arXiv:1909.03291 (2019).Google ScholarGoogle Scholar
  50. K. Venkatesh Emani, Karthik Ramachandra, Subhro Bhattacharya, and S. Sudarshan. 2016. Extracting Equivalent SQL from Imperative Code in Database Applications. In Proceedings of the 2016 International Conference on Management of Data (San Francisco, California, USA) (SIGMOD '16). Association for Computing Machinery, New York, NY, USA, 1781--1796. https://doi.org/10.1145/2882903.2882926Google ScholarGoogle ScholarDigital LibraryDigital Library
  51. Jeanne Ferrante, Karl J Ottenstein, and Joe D Warren. 1987. The program dependence graph and its use in optimization. ACM Transactions on Programming Languages and Systems (TOPLAS) 9, 3 (1987), 319--349.Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Roy T Fielding and Richard N Taylor. 2000. Architectural styles and the design of network-based software architectures. Vol. 7. University of California, Irvine Irvine.Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Craig Freedman, Erik Ismert, Per-Åke Larson, et al . 2014. Compilation in the Microsoft SQL Server Hekaton Engine. IEEE Data Eng. Bull. 37, 1 (2014), 22--30.Google ScholarGoogle Scholar
  54. Andy Georges, Mark Christiaens, Michiel Ronsse, and Koenraad De Bosschere. 2004. JaRec: a portable record/replay environment for multi-threaded Java applications. Software: practice and experience 34, 6 (2004), 523--547.Google ScholarGoogle Scholar
  55. Patrice Godefroid, Michael Y Levin, David A Molnar, et al. 2008. Automated whitebox fuzz testing.. In NDSS, Vol. 8. 151--166.Google ScholarGoogle Scholar
  56. Surabhi Gupta, Sanket Purandare, and Karthik Ramachandra. 2020. Aggify: Lifting the curse of cursor loops using custom aggregates. In Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data. 559--573.Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Surabhi Gupta and Karthik Ramachandra. 2021. Procedural Extensions of SQL: Understanding Their Usage in the Wild. Proc. VLDB Endow. 14, 8 (oct 2021), 1378--1391. https://doi.org/10.14778/3457390.3457402Google ScholarGoogle ScholarDigital LibraryDigital Library
  58. Ravindra Guravannavar and S Sudarshan. 2008. Rewriting procedures for batched bindings. Proceedings of the VLDB Endowment 1, 1 (2008), 1107--1123.Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. Gunnar Morling Hardy Ferentschik. 2022. HibernateValidator. https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/Google ScholarGoogle Scholar
  60. Peter Bhat Harkins. Mar. 2018. Lobste.rs access pattern statistics for research purposes. https://lobste.rs/s/cqnzl5/lobste_rs_access_pattern_statistics_for#c_hj0r1bGoogle ScholarGoogle Scholar
  61. Hibernate. 2022. https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.htmlGoogle ScholarGoogle Scholar
  62. Hibernate. 2022. HibernateJavaDoc. https://docs.jboss.org/hibernate/orm/5.4/javadocs/Google ScholarGoogle Scholar
  63. Yigong Hu, Gongqi Huang, and Peng Huang. 2020. Automated reasoning and detection of specious configuration in large systems with symbolic execution. In 14th USENIX Symposium on Operating Systems Design and Implementation (OSDI 20). 719--734.Google ScholarGoogle Scholar
  64. JavaSE8. 2022. Package java lang instrument. https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.htmlGoogle ScholarGoogle Scholar
  65. Karthick Jayaraman, David Harvison, Vijay Ganesh, and Adam Kiezun. 2009. jFuzz: A concolic whitebox fuzzer for Java. (2009).Google ScholarGoogle Scholar
  66. Nenad Jovanovic, Christopher Kruegel, and Engin Kirda. 2006. Pixy: A static analysis tool for detecting web application vulnerabilities. In 2006 IEEE Symposium on Security and Privacy (S&P'06). IEEE, 6--pp.Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Michael Kechinov. 2019. ECommerce behavior data from Multi Category Store. https://www.kaggle.com/datasets/mkechinov/ecommerce-behavior-data-from-multi-category-storeGoogle ScholarGoogle Scholar
  68. Timo Kersten, Viktor Leis, Alfons Kemper, Thomas Neumann, Andrew Pavlo, and Peter Boncz. 2018. Everything you always wanted to know about compiled and vectorized queries but were afraid to ask. Proceedings of the VLDB Endowment 11, 13 (2018), 2209--2222.Google ScholarGoogle ScholarDigital LibraryDigital Library
  69. Kickoke, Mednizar, Med Nizar, Lokesh Gupta, Syed, Admin, Robin, Harpreet Kaur, Tim, Mohammed Amine, and et al. 2021. Statelessness in rest apis. https://restfulapi.net/statelessness/Google ScholarGoogle Scholar
  70. Taesoo Kim, Ramesh Chandra, and Nickolai Zeldovich. 2012. Efficient patch-based auditing for web application vulnerabilities. In Presented as part of the 10th {USENIX} Symposium on Operating Systems Design and Implementation ({OSDI} 12). 193--206.Google ScholarGoogle Scholar
  71. AndrÃl Kohn, Viktor Leis, and Thomas Neumann. 2018. Adaptive Execution of Compiled Queries. In 2018 IEEE 34th International Conference on Data Engineering (ICDE). 197--208. https://doi.org/10.1109/ICDE.2018.00027Google ScholarGoogle ScholarCross RefCross Ref
  72. AndrÃl Kohn, Viktor Leis, and Thomas Neumann. 2021. Making Compiling Query Engines Practical. IEEE Transactions on Knowledge and Data Engineering 33, 2 (2021), 597--612. https://doi.org/10.1109/TKDE.2019.2905235Google ScholarGoogle ScholarDigital LibraryDigital Library
  73. Konstantinos Krikellas, Stratis D. Viglas, and Marcelo Cintra. 2010. Generating code for holistic query evaluation. In 2010 IEEE 26th International Conference on Data Engineering (ICDE 2010). 613--624. https://doi.org/10.1109/ICDE.2010.5447892Google ScholarGoogle ScholarCross RefCross Ref
  74. Davy Landman, Alexander Serebrenik, and Jurgen J. Vinju. 2017. Challenges for Static Analysis of Java Reflection - Literature Review and Empirical Study. In 2017 IEEE/ACM 39th International Conference on Software Engineering (ICSE). 507--518. https://doi.org/10.1109/ICSE.2017.53Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. GREG LINDEN. 2006. Marissa Mayer at Web 2.0. http://glinden.blogspot.com/2006/11/marissa-mayer-at-web-20.html/Google ScholarGoogle Scholar
  76. V Benjamin Livshits and Monica S Lam. 2005. Finding Security Vulnerabilities in Java Applications with Static Analysis.. In USENIX security symposium, Vol. 14. 18--18.Google ScholarGoogle Scholar
  77. Rupak Majumdar and Koushik Sen. 2007. Hybrid concolic testing. In 29th International Conference on Software Engineering (ICSE'07). IEEE, 416--426.Google ScholarGoogle ScholarDigital LibraryDigital Library
  78. Amit Manjhi, Charles Garrod, Bruce M Maggs, Todd C Mowry, and Anthony Tomasic. 2009. Holistic query transformations for dynamic web applications. In 2009 IEEE 25th International Conference on Data Engineering. IEEE, 1175--1178.Google ScholarGoogle ScholarDigital LibraryDigital Library
  79. Luke Nelson, Helgi Sigurbjarnarson, Kaiyuan Zhang, Dylan Johnson, James Bornholt, Emina Torlak, and Xi Wang. 2017. Hyperkernel: Push-button verification of an OS kernel. In Proceedings of the 26th Symposium on Operating Systems Principles. 252--269.Google ScholarGoogle ScholarDigital LibraryDigital Library
  80. Marek Olszewski, Jason Ansel, and Saman Amarasinghe. 2009. Kendo: efficient deterministic multithreading in software. In Proceedings of the 14th international conference on Architectural support for programming languages and operating systems. 97--108.Google ScholarGoogle ScholarDigital LibraryDigital Library
  81. OpenJDK. 2022. Zero-assembler project. https://openjdk.org/projects/zero/Google ScholarGoogle Scholar
  82. Oracle. 2022. JavaClassloader. https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.htmlGoogle ScholarGoogle Scholar
  83. Admin OW2. 2022. Rubbos. https://projects.ow2.org/view/rubbos/Google ScholarGoogle Scholar
  84. Admin OW2. 2022. Rubis. https://projects.ow2.org/view/rubis/Google ScholarGoogle Scholar
  85. Kisung Park, Hojin Seo, Mostofa Kamal Rasel, Young-Koo Lee, Chanho Jeong, Sung Yeol Lee, Chungmin Lee, and Dong-Hun Lee. 2019. Iterative query processing based on unified optimization techniques. In Proceedings of the 2019 International Conference on Management of Data. 54--68.Google ScholarGoogle ScholarDigital LibraryDigital Library
  86. Soyeon Park, Yuanyuan Zhou, Weiwei Xiong, Zuoning Yin, Rini Kaushik, Kyu H Lee, and Shan Lu. 2009. PRES: probabilistic replay with execution sketching on multiprocessors. In Proceedings of the ACM SIGOPS 22nd symposium on Operating systems principles. 177--192.Google ScholarGoogle ScholarDigital LibraryDigital Library
  87. Corina S Pasareanu and Neha Rungta. 2010. Symbolic PathFinder: symbolic execution of Java bytecode. In Proceedings of the IEEE/ACM international conference on Automated software engineering. ACM, 179--180.Google ScholarGoogle ScholarDigital LibraryDigital Library
  88. Andrew Pavlo. 2017. What Are We Doing With Our Lives? Nobody Cares About Our Concurrency Control Research. In Proceedings of the 2017 ACM International Conference on Management of Data (Chicago, Illinois, USA) (SIGMOD '17). Association for Computing Machinery, New York, NY, USA, 3. https://doi.org/10.1145/3035918.3056096Google ScholarGoogle ScholarDigital LibraryDigital Library
  89. Dan Quinlan and Chunhua Liao. 2011. The ROSE source-to-source compiler infrastructure. In Cetus users and compiler infrastructure workshop, in conjunction with PACT, Vol. 2011. Citeseer, 1.Google ScholarGoogle Scholar
  90. Karthik Ramachandra, Mahendra Chavan, Ravindra Guravannavar, and S Sudarshan. 2014. Program transformations for asynchronous and batched query submission. IEEE Transactions on Knowledge and Data Engineering 27, 2 (2014), 531--544.Google ScholarGoogle ScholarCross RefCross Ref
  91. Karthik Ramachandra, Kwanghyun Park, K Venkatesh Emani, Alan Halverson, César Galindo-Legaria, and Conor Cunningham. 2017. Froid: Optimization of imperative programs in a relational database. Proceedings of the VLDB Endowment 11, 4 (2017), 432--444.Google ScholarGoogle ScholarDigital LibraryDigital Library
  92. Karthik Ramachandra and S Sudarshan. 2012. Holistic optimization by prefetching query results. In Proceedings of the 2012 ACM SIGMOD International Conference on Management of Data. 133--144.Google ScholarGoogle ScholarDigital LibraryDigital Library
  93. Veselin Raychev, Madanlal Musuvathi, and Todd Mytkowicz. 2015. Parallelizing user-defined aggregations using symbolic execution. In Proceedings of the 25th Symposium on Operating Systems Principles. 153--167.Google ScholarGoogle ScholarDigital LibraryDigital Library
  94. Michiel Ronsse and Koen De Bosschere. 1999. RecPlay: a fully integrated practical record/replay system. ACM Transactions on Computer Systems (TOCS) 17, 2 (1999), 133--152.Google ScholarGoogle ScholarDigital LibraryDigital Library
  95. Edward J. Schwartz, Thanassis Avgerinos, and David Brumley. 2010. All You Ever Wanted to Know about Dynamic Taint Analysis and Forward Symbolic Execution (but Might Have Been Afraid to Ask). In 2010 IEEE Symposium on Security and Privacy. 317--331. https://doi.org/10.1109/SP.2010.26Google ScholarGoogle ScholarDigital LibraryDigital Library
  96. Koushik Sen. 2007. Concolic testing. In Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering. 571--572.Google ScholarGoogle ScholarDigital LibraryDigital Library
  97. Koushik Sen, Swaroop Kalasapur, Tasneem Brutch, and Simon Gibbs. 2013. Jalangi: a selective record-replay and dynamic analysis framework for JavaScript. In Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering. 488--498.Google ScholarGoogle ScholarDigital LibraryDigital Library
  98. Koushik Sen, Darko Marinov, and Gul Agha. 2005. CUTE: a concolic unit testing engine for C. ACM SIGSOFT Software Engineering Notes 30, 5 (2005), 263--272.Google ScholarGoogle ScholarDigital LibraryDigital Library
  99. Amir Shaikhha, Yannis Klonatos, Lionel Parreaux, Lewis Brown, Mohammad Dashti, and Christoph Koch. 2016. How to Architect a Query Compiler. In Proceedings of the 2016 International Conference on Management of Data (San Francisco, California, USA) (SIGMOD '16). Association for Computing Machinery, New York, NY, USA, 1907--1922. https://doi.org/10.1145/2882903.2915244Google ScholarGoogle ScholarDigital LibraryDigital Library
  100. Spring. 2022. aopspring. https://docs.spring.io/spring-framework/docs/5.0.0.M5/spring-framework-reference/html/aop.htmlGoogle ScholarGoogle Scholar
  101. Spring. 2022. SpringTxnMng. https://docs.spring.io/spring-framework/docs/current/reference/html/data-access.html#transactionGoogle ScholarGoogle Scholar
  102. SQLALCHEMY. 2022. SQLALCHEMY2documentation. https://docs.sqlalchemy.org/en/latest/Google ScholarGoogle Scholar
  103. Ion Stoica and Scott Shenker. 2021. From Cloud Computing to Sky Computing. In Proceedings of the Workshop on Hot Topics in Operating Systems (Ann Arbor, Michigan) (HotOS '21). Association for Computing Machinery, New York, NY, USA, 26--32. https://doi.org/10.1145/3458336.3465301Google ScholarGoogle ScholarDigital LibraryDigital Library
  104. Steve Ebersole Vlad Mihalcea. 2022. hibernate join lazy. https://docs.jboss.org/hibernate/orm/6.1/userguide/html_single/Hibernate_User_Guide.html#fetching-LazyCollectionGoogle ScholarGoogle Scholar
  105. Ben Wiedermann and William R. Cook. 2007. Extracting Queries by Static Analysis of Transparent Persistence. SIGPLAN Not. 42, 1 (jan 2007), 199--210. https://doi.org/10.1145/1190215.1190248Google ScholarGoogle ScholarDigital LibraryDigital Library
  106. Sean Work. 2011. How Loading Time Affects Your Bottom Line. https://blog.kissmetrics.com/loading-time/Google ScholarGoogle Scholar
  107. Cong Yan, Alvin Cheung, Junwen Yang, and Shan Lu. 2017. Understanding database performance inefficiencies in real-world web applications. In Proceedings of the 2017 ACM on Conference on Information and Knowledge Management. ACM, 1299--1308.Google ScholarGoogle ScholarDigital LibraryDigital Library
  108. Junwen Yang, Cong Yan, Pranav Subramaniam, Shan Lu, and Alvin Cheung. 2018. How not to structure your database-backed web applications: a study of performance bugs in the wild. In 2018 IEEE/ACM 40th International Conference on Software Engineering (ICSE). IEEE, 800--810.Google ScholarGoogle ScholarDigital LibraryDigital Library
  109. Junwen Yang, Cong Yan, Pranav Subramaniam, Shan Lu, and Alvin Cheung. 2018. Powerstation: Automatically detecting and fixing inefficiencies of database-backed web applications in ide. In Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering. ACM, 884--887.Google ScholarGoogle ScholarDigital LibraryDigital Library
  110. Insu Yun, Sangho Lee, Meng Xu, Yeongjin Jang, and Taesoo Kim. 2018. {QSYM}: A practical concolic execution engine tailored for hybrid fuzzing. In 27th USENIX Security Symposium (USENIX Security 18). 745--761.Google ScholarGoogle Scholar

Index Terms

  1. WeBridge: Synthesizing Stored Procedures for Large-Scale Real-World Web Applications

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      Full Access

      • Published in

        cover image Proceedings of the ACM on Management of Data
        Proceedings of the ACM on Management of Data  Volume 2, Issue 1
        PACMMOD
        February 2024
        1874 pages
        EISSN:2836-6573
        DOI:10.1145/3654807
        Issue’s Table of Contents

        Copyright © 2024 ACM

        Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

        Publisher

        Association for Computing Machinery

        New York, NY, United States

        Publication History

        • Published: 26 March 2024
        Published in pacmmod Volume 2, Issue 1

        Permissions

        Request permissions about this article.

        Request Permissions

        Qualifiers

        • research-article
      • Article Metrics

        • Downloads (Last 12 months)67
        • Downloads (Last 6 weeks)48

        Other Metrics

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader