Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article

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

Published: 26 March 2024 Publication History
  • Get Citation Alerts
  • 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/#/
    [2]
    2020. Java JDBC API. https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/
    [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.html
    [4]
    2020. PostgreSQL: Document: 13: SAVEPOINT. https://www.postgresql.org/docs/13/sql-savepoint.html
    [5]
    2020. The Rise of REST API. https://blog.restcase.com/the-rise-of-rest-api/
    [6]
    2020. Stored procedure - Wikipedia. https://en.wikipedia.org/wiki/Stored_procedure
    [7]
    2022. BroadleafCommerce. https://github.com/BroadleafCommerce/BroadleafCommerce
    [8]
    2022. Dart2js: Dart-to-javascript compiler. https://dart.dev/tools/dart2js
    [9]
    2022. J2OBJC; google developers. https://developers.google.com/j2objc?hl=en
    [10]
    2022. MyBatis. https://mybatis.org/mybatis-3/
    [11]
    2022. shopizer. https://github.com/shopizer-ecommerce/shopizer
    [12]
    2023. Better use of Java development community (forum) - pybbs. https://github.com/tomoya92/pybbs
    [13]
    2023. A blogging system implemented with spring-boot & thymeleaf & mybatis. https://github.com/ZHENFENG13/My-Blog
    [14]
    2023. Companies using Broadleaf Commerce. https://enlyft.com/tech/products/broadleaf-commerce
    [15]
    2023. Connector/J Reference. https://dev.mysql.com/doc/connector-j/8.1/en/connector-j-reference.html
    [16]
    2023. Extra Materials for WeBridge. https://anonymous.4open.science/r/webridge-materials-2D8A
    [17]
    2023. Known Users of Apollo. https://github.com/apolloconfig/apollo#known-users
    [18]
    2023. A reliable configuration management system - Apollo. https://github.com/apolloconfig/apollo
    [19]
    2023. Spring | Home. https://spring.io/
    [20]
    2023. The spring.io site and reference application - sagan. https://github.com/spring-io/sagan
    [21]
    ActiveRecord. 2022. ActiveRecordApis. https://api.rubyonrails.org/classes/ActiveRecord/Base.html
    [22]
    Frances E. Allen and John Cocke. 1976. A program data flow analysis procedure. Commun. ACM 19, 3 (1976), 137.
    [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.
    [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.3386026
    [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.2737784
    [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.
    [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.
    [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.368994
    [29]
    Broadleaf BroadleafCommerce. 2022. BroadleafAddCart. https://github.com/BroadleafCommerce/ReactStarter/blob/3ea3b209064654f4a6bcd4882b994535d739832d/api/src/main/java/com/mycompany/api/endpoint/cart/ReactCartEndpoint.java#L157
    [30]
    Broadleaf BroadleafCommerce. 2022. BroadleafCheckout. https://github.com/BroadleafCommerce/ReactStarter/blob/3ea3b209064654f4a6bcd4882b994535d739832d/api/src/main/java/com/mycompany/api/endpoint/checkout/ReactCheckoutEndpoint.java#L314
    [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.2541977
    [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.
    [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.
    [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--1
    [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.07147
    [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.
    [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.
    [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.2350262
    [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.2593672
    [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/2894749
    [41]
    Alvin Cheung, Armando Solar-Lezama, and Samuel Madden. 2012. Inferring SQL queries using program synthesis. arXiv preprint arXiv:1208.2013 (2012).
    [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.
    [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.281041
    [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.
    [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.
    [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.1508255
    [47]
    doctrine. 2022. doctrine2ormdocumentation. https://www.doctrine-project.org/projects/doctrine-orm/en/2.13/index.html
    [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.1346273
    [49]
    Christian Duta, Denis Hirn, and Torsten Grust. 2019. Compiling pl/SQL away. arXiv preprint arXiv:1909.03291 (2019).
    [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.2882926
    [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.
    [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.
    [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.
    [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.
    [55]
    Patrice Godefroid, Michael Y Levin, David A Molnar, et al. 2008. Automated whitebox fuzz testing. In NDSS, Vol. 8. 151--166.
    [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.
    [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.3457402
    [58]
    Ravindra Guravannavar and S Sudarshan. 2008. Rewriting procedures for batched bindings. Proceedings of the VLDB Endowment 1, 1 (2008), 1107--1123.
    [59]
    Gunnar Morling Hardy Ferentschik. 2022. HibernateValidator. https://docs.jboss.org/hibernate/stable/validator/reference/en-US/html_single/
    [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_hj0r1b
    [61]
    Hibernate. 2022. https://docs.jboss.org/hibernate/orm/current/userguide/html_single/Hibernate_User_Guide.html
    [62]
    Hibernate. 2022. HibernateJavaDoc. https://docs.jboss.org/hibernate/orm/5.4/javadocs/
    [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.
    [64]
    JavaSE8. 2022. Package java lang instrument. https://docs.oracle.com/javase/8/docs/api/java/lang/instrument/package-summary.html
    [65]
    Karthick Jayaraman, David Harvison, Vijay Ganesh, and Adam Kiezun. 2009. jFuzz: A concolic whitebox fuzzer for Java. (2009).
    [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.
    [67]
    Michael Kechinov. 2019. ECommerce behavior data from Multi Category Store. https://www.kaggle.com/datasets/mkechinov/ecommerce-behavior-data-from-multi-category-store
    [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.
    [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/
    [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.
    [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.00027
    [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.2905235
    [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.5447892
    [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.53
    [75]
    GREG LINDEN. 2006. Marissa Mayer at Web 2.0. http://glinden.blogspot.com/2006/11/marissa-mayer-at-web-20.html/
    [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.
    [77]
    Rupak Majumdar and Koushik Sen. 2007. Hybrid concolic testing. In 29th International Conference on Software Engineering (ICSE'07). IEEE, 416--426.
    [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.
    [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.
    [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.
    [81]
    OpenJDK. 2022. Zero-assembler project. https://openjdk.org/projects/zero/
    [82]
    Oracle. 2022. JavaClassloader. https://docs.oracle.com/javase/8/docs/api/java/lang/ClassLoader.html
    [83]
    Admin OW2. 2022. Rubbos. https://projects.ow2.org/view/rubbos/
    [84]
    Admin OW2. 2022. Rubis. https://projects.ow2.org/view/rubis/
    [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.
    [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.
    [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.
    [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.3056096
    [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.
    [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.
    [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.
    [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.
    [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.
    [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.
    [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.26
    [96]
    Koushik Sen. 2007. Concolic testing. In Proceedings of the twenty-second IEEE/ACM international conference on Automated software engineering. 571--572.
    [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.
    [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.
    [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.2915244
    [100]
    Spring. 2022. aopspring. https://docs.spring.io/spring-framework/docs/5.0.0.M5/spring-framework-reference/html/aop.html
    [101]
    Spring. 2022. SpringTxnMng. https://docs.spring.io/spring-framework/docs/current/reference/html/data-access.html#transaction
    [102]
    SQLALCHEMY. 2022. SQLALCHEMY2documentation. https://docs.sqlalchemy.org/en/latest/
    [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.3465301
    [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-LazyCollection
    [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.1190248
    [106]
    Sean Work. 2011. How Loading Time Affects Your Bottom Line. https://blog.kissmetrics.com/loading-time/
    [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.
    [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.
    [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.
    [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.

    Recommendations

    Comments

    Information & Contributors

    Information

    Published In

    cover image Proceedings of the ACM on Management of Data
    Proceedings of the ACM on Management of Data  Volume 2, Issue 1
    SIGMOD
    February 2024
    1874 pages
    EISSN:2836-6573
    DOI:10.1145/3654807
    Issue’s Table of Contents
    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 for this article.

    Author Tags

    1. ORM
    2. concolic execution
    3. database-backed web applications
    4. performance optimization
    5. program analysis
    6. stored procedures

    Qualifiers

    • Research-article

    Funding Sources

    Contributors

    Other Metrics

    Bibliometrics & Citations

    Bibliometrics

    Article Metrics

    • 0
      Total Citations
    • 157
      Total Downloads
    • Downloads (Last 12 months)157
    • Downloads (Last 6 weeks)22
    Reflects downloads up to 11 Aug 2024

    Other Metrics

    Citations

    View Options

    Get Access

    Login options

    Full Access

    View options

    PDF

    View or Download as a PDF file.

    PDF

    eReader

    View online with eReader.

    eReader

    Media

    Figures

    Other

    Tables

    Share

    Share

    Share this Publication link

    Share on social media