{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2024,9,10]],"date-time":"2024-09-10T14:10:13Z","timestamp":1725977413681},"reference-count":61,"publisher":"Association for Computing Machinery (ACM)","issue":"8","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2021,4]]},"abstract":"<jats:p>Language-integrated query (LINQ) frameworks offer a convenient programming abstraction for processing in-memory collections of data, allowing developers to concisely express declarative queries using general-purpose programming languages. Existing LINQ frameworks rely on the well-defined type system of statically-typed languages such as C<jats:sup>#<\/jats:sup>or Java to perform query compilation and execution. As a consequence of this design, they do not support dynamic languages such as Python, R, or JavaScript. Such languages are however very popular among data scientists, who would certainly benefit from LINQ frameworks in data analytics applications.<\/jats:p><jats:p>In this work we bridge the gap between dynamic languages and LINQ frameworks. We introduce DynQ, a novel query engine designed for dynamic languages. DynQ is language-agnostic, since it is able to execute SQL queries in a polyglot language runtime. Moreover, DynQ can execute queries combining data from multiple sources, namely in-memory object collections as well as on-file data and external database systems. Our evaluation of DynQ shows performance comparable with equivalent hand-optimized code, and in line with common data-processing libraries and embedded databases, making DynQ an appealing query engine for standalone analytics applications and for data-intensive server-side workloads.<\/jats:p>","DOI":"10.14778\/3457390.3457405","type":"journal-article","created":{"date-parts":[[2021,10,21]],"date-time":"2021-10-21T22:48:38Z","timestamp":1634856518000},"page":"1414-1426","source":"Crossref","is-referenced-by-count":3,"title":["Language-agnostic integrated queries in a managed polyglot runtime"],"prefix":"10.14778","volume":"14","author":[{"given":"Filippo","family":"Schiavio","sequence":"first","affiliation":[{"name":"Universit\u00e0 della Svizzera italiana, Lugano, Switzerland"}]},{"given":"Daniele","family":"Bonetta","sequence":"additional","affiliation":[{"name":"Oracle Labs"}]},{"given":"Walter","family":"Binder","sequence":"additional","affiliation":[{"name":"Universit\u00e0 della Svizzera italiana, Lugano, Switzerland"}]}],"member":"320","published-online":{"date-parts":[[2021,10,21]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"AfterBurner Team. 2020. AfterBurner TPC-H Benchmark. https:\/\/github.com\/afterburnerdb\/afterburner\/blob\/master\/src\/tpch\/benchmark_tpch.js AfterBurner Team. 2020. AfterBurner TPC-H Benchmark. https:\/\/github.com\/afterburnerdb\/afterburner\/blob\/master\/src\/tpch\/benchmark_tpch.js"},{"key":"e_1_2_1_2_1","doi-asserted-by":"publisher","DOI":"10.1145\/2723372.2742797"},{"key":"e_1_2_1_3_1","unstructured":"ASM.js Team. 2020. asm.js. https:\/\/http:\/\/asmjs.org ASM.js Team. 2020. asm.js. https:\/\/http:\/\/asmjs.org"},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/3183713.3190662"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.1145\/1297105.1297063"},{"volume-title":"CIDR","year":"2005","author":"Boncz Peter A","key":"e_1_2_1_6_1"},{"key":"e_1_2_1_7_1","doi-asserted-by":"publisher","DOI":"10.14778\/3137765.3137782"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/319540.319550"},{"key":"e_1_2_1_9_1","unstructured":"Sudarshan S. Chawathe H. Garcia-Molina J. Hammer K. Ireland Y. Papakonstantinou J. Ullman and J. Widom. 1994. The TSIMMIS Project: Integration of Heterogeneous Information Sources. In IPSJ. Sudarshan S. Chawathe H. Garcia-Molina J. Hammer K. Ireland Y. Papakonstantinou J. Ullman and J. Widom. 1994. The TSIMMIS Project: Integration of Heterogeneous Information Sources. In IPSJ."},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/2544174.2500586"},{"key":"e_1_2_1_11_1","unstructured":"cities Team. 2020. cities - npm. https:\/\/www.npmjs.com\/package\/cities\/ cities Team. 2020. cities - npm. https:\/\/www.npmjs.com\/package\/cities\/"},{"key":"e_1_2_1_12_1","unstructured":"ECMAScript Team. 2020. ECMAScript Language Specification - ECMA-262 Edition 5.1. https:\/\/www.ecma-international.org\/ecma-262\/5.1\/#sec-15.9.1.1 ECMAScript Team. 2020. ECMAScript Language Specification - ECMA-262 Edition 5.1. https:\/\/www.ecma-international.org\/ecma-262\/5.1\/#sec-15.9.1.1"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/3035918.3058736"},{"key":"e_1_2_1_14_1","doi-asserted-by":"crossref","unstructured":"H. Fang. 2015. Managing data lakes in big data era: What's a data lake and why has it became popular in data management ecosystem. In CYBER. 820--824. H. Fang. 2015. Managing data lakes in big data era: What's a data lake and why has it became popular in data management ecosystem. In CYBER. 820--824.","DOI":"10.1109\/CYBER.2015.7288049"},{"key":"e_1_2_1_15_1","doi-asserted-by":"crossref","unstructured":"Jeff Friesen. 2019. Processing JSON with Jackson. 323--403. Jeff Friesen. 2019. Processing JSON with Jackson. 323--403.","DOI":"10.1007\/978-1-4842-4330-5_11"},{"key":"e_1_2_1_16_1","doi-asserted-by":"publisher","DOI":"10.5555\/645478.757691"},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/2936313.2816714"},{"key":"e_1_2_1_18_1","doi-asserted-by":"publisher","DOI":"10.14778\/1920841.1920866"},{"key":"e_1_2_1_19_1","unstructured":"haversine Team. 2020. cities - haversine. https:\/\/www.npmjs.com\/package\/haversine\/ haversine Team. 2020. cities - haversine. https:\/\/www.npmjs.com\/package\/haversine\/"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.5555\/646149.679193"},{"key":"e_1_2_1_21_1","first-page":"40","article-title":"MonetDB: Two Decades of Research in Column-oriented Database Architectures","volume":"35","author":"Idreos Stratos","year":"2012","journal-title":"IEEE Data Engineering Bulletin"},{"key":"e_1_2_1_22_1","unstructured":"Kai J\u00e4ger. 2009. JSINQ-A JavaScript implementation of LINQ to Objects. (2009). Kai J\u00e4ger. 2009. JSINQ-A JavaScript implementation of LINQ to Objects. (2009)."},{"key":"e_1_2_1_23_1","doi-asserted-by":"publisher","DOI":"10.1145\/243439.243447"},{"key":"e_1_2_1_24_1","doi-asserted-by":"publisher","DOI":"10.1145\/564691.564751"},{"key":"e_1_2_1_25_1","unstructured":"Jupyter Team. 2020. Project Jupyter. https:\/\/jupyter.org\/ Jupyter Team. 2020. Project Jupyter. https:\/\/jupyter.org\/"},{"volume-title":"Tidy Tuples and Flying Start: Fast Compilation and Fast Execution of Relational Queries in Umbra. The VLDB Journal","year":"2021","author":"Kersten Timo","key":"e_1_2_1_26_1"},{"key":"e_1_2_1_27_1","doi-asserted-by":"publisher","DOI":"10.1145\/3093333.3009880"},{"key":"e_1_2_1_28_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2018.00027"},{"key":"e_1_2_1_29_1","doi-asserted-by":"publisher","DOI":"10.1016\/j.cl.2016.09.002"},{"key":"e_1_2_1_30_1","doi-asserted-by":"publisher","DOI":"10.1109\/ICDE.2010.5447892"},{"key":"e_1_2_1_31_1","doi-asserted-by":"publisher","DOI":"10.14778\/3115404.3115416"},{"key":"e_1_2_1_32_1","unstructured":"LINQ Team. 2020. Language Integrated Query (LINQ) provider for C# - Finance & Operations | Dynamics 365. https:\/\/docs.microsoft.com\/en-us\/dynamics365\/fin-ops-core\/dev-itpro\/dev-tools\/linq-provider-c LINQ Team. 2020. Language Integrated Query (LINQ) provider for C# - Finance & Operations | Dynamics 365. https:\/\/docs.microsoft.com\/en-us\/dynamics365\/fin-ops-core\/dev-itpro\/dev-tools\/linq-provider-c"},{"key":"e_1_2_1_33_1","unstructured":"LINQ Team. 2020. LINQ to Objects (C#). https:\/\/docs.microsoft.com\/en-us\/dotnet\/csharp\/programming-guide\/concepts\/linq\/linq-to-objects LINQ Team. 2020. LINQ to Objects (C#). https:\/\/docs.microsoft.com\/en-us\/dotnet\/csharp\/programming-guide\/concepts\/linq\/linq-to-objects"},{"key":"e_1_2_1_34_1","unstructured":"Lodash Team. 2020. Lodash. https:\/\/lodash.com\/ Lodash Team. 2020. Lodash. https:\/\/lodash.com\/"},{"key":"e_1_2_1_35_1","doi-asserted-by":"publisher","DOI":"10.25080\/Majora-92bf1922-00a"},{"key":"e_1_2_1_36_1","unstructured":"MongoDB Team. 2020. The most popular database for modern apps \/ MongoDB. https:\/\/www.mongodb.com\/ MongoDB Team. 2020. The most popular database for modern apps \/ MongoDB. https:\/\/www.mongodb.com\/"},{"key":"e_1_2_1_37_1","doi-asserted-by":"publisher","DOI":"10.1145\/1993498.1993513"},{"key":"e_1_2_1_38_1","doi-asserted-by":"publisher","DOI":"10.14778\/2732977.2732984"},{"key":"e_1_2_1_39_1","doi-asserted-by":"publisher","DOI":"10.1109\/NBiS.2013.54"},{"key":"e_1_2_1_40_1","doi-asserted-by":"publisher","DOI":"10.14778\/2002938.2002940"},{"volume-title":"Freitag","year":"2020","author":"Neumann Thomas","key":"e_1_2_1_41_1"},{"key":"e_1_2_1_42_1","unstructured":"NPM Team. 2020. npm \/ build amazing things. https:\/\/www.npmjs.com\/ NPM Team. 2020. npm \/ build amazing things. https:\/\/www.npmjs.com\/"},{"key":"e_1_2_1_43_1","unstructured":"Oracle Team Java. 2020. Stream (Java Platform SE 8). https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/stream\/Stream.html Oracle Team Java. 2020. Stream (Java Platform SE 8). https:\/\/docs.oracle.com\/javase\/8\/docs\/api\/java\/util\/stream\/Stream.html"},{"volume-title":"R: A Language and Environment for Statistical Computing","year":"2020","author":"Team R Core","key":"e_1_2_1_44_1"},{"key":"e_1_2_1_45_1","doi-asserted-by":"publisher","DOI":"10.14778\/3115404.3115408"},{"key":"e_1_2_1_46_1","doi-asserted-by":"publisher","DOI":"10.1145\/3299869.3320212"},{"key":"e_1_2_1_47_1","doi-asserted-by":"publisher","DOI":"10.1145\/1942788.1868314"},{"key":"e_1_2_1_48_1","doi-asserted-by":"publisher","DOI":"10.14778\/3377369.3377382"},{"volume-title":"Push vs. Pull-Based Loop Fusion in Query Engines. Journal of Functional Programming 28 (10","year":"2018","author":"Shaikhha Amir","key":"e_1_2_1_49_1"},{"key":"e_1_2_1_50_1","unstructured":"Squel.js Team. 2020. Squel.js. https:\/\/hiddentao.github.io\/squel\/ Squel.js Team. 2020. Squel.js. https:\/\/hiddentao.github.io\/squel\/"},{"volume-title":"Stack Overflow Developer Survey","year":"2019","author":"Team StackOverflow","key":"e_1_2_1_51_1"},{"key":"e_1_2_1_52_1","doi-asserted-by":"publisher","DOI":"10.1145\/2584665"},{"key":"e_1_2_1_53_1","doi-asserted-by":"publisher","DOI":"10.1007\/978-3-642-39038-8_3"},{"key":"e_1_2_1_54_1","doi-asserted-by":"publisher","DOI":"10.1145\/3183713.3196893"},{"key":"e_1_2_1_55_1","unstructured":"TensorFlow Team. 2020. TensorFlow. https:\/\/www.tensorflow.org\/ TensorFlow Team. 2020. TensorFlow. https:\/\/www.tensorflow.org\/"},{"key":"e_1_2_1_56_1","unstructured":"TPC. 2019. TPC-H - Homepage. http:\/\/www.tpc.org\/tpch\/ TPC. 2019. TPC-H - Homepage. http:\/\/www.tpc.org\/tpch\/"},{"key":"e_1_2_1_57_1","unstructured":"V8 Team. 2020. V8 Engine. https:\/\/v8.dev\/ V8 Team. 2020. V8 Engine. https:\/\/v8.dev\/"},{"key":"e_1_2_1_58_1","doi-asserted-by":"crossref","unstructured":"Hadley Wickham and Romain Fran\u00e7ois. 2014. dplyr: A Grammar of Data Manipulation. Hadley Wickham and Romain Fran\u00e7ois. 2014. dplyr: A Grammar of Data Manipulation.","DOI":"10.32614\/CRAN.package.dplyr"},{"key":"e_1_2_1_59_1","doi-asserted-by":"publisher","DOI":"10.1145\/2384716.2384723"},{"key":"e_1_2_1_60_1","doi-asserted-by":"publisher","DOI":"10.1145\/3140587.3062381"},{"key":"e_1_2_1_61_1","doi-asserted-by":"publisher","DOI":"10.1145\/2509578.2509581"}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/3457390.3457405","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2024,9,10]],"date-time":"2024-09-10T12:59:16Z","timestamp":1725973156000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/3457390.3457405"}},"subtitle":[],"short-title":[],"issued":{"date-parts":[[2021,4]]},"references-count":61,"journal-issue":{"issue":"8","published-print":{"date-parts":[[2021,4]]}},"alternative-id":["10.14778\/3457390.3457405"],"URL":"https:\/\/doi.org\/10.14778\/3457390.3457405","relation":{},"ISSN":["2150-8097"],"issn-type":[{"type":"print","value":"2150-8097"}],"subject":[],"published":{"date-parts":[[2021,4]]}}}