Peter D. Bailis, A. Fekete, M. Franklin, A. Ghodsi, J. Hellerstein, I. Stoica
{"title":"野性并发控制:现代应用程序完整性的实证研究","authors":"Peter D. Bailis, A. Fekete, M. Franklin, A. Ghodsi, J. Hellerstein, I. Stoica","doi":"10.1145/2723372.2737784","DOIUrl":null,"url":null,"abstract":"The rise of data-intensive \"Web 2.0\" Internet services has led to a range of popular new programming frameworks that collectively embody the latest incarnation of the vision of Object-Relational Mapping (ORM) systems, albeit at unprecedented scale. In this work, we empirically investigate modern ORM-backed applications' use and disuse of database concurrency control mechanisms. Specifically, we focus our study on the common use of feral, or application-level, mechanisms for maintaining database integrity, which, across a range of ORM systems, often take the form of declarative correctness criteria, or invariants. We quantitatively analyze the use of these mechanisms in a range of open source applications written using the Ruby on Rails ORM and find that feral invariants are the most popular means of ensuring integrity (and, by usage, are over 37 times more popular than transactions). We evaluate which of these feral invariants actually ensure integrity (by usage, up to 86.9%) and which---due to concurrency errors and lack of database support---may lead to data corruption (the remainder), which we experimentally quantify. In light of these findings, we present recommendations for database system designers for better supporting these modern ORM programming patterns, thus eliminating their adverse effects on application integrity.","PeriodicalId":168391,"journal":{"name":"Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data","volume":"251 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2015-05-27","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"72","resultStr":"{\"title\":\"Feral Concurrency Control: An Empirical Investigation of Modern Application Integrity\",\"authors\":\"Peter D. Bailis, A. Fekete, M. Franklin, A. Ghodsi, J. Hellerstein, I. Stoica\",\"doi\":\"10.1145/2723372.2737784\",\"DOIUrl\":null,\"url\":null,\"abstract\":\"The rise of data-intensive \\\"Web 2.0\\\" Internet services has led to a range of popular new programming frameworks that collectively embody the latest incarnation of the vision of Object-Relational Mapping (ORM) systems, albeit at unprecedented scale. In this work, we empirically investigate modern ORM-backed applications' use and disuse of database concurrency control mechanisms. Specifically, we focus our study on the common use of feral, or application-level, mechanisms for maintaining database integrity, which, across a range of ORM systems, often take the form of declarative correctness criteria, or invariants. We quantitatively analyze the use of these mechanisms in a range of open source applications written using the Ruby on Rails ORM and find that feral invariants are the most popular means of ensuring integrity (and, by usage, are over 37 times more popular than transactions). We evaluate which of these feral invariants actually ensure integrity (by usage, up to 86.9%) and which---due to concurrency errors and lack of database support---may lead to data corruption (the remainder), which we experimentally quantify. In light of these findings, we present recommendations for database system designers for better supporting these modern ORM programming patterns, thus eliminating their adverse effects on application integrity.\",\"PeriodicalId\":168391,\"journal\":{\"name\":\"Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data\",\"volume\":\"251 1\",\"pages\":\"0\"},\"PeriodicalIF\":0.0000,\"publicationDate\":\"2015-05-27\",\"publicationTypes\":\"Journal Article\",\"fieldsOfStudy\":null,\"isOpenAccess\":false,\"openAccessPdf\":\"\",\"citationCount\":\"72\",\"resultStr\":null,\"platform\":\"Semanticscholar\",\"paperid\":null,\"PeriodicalName\":\"Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data\",\"FirstCategoryId\":\"1085\",\"ListUrlMain\":\"https://doi.org/10.1145/2723372.2737784\",\"RegionNum\":0,\"RegionCategory\":null,\"ArticlePicture\":[],\"TitleCN\":null,\"AbstractTextCN\":null,\"PMCID\":null,\"EPubDate\":\"\",\"PubModel\":\"\",\"JCR\":\"\",\"JCRName\":\"\",\"Score\":null,\"Total\":0}","platform":"Semanticscholar","paperid":null,"PeriodicalName":"Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1145/2723372.2737784","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 72
摘要
数据密集型“Web 2.0”Internet服务的兴起导致了一系列流行的新编程框架,它们共同体现了对象关系映射(Object-Relational Mapping, ORM)系统愿景的最新化身,尽管规模空前。在这项工作中,我们实证研究了现代orm支持的应用程序对数据库并发控制机制的使用和废弃。具体地说,我们将研究重点放在维护数据库完整性的外部或应用程序级机制的常用用法上,在一系列ORM系统中,这些机制通常采用声明性正确性标准或不变量的形式。我们定量地分析了这些机制在一系列使用Ruby on Rails ORM编写的开源应用程序中的使用情况,发现野性不变量是确保完整性的最流行的方法(从使用量来看,它比事务多37倍)。我们评估了这些野性不变量中哪些实际上确保了完整性(通过使用,高达86.9%),哪些—由于并发错误和缺乏数据库支持—可能导致数据损坏(其余),我们通过实验对其进行了量化。根据这些发现,我们为数据库系统设计人员提供了一些建议,以更好地支持这些现代ORM编程模式,从而消除它们对应用程序完整性的不利影响。
Feral Concurrency Control: An Empirical Investigation of Modern Application Integrity
The rise of data-intensive "Web 2.0" Internet services has led to a range of popular new programming frameworks that collectively embody the latest incarnation of the vision of Object-Relational Mapping (ORM) systems, albeit at unprecedented scale. In this work, we empirically investigate modern ORM-backed applications' use and disuse of database concurrency control mechanisms. Specifically, we focus our study on the common use of feral, or application-level, mechanisms for maintaining database integrity, which, across a range of ORM systems, often take the form of declarative correctness criteria, or invariants. We quantitatively analyze the use of these mechanisms in a range of open source applications written using the Ruby on Rails ORM and find that feral invariants are the most popular means of ensuring integrity (and, by usage, are over 37 times more popular than transactions). We evaluate which of these feral invariants actually ensure integrity (by usage, up to 86.9%) and which---due to concurrency errors and lack of database support---may lead to data corruption (the remainder), which we experimentally quantify. In light of these findings, we present recommendations for database system designers for better supporting these modern ORM programming patterns, thus eliminating their adverse effects on application integrity.