{"status":"ok","message-type":"work","message-version":"1.0.0","message":{"indexed":{"date-parts":[[2026,3,22]],"date-time":"2026-03-22T16:02:54Z","timestamp":1774195374922,"version":"3.50.1"},"reference-count":22,"publisher":"Association for Computing Machinery (ACM)","issue":"2","content-domain":{"domain":[],"crossmark-restriction":false},"short-container-title":["Proc. VLDB Endow."],"published-print":{"date-parts":[[2009,8]]},"abstract":"<jats:p>\n            A user-defined function (UDF) is a powerful database feature that allows users to customize database functionality. Though useful, present UDFs have numerous limitations, including\n            <jats:italic>install-time<\/jats:italic>\n            specification of input and output schema and poor ability to parallelize execution. We present a new approach to implementing a UDF, which we call SQL\/MapReduce (SQL\/MR), that overcomes many of these limitations. We leverage ideas from the MapReduce programming paradigm to provide users with a straightforward API through which they can implement a UDF in the language of their choice. Moreover, our approach allows maximum flexibility as the output schema of the UDF is specified by the function itself at\n            <jats:italic>query plan-time<\/jats:italic>\n            . This means that a SQL\/MR function is polymorphic. It can process arbitrary input because its behavior as well as output schema are dynamically determined by information available at query plan-time, such as the function's input schema and arbitrary user-provided parameters. This also increases reusability as the same SQL\/MR function can be used on inputs with many different schemas or with different user-specified parameters.\n          <\/jats:p>\n          <jats:p>\n            In this paper we describe the motivation for this new approach to UDFs as well as the implementation within Aster Data Systems'\n            <jats:italic>n<\/jats:italic>\n            Cluster database. We demonstrate that in the context of massively parallel, shared-nothing database systems, this model of computation facilitates highly scalable computation within the database. We also include examples of new applications that take advantage of this novel UDF framework.\n          <\/jats:p>","DOI":"10.14778\/1687553.1687567","type":"journal-article","created":{"date-parts":[[2014,6,24]],"date-time":"2014-06-24T12:17:57Z","timestamp":1403612277000},"page":"1402-1413","source":"Crossref","is-referenced-by-count":91,"title":["SQL\/MapReduce"],"prefix":"10.14778","volume":"2","author":[{"given":"Eric","family":"Friedman","sequence":"first","affiliation":[{"name":"Aster Data Systems"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"Peter","family":"Pawlowski","sequence":"additional","affiliation":[{"name":"Aster Data Systems"}],"role":[{"role":"author","vocabulary":"crossref"}]},{"given":"John","family":"Cieslewicz","sequence":"additional","affiliation":[{"name":"Aster Data Systems"}],"role":[{"role":"author","vocabulary":"crossref"}]}],"member":"320","published-online":{"date-parts":[[2009,8]]},"reference":[{"key":"e_1_2_1_1_1","unstructured":"Apache Software Foundation. Hadoop March 2009. http:\/\/hadoop.apache.org.  Apache Software Foundation. Hadoop March 2009. http:\/\/hadoop.apache.org."},{"key":"e_1_2_1_2_1","unstructured":"Apache Software Foundation. Hive March 2009. http:\/\/hadoop.apache.org\/hive\/.  Apache Software Foundation. Hive March 2009. http:\/\/hadoop.apache.org\/hive\/."},{"key":"e_1_2_1_3_1","unstructured":"Aster Data Systems. Aster nCluster database. White paper 2008. Available online: www.asterdata.com.  Aster Data Systems. Aster n Cluster database. White paper 2008. Available online: www.asterdata.com."},{"key":"e_1_2_1_4_1","doi-asserted-by":"publisher","DOI":"10.1145\/122058.122064"},{"key":"e_1_2_1_5_1","doi-asserted-by":"publisher","DOI":"10.14778\/1454159.1454166"},{"key":"e_1_2_1_6_1","doi-asserted-by":"publisher","DOI":"10.1145\/320248.320249"},{"key":"e_1_2_1_7_1","first-page":"137","volume-title":"OSDI","author":"Dean J.","year":"2004"},{"key":"e_1_2_1_8_1","doi-asserted-by":"publisher","DOI":"10.1145\/129888.129894"},{"key":"e_1_2_1_9_1","doi-asserted-by":"publisher","DOI":"10.1145\/375663.375670"},{"key":"e_1_2_1_10_1","doi-asserted-by":"publisher","DOI":"10.1145\/233269.233359"},{"key":"e_1_2_1_11_1","doi-asserted-by":"publisher","DOI":"10.1145\/170035.170078"},{"key":"e_1_2_1_12_1","first-page":"8","author":"Universal Database Application Development BM.","year":"2004","journal-title":"Programming Server Applications"},{"key":"e_1_2_1_13_1","doi-asserted-by":"publisher","DOI":"10.1145\/1272996.1273005"},{"key":"e_1_2_1_14_1","doi-asserted-by":"publisher","DOI":"10.1145\/276304.276338"},{"key":"e_1_2_1_15_1","first-page":"494","volume-title":"VLDB","author":"Jaedicke M.","year":"1999"},{"key":"e_1_2_1_16_1","unstructured":"Microsoft Corporation. Table-valued user-defined functions June 2009. http:\/\/msdn.microsoft.com\/.  Microsoft Corporation. Table-valued user-defined functions June 2009. http:\/\/msdn.microsoft.com\/."},{"key":"e_1_2_1_17_1","doi-asserted-by":"publisher","DOI":"10.1145\/1376616.1376726"},{"key":"e_1_2_1_18_1","unstructured":"Oracle. Oracle Database PL\/SQL Language Reference 2008. Version 11g Release 1.  Oracle. Oracle Database PL\/SQL Language Reference 2008. Version 11g Release 1."},{"key":"e_1_2_1_19_1","doi-asserted-by":"publisher","DOI":"10.5555\/645471.655385"},{"key":"e_1_2_1_20_1","doi-asserted-by":"publisher","DOI":"10.1145\/27629.27631"},{"key":"e_1_2_1_21_1","doi-asserted-by":"publisher","DOI":"10.1145\/125223.125262"},{"key":"e_1_2_1_22_1","doi-asserted-by":"publisher","DOI":"10.1109\/69.50912"}],"container-title":["Proceedings of the VLDB Endowment"],"original-title":[],"language":"en","link":[{"URL":"https:\/\/dl.acm.org\/doi\/pdf\/10.14778\/1687553.1687567","content-type":"unspecified","content-version":"vor","intended-application":"similarity-checking"}],"deposited":{"date-parts":[[2022,12,28]],"date-time":"2022-12-28T10:57:46Z","timestamp":1672225066000},"score":1,"resource":{"primary":{"URL":"https:\/\/dl.acm.org\/doi\/10.14778\/1687553.1687567"}},"subtitle":["a practical approach to self-describing, polymorphic, and parallelizable user-defined functions"],"short-title":[],"issued":{"date-parts":[[2009,8]]},"references-count":22,"journal-issue":{"issue":"2","published-print":{"date-parts":[[2009,8]]}},"alternative-id":["10.14778\/1687553.1687567"],"URL":"https:\/\/doi.org\/10.14778\/1687553.1687567","relation":{},"ISSN":["2150-8097"],"issn-type":[{"value":"2150-8097","type":"print"}],"subject":[],"published":{"date-parts":[[2009,8]]}}}