Bring Your Own Data Structures to Datalog
The restricted logic programming language Datalog has become a popular implementation target for deductive-analytic workloads including social-media analytics and program analysis. Modern Datalog engines compile Datalog rules to joins over explicit representations of relations—often B-trees or hash...
Saved in:
| Published in: | Proceedings of ACM on programming languages Vol. 7; no. OOPSLA2; pp. 1198 - 1223 |
|---|---|
| Main Authors: | , , , |
| Format: | Journal Article |
| Language: | English |
| Published: |
New York, NY, USA
ACM
16.10.2023
|
| Subjects: | |
| ISSN: | 2475-1421, 2475-1421 |
| Online Access: | Get full text |
| Tags: |
Add Tag
No Tags, Be the first to tag this record!
|
| Abstract | The restricted logic programming language Datalog has become a popular implementation target for deductive-analytic workloads including social-media analytics and program analysis. Modern Datalog engines compile Datalog rules to joins over explicit representations of relations—often B-trees or hash maps. While these modern engines have enabled high scalability in many application domains, they have a crucial weakness: achieving the desired algorithmic complexity may be impossible due to representation-imposed overhead of the engine’s data structures. In this paper, we present the "Bring Your Own Data Structures" (Byods) approach, in the form of a DSL embedded in Rust. Using Byods, an engineer writes logical rules which are implicitly parametric on the concrete data structure representation; our implementation provides an interface to enable "bringing their own" data structures to represent relations, which harmoniously interact with code generated by our compiler (implemented as Rust procedural macros). We formalize the semantics of Byods as an extension of Datalog’s; our formalization captures the key properties demanded of data structures compatible with Byods, including properties required for incrementalized (semi-naïve) evaluation. We detail many applications of the Byods approach, implementing analyses requiring specialized data structures for transitive and equivalence relations to scale, including an optimized version of the Rust borrow checker Polonius; highly-parallel PageRank made possible by lattices; and a large-scale analysis of LLVM utilizing index-sharing to scale. Our results show that Byods offers both improved algorithmic scalability (reduced time and/or space complexity) and runtimes competitive with state-of-the-art parallelizing Datalog solvers. |
|---|---|
| AbstractList | The restricted logic programming language Datalog has become a popular implementation target for deductive-analytic workloads including social-media analytics and program analysis. Modern Datalog engines compile Datalog rules to joins over explicit representations of relations—often B-trees or hash maps. While these modern engines have enabled high scalability in many application domains, they have a crucial weakness: achieving the desired algorithmic complexity may be impossible due to representation-imposed overhead of the engine’s data structures. In this paper, we present the "Bring Your Own Data Structures" (Byods) approach, in the form of a DSL embedded in Rust. Using Byods, an engineer writes logical rules which are implicitly parametric on the concrete data structure representation; our implementation provides an interface to enable "bringing their own" data structures to represent relations, which harmoniously interact with code generated by our compiler (implemented as Rust procedural macros). We formalize the semantics of Byods as an extension of Datalog’s; our formalization captures the key properties demanded of data structures compatible with Byods, including properties required for incrementalized (semi-naïve) evaluation. We detail many applications of the Byods approach, implementing analyses requiring specialized data structures for transitive and equivalence relations to scale, including an optimized version of the Rust borrow checker Polonius; highly-parallel PageRank made possible by lattices; and a large-scale analysis of LLVM utilizing index-sharing to scale. Our results show that Byods offers both improved algorithmic scalability (reduced time and/or space complexity) and runtimes competitive with state-of-the-art parallelizing Datalog solvers. |
| ArticleNumber | 264 |
| Author | Barrett, Langston Moore, Scott Micinski, Kristopher Sahebolamri, Arash |
| Author_xml | – sequence: 1 givenname: Arash orcidid: 0000-0003-3657-093X surname: Sahebolamri fullname: Sahebolamri, Arash email: asahebol@syr.edu organization: Syracuse University, Syracuse, USA – sequence: 2 givenname: Langston orcidid: 0009-0005-0190-8912 surname: Barrett fullname: Barrett, Langston email: langston@galois.com organization: Galois, Portland, USA – sequence: 3 givenname: Scott orcidid: 0009-0009-0719-1130 surname: Moore fullname: Moore, Scott email: scott@galois.com organization: Galois, Portland, USA – sequence: 4 givenname: Kristopher orcidid: 0000-0002-8650-0991 surname: Micinski fullname: Micinski, Kristopher email: kkmicins@syr.edu organization: Syracuse University, Syracuse, USA |
| BookMark | eNptz01LAzEQBuAgFay1ePe0N_GwOpPNbpKj1k8o9KAePC2TbLastBtJsoj_3o9WEfE0w7wPA-8-G_W-d4wdIpwiivKsqDhXAnbYmAtZ5ig4jn7te2wa4zMAoC6EKvSYnVyErl9mT34I2eK1zy4pUXafwmDTEFzMkv86rfzygO22tIpuup0T9nh99TC7zeeLm7vZ-TwnLmXKlXWcG6cbgIYrsoIbROcQWkVOGlMaV5hKW604UisAgUypW3BVY2XVyGLC8s1fG3yMwbW17RKlzvcpULeqEerPqvW26oc__uNfQrem8PaPPNpIsusf9B2-A8vIWzc |
| CitedBy_id | crossref_primary_10_1145_3729298 crossref_primary_10_1145_3632928 crossref_primary_10_1145_3689754 |
| Cites_doi | 10.1017/S1471068417000436 10.1145/3303084.3309490 10.1145/2692956.2663188 10.1145/1480881.1480915 10.1007/978-3-319-41540-6_23 10.1007/s00778-012-0299-1 10.1007/978-3-642-24206-9_14 10.1109/PACT.2019.00015 10.14778/2556549.2556572 10.14778/3282495.3282500 10.1145/3497776.3517779 10.1145/2908080.2908096 10.1145/3591239 10.1145/3453483.3454026 10.1145/237721.237727 10.1145/1640089.1640108 10.1145/2723372.2742796 10.1145/116873.116878 10.1145/321941.321942 10.2140/pjm.1955.5.285 10.1007/11575467_8 10.1145/2882903.2915229 10.1145/3428195 10.1145/364099.364331 10.1109/69.43410 10.1145/137097.137852 10.1145/16894.16859 10.1007/978-1-4612-4980-1_17 10.1002/cpe.5643 10.1109/CGO.2004.1281665 10.1145/2951913.2951948 10.1145/3428209 10.1145/3434304 10.1145/3371090 10.1145/3318464.3384677 |
| ContentType | Journal Article |
| Copyright | Owner/Author |
| Copyright_xml | – notice: Owner/Author |
| DBID | AAYXX CITATION |
| DOI | 10.1145/3622840 |
| DatabaseName | CrossRef |
| DatabaseTitle | CrossRef |
| DatabaseTitleList | CrossRef |
| DeliveryMethod | fulltext_linktorsrc |
| Discipline | Computer Science |
| EISSN | 2475-1421 |
| EndPage | 1223 |
| ExternalDocumentID | 10_1145_3622840 3622840 |
| GrantInformation_xml | – fundername: NSF grantid: CCF-2217037 funderid: https://doi.org/10.13039/ – fundername: Defense Advanced Research Projects Agency grantid: N66001-21-C-402 funderid: https://doi.org/10.13039/100000185 |
| GroupedDBID | AAKMM AAYFX ACM ADPZR AIKLT ALMA_UNASSIGNED_HOLDINGS GUFHI LHSKQ M~E OK1 ROL AAYXX AEFXT AEJOY AKRVB CITATION |
| ID | FETCH-LOGICAL-a277t-8ce22be9d00d28ac42b11ee10f8ae7bb5be3b69c9821af4010ab59f0e6dc76d73 |
| ISICitedReferencesCount | 7 |
| ISICitedReferencesURI | http://www.webofscience.com/api/gateway?GWVersion=2&SrcApp=Summon&SrcAuth=ProQuest&DestLinkType=CitingArticles&DestApp=WOS_CPL&KeyUT=001087279100044&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| ISSN | 2475-1421 |
| IngestDate | Sun Nov 09 14:46:52 EST 2025 Tue Nov 18 22:27:53 EST 2025 Fri Feb 21 01:29:13 EST 2025 |
| IsDoiOpenAccess | true |
| IsOpenAccess | true |
| IsPeerReviewed | true |
| IsScholarly | true |
| Issue | OOPSLA2 |
| Keywords | Logic Programming Datalog Program Analysis Static Analysis |
| Language | English |
| License | This work is licensed under a Creative Commons Attribution 4.0 International License. |
| LinkModel | OpenURL |
| MergedId | FETCHMERGED-LOGICAL-a277t-8ce22be9d00d28ac42b11ee10f8ae7bb5be3b69c9821af4010ab59f0e6dc76d73 |
| ORCID | 0009-0009-0719-1130 0000-0002-8650-0991 0000-0003-3657-093X 0009-0005-0190-8912 |
| OpenAccessLink | https://dl.acm.org/doi/10.1145/3622840 |
| PageCount | 26 |
| ParticipantIDs | crossref_citationtrail_10_1145_3622840 crossref_primary_10_1145_3622840 acm_primary_3622840 |
| PublicationCentury | 2000 |
| PublicationDate | 2023-10-16 |
| PublicationDateYYYYMMDD | 2023-10-16 |
| PublicationDate_xml | – month: 10 year: 2023 text: 2023-10-16 day: 16 |
| PublicationDecade | 2020 |
| PublicationPlace | New York, NY, USA |
| PublicationPlace_xml | – name: New York, NY, USA |
| PublicationTitle | Proceedings of ACM on programming languages |
| PublicationTitleAbbrev | ACM PACMPL |
| PublicationYear | 2023 |
| Publisher | ACM |
| Publisher_xml | – name: ACM |
| References | Molham Aref, Balder ten Cate, Todd J. Green, Benny Kimelfeld, Dan Olteanu, Emir Pasalic, Todd L. Veldhuizen, and Geoffrey Washburn. 2015. Design and Implementation of the LogicBlox System. In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data (SIGMOD ’15). Association for Computing Machinery, New York, NY, USA. 1371–1382. isbn:9781450327589 https://doi.org/10.1145/2723372.2742796 10.1145/2723372.2742796 Zvi Galil and Giuseppe F. Italiano. 1991. Data Structures and Algorithms for Disjoint Set Union Problems. ACM Comput. Surv., 23, 3 (1991), sep, 319–344. issn:0360-0300 https://doi.org/10.1145/116873.116878 10.1145/116873.116878 Herbert Jordan, Pavle Subotić, David Zhao, and Bernhard Scholz. 2022. Specializing parallel data structures for Datalog. Concurrency and Computation: Practice and Experience, 34, 2 (2022), e5643. https://doi.org/10.1002/cpe.5643 10.1002/cpe.5643 Alexander Shkapsky, Mohan Yang, Matteo Interlandi, Hsuan Chiu, Tyson Condie, and Carlo Zaniolo. 2016. Big Data Analytics with Datalog Queries on Spark. In Proceedings of the 2016 International Conference on Management of Data (SIGMOD ’16). Association for Computing Machinery, New York, NY, USA. 1135–1149. isbn:9781450335317 https://doi.org/10.1145/2882903.2915229 10.1145/2882903.2915229 Ross Tate, Michael Stepp, Zachary Tatlock, and Sorin Lerner. 2009. Equality Saturation: A New Approach to Optimization. In Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’09). Association for Computing Machinery, New York, NY, USA. 264–276. isbn:9781605583792 https://doi.org/10.1145/1480881.1480915 10.1145/1480881.1480915 André Pacak, Sebastian Erdweg, and Tamás Szabó. 2020. A Systematic Approach to Deriving Incremental Type Checkers. Proc. ACM Program. Lang., 4, OOPSLA (2020), Article 127, nov, 28 pages. https://doi.org/10.1145/3428195 10.1145/3428195 Bernard A. Galler and Michael J. Fisher. 1964. An Improved Equivalence Algorithm. Commun. ACM, 7, 5 (1964), may, 301–303. issn:0001-0782 https://doi.org/10.1145/364099.364331 10.1145/364099.364331 Harold N. Gabow. 1976. An Efficient Implementation of Edmonds’ Algorithm for Maximum Matching on Graphs. J. ACM, 23, 2 (1976), apr, 221–234. issn:0004-5411 https://doi.org/10.1145/321941.321942 10.1145/321941.321942 Aaron Bembenek, Michael Greenberg, and Stephen Chong. 2020. Formulog: Datalog for SMT-based static analysis. Proceedings of the ACM on Programming Languages, 4, OOPSLA (2020), 1–31. https://doi.org/10.1145/3428209 10.1145/3428209 Herbert Jordan, Pavle Subotić, David Zhao, and Bernhard Scholz. 2019. Brie: A Specialized Trie for Concurrent Datalog. PMAM’19. Association for Computing Machinery, New York, NY, USA. 31–40. isbn:9781450362900 https://doi.org/10.1145/3303084.3309490 10.1145/3303084.3309490 Pavle Subotić, Herbert Jordan, Lijun Chang, Alan Fekete, and Bernhard Scholz. 2018. Automatic Index Selection for Large-scale Datalog Computation. Proc. VLDB Endow., 12, 2 (2018), Oct., 141–153. issn:2150-8097 https://doi.org/10.14778/3282495.3282500 10.14778/3282495.3282500 Alfred Tarski. 1955. A lattice-theoretical fixpoint theorem and its applications. Jiacheng Wu, Jin Wang, and Carlo Zaniolo. 2022. Optimizing parallel recursive datalog evaluation on multicore machines. In Proceedings of the 2022 International Conference on Management of Data. 1433–1446. Michael Arntzenius and Neelakantan R Krishnaswami. 2016. Datafun: a functional Datalog. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming. 214–227. https://doi.org/10.1145/2951913.2951948 10.1145/2951913.2951948 Kai Wang, Zhiqiang Zuo, John Thorpe, Tien Quang Nguyen, and Guoqing Harry Xu. 2018. RStream: Marrying Relational Algebra with Streaming for Efficient Graph Mining on a Single Machine. In Proceedings of the 13th USENIX Conference on Operating Systems Design and Implementation (OSDI’18). USENIX Association, USA. 763–782. isbn:9781931971478 Patrick Nappa, David Zhao, Pavle Subotić, and Bernhard Scholz. 2019. Fast parallel equivalence relations in a Datalog compiler. In 2019 28th International Conference on Parallel Architectures and Compilation Techniques (PACT). 82–96. Rijnard van Tonder. 2021. Towards Fully Declarative Program Analysis via Source Code Transformation. arXiv preprint arXiv:2112.12398. Martin Bravenboer and Yannis Smaragdakis. 2009. Strictly declarative specification of sophisticated points-to analyses. In Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications. 243–262. Alexander Shkapsky, Mohan Yang, and Carlo Zaniolo. 2015. Optimizing recursive queries with monotonic aggregates in deals. In 2015 IEEE 31st International Conference on Data Engineering. 867–878. Yannis Smaragdakis and Martin Bravenboer. 2011. Using Datalog for Fast and Easy Program Analysis. In Proceedings of the First International Conference on Datalog Reloaded (Datalog’10). Springer-Verlag, Berlin, Heidelberg. 245–251. isbn:978-3-642-24205-2 https://doi.org/10.1007/978-3-642-24206-9_14 10.1007/978-3-642-24206-9_14 Bjarne Steensgaard. 1996. Points-to analysis in almost linear time. In Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages. 32–41. Nicholas D. Matsakis and Felix S. Klock. 2014. The Rust Language. Ada Lett., 34, 3 (2014), oct, 103–104. issn:1094-3641 https://doi.org/10.1145/2692956.2663188 10.1145/2692956.2663188 Michael Arntzenius and Neel Krishnaswami. 2019. Seminaïve Evaluation for a Higher-Order Functional Language. Proc. ACM Program. Lang., 4, POPL (2019), Article 22, dec, 28 pages. https://doi.org/10.1145/3371090 10.1145/3371090 François Bancilhon. 1986. Naive Evaluation of Recursively Defined Relations. Springer New York, New York, NY. 165–178. isbn:978-1-4612-4980-1 https://doi.org/10.1007/978-1-4612-4980-1_17 10.1007/978-1-4612-4980-1_17 Lawrence Page, Sergey Brin, Rajeev Motwani, and Terry Winograd. 1999. The PageRank citation ranking: Bringing order to the web.. Stanford InfoLab. Jure Leskovec and Andrej Krevl. 2014. SNAP Datasets: Stanford Large Network Dataset Collection. http://snap.stanford.edu/data Chris Lattner and Vikram Adve. 2004. LLVM: A compilation framework for lifelong program analysis & transformation. In International symposium on code generation and optimization, 2004. CGO 2004.. 75–86. George Balatsouras and Yannis Smaragdakis. 2016. Structure-sensitive points-to analysis for C and C++. In Static Analysis: 23rd International Symposium, SAS 2016, Edinburgh, UK, September 8-10, 2016, Proceedings 23. 84–104. Jin Wang, Guorui Xiao, Jiaqi Gu, Jiacheng Wu, and Carlo Zaniolo. 2020. RASQL: A Powerful Language and Its System for Big Data Applications. In Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data (SIGMOD ’20). Association for Computing Machinery, New York, NY, USA. 2673–2676. isbn:9781450367356 https://doi.org/10.1145/3318464.3384677 10.1145/3318464.3384677 Tamás Szabó, Sebastian Erdweg, and Gábor Bergmann. 2021. Incremental Whole-Program Analysis in Datalog with Lattices. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI 2021). Association for Computing Machinery, New York, NY, USA. 1–15. isbn:9781450383912 https://doi.org/10.1145/3453483.3454026 10.1145/3453483.3454026 Lars Ole Andersen. 1994. Program analysis and specialization for the C programming language. Ph. D. Dissertation. DIKU, University of Copenhagen. Magnus Madsen, Ming-Ho Yee, and Ondřej Lhoták. 2016. From datalog to flix: A declarative language for fixed points on lattices. ACM SIGPLAN Notices, 51, 6 (2016), 194–208. https://doi.org/10.1145/2908080.2908096 10.1145/2908080.2908096 Leonid Ryzhyk and Mihai Budiu. 2019. Differential Datalog. In Proceedings of the 4th International Workshop on the Resurgence of Datalog in Academia and Industry (Datalog-2.0). Philadelpha, PA. 56–67. Jiwon Seo, Jongsoo Park, Jaeho Shin, and Monica S. Lam. 2013. Distributed Socialite: A Datalog-Based Language for Large-Scale Graph Analysis. Proc. VLDB Endow., 6, 14 (2013), sep, 1906–1917. issn:2150-8097 https://doi.org/10.14778/2556549.2556572 10.14778/2556549.2556572 Yihong Zhang, Yisu Remy Wang, Oliver Flatt, David Cao, Philip Zucker, Eli Rosenthal, Zachary Tatlock, and Max Willsey. 2023. Better Together: Unifying Datalog and Equality Saturation. Proc. ACM Program. Lang., 7, PLDI (2023), Article 125, jun, 25 pages. https://doi.org/10.1145/3591239 10.1145/3591239 Todd L. Veldhuizen. 2014. Triejoin: A Simple, Worst-Case Optimal Join Algorithm. In International Conference on Database Theory. Mirjana Mazuran, Edoardo Serra, and Carlo Zaniolo. 2013. Extending the Power of Datalog Recursion. 22, 4 (2013), aug, 471–493. issn:1066-8888 https://doi.org/10.1007/s00778-012-0299-1 10.1007/s00778-012-0299-1 LLVM-Authors. 2023. Opaque Pointers – LLVM documentation. https://llvm.org/docs/OpaquePointers.html Francois Bancilhon and Raghu Ramakrishnan. 1986. An Amateur’s Introduction to Recursive Query Processing Strategies. In Proceedings of the 1986 ACM SIGMOD International Conference on Management of Data (SIGMOD ’86). Association for Computing Machinery, New York, NY, USA. 16–52. isbn:0897911911 https://doi.org/10.1145/16894.16859 10.1145/16894.16859 Max Willsey, Chandrakana Nandi, Yisu Remy Wang, Oliver Flatt, Zachary Tatlock, and Pavel Panchekha. 2021. Egg: Fast and Extensible Equality Saturation. Proc. ACM Program. Lang., 5, POPL (2021), Article 23, jan, 29 pages. https://doi.org/10.1145/3434304 10.1145/3434304 Tony Antoniadis, Konstantinos Triantafyllou, and Yannis Smaragdakis. 2017. Porting doop to soufflé: a tale of inter-engine portability for datalog-based analyses. In Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis. 25–30. Jay McCarthy. 2022. Datalog: Deductive Database Programming. https://docs.racket-lang.org/datalog/ Accessed 04-13-2023 Nuno Lopes, Nikolaj Bjørner, N Wu Jiacheng (e_1_2_1_49_1) 2022 Veldhuizen Todd L. (e_1_2_1_43_1) 2014 e_1_2_1_20_1 e_1_2_1_41_1 Ryzhyk Leonid (e_1_2_1_31_1) 2019 e_1_2_1_24_1 e_1_2_1_22_1 e_1_2_1_28_1 e_1_2_1_47_1 Balatsouras George (e_1_2_1_6_1) 2016 Andersen Lars Ole (e_1_2_1_1_1) e_1_2_1_8_1 e_1_2_1_12_1 e_1_2_1_50_1 e_1_2_1_4_1 e_1_2_1_10_1 e_1_2_1_33_1 e_1_2_1_52_1 e_1_2_1_16_1 e_1_2_1_39_1 e_1_2_1_14_1 e_1_2_1_37_1 e_1_2_1_18_1 Wang Kai (e_1_2_1_45_1) 2018 e_1_2_1_42_1 e_1_2_1_40_1 Antoniadis Tony (e_1_2_1_2_1) 2017 e_1_2_1_23_1 e_1_2_1_44_1 e_1_2_1_27_1 e_1_2_1_25_1 e_1_2_1_48_1 McCarthy Jay (e_1_2_1_26_1) 2022 e_1_2_1_29_1 Shkapsky Alexander (e_1_2_1_35_1) 2015 Weiss Aaron (e_1_2_1_46_1) 2019 e_1_2_1_7_1 e_1_2_1_30_1 e_1_2_1_5_1 e_1_2_1_3_1 e_1_2_1_13_1 e_1_2_1_34_1 e_1_2_1_51_1 e_1_2_1_11_1 e_1_2_1_32_1 e_1_2_1_17_1 e_1_2_1_38_1 e_1_2_1_15_1 e_1_2_1_36_1 e_1_2_1_9_1 e_1_2_1_19_1 |
| References_xml | – reference: Zvi Galil and Giuseppe F. Italiano. 1991. Data Structures and Algorithms for Disjoint Set Union Problems. ACM Comput. Surv., 23, 3 (1991), sep, 319–344. issn:0360-0300 https://doi.org/10.1145/116873.116878 10.1145/116873.116878 – reference: Alexander Shkapsky, Mohan Yang, and Carlo Zaniolo. 2015. Optimizing recursive queries with monotonic aggregates in deals. In 2015 IEEE 31st International Conference on Data Engineering. 867–878. – reference: Michael Arntzenius and Neel Krishnaswami. 2019. Seminaïve Evaluation for a Higher-Order Functional Language. Proc. ACM Program. Lang., 4, POPL (2019), Article 22, dec, 28 pages. https://doi.org/10.1145/3371090 10.1145/3371090 – reference: Herbert Jordan, Pavle Subotić, David Zhao, and Bernhard Scholz. 2019. Brie: A Specialized Trie for Concurrent Datalog. PMAM’19. Association for Computing Machinery, New York, NY, USA. 31–40. isbn:9781450362900 https://doi.org/10.1145/3303084.3309490 10.1145/3303084.3309490 – reference: Aaron Bembenek, Michael Greenberg, and Stephen Chong. 2020. Formulog: Datalog for SMT-based static analysis. Proceedings of the ACM on Programming Languages, 4, OOPSLA (2020), 1–31. https://doi.org/10.1145/3428209 10.1145/3428209 – reference: Alexander Shkapsky, Mohan Yang, Matteo Interlandi, Hsuan Chiu, Tyson Condie, and Carlo Zaniolo. 2016. Big Data Analytics with Datalog Queries on Spark. In Proceedings of the 2016 International Conference on Management of Data (SIGMOD ’16). Association for Computing Machinery, New York, NY, USA. 1135–1149. isbn:9781450335317 https://doi.org/10.1145/2882903.2915229 10.1145/2882903.2915229 – reference: Leonid Ryzhyk and Mihai Budiu. 2019. Differential Datalog. In Proceedings of the 4th International Workshop on the Resurgence of Datalog in Academia and Industry (Datalog-2.0). Philadelpha, PA. 56–67. – reference: Max Willsey, Chandrakana Nandi, Yisu Remy Wang, Oliver Flatt, Zachary Tatlock, and Pavel Panchekha. 2021. Egg: Fast and Extensible Equality Saturation. Proc. ACM Program. Lang., 5, POPL (2021), Article 23, jan, 29 pages. https://doi.org/10.1145/3434304 10.1145/3434304 – reference: François Bancilhon. 1986. Naive Evaluation of Recursively Defined Relations. Springer New York, New York, NY. 165–178. isbn:978-1-4612-4980-1 https://doi.org/10.1007/978-1-4612-4980-1_17 10.1007/978-1-4612-4980-1_17 – reference: Ross Tate, Michael Stepp, Zachary Tatlock, and Sorin Lerner. 2009. Equality Saturation: A New Approach to Optimization. In Proceedings of the 36th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages (POPL ’09). Association for Computing Machinery, New York, NY, USA. 264–276. isbn:9781605583792 https://doi.org/10.1145/1480881.1480915 10.1145/1480881.1480915 – reference: Jin Wang, Guorui Xiao, Jiaqi Gu, Jiacheng Wu, and Carlo Zaniolo. 2020. RASQL: A Powerful Language and Its System for Big Data Applications. In Proceedings of the 2020 ACM SIGMOD International Conference on Management of Data (SIGMOD ’20). Association for Computing Machinery, New York, NY, USA. 2673–2676. isbn:9781450367356 https://doi.org/10.1145/3318464.3384677 10.1145/3318464.3384677 – reference: Eric Zhang. 2023. Datalog compiler embedded in Rust as a procedural macro. https://github.com/ekzhang/crepe – reference: Stefano Ceri, Georg Gottlob, and Letizia Tanca. 1989. What you always wanted to know about Datalog(and never dared to ask). IEEE transactions on knowledge and data engineering, 1, 1 (1989), 146–166. https://doi.org/10.1109/69.43410 10.1109/69.43410 – reference: Carlo Zaniolo, Mohan Yang, Ariyam Das, Alexander Shkapsky, Tyson Condie, and Matteo Interlandi. 2017. Fixpoint semantics and optimization of recursive datalog programs with aggregates. Theory and Practice of Logic Programming, 17, 5-6 (2017), 1048–1065. – reference: Todd L. Veldhuizen. 2014. Triejoin: A Simple, Worst-Case Optimal Join Algorithm. In International Conference on Database Theory. – reference: Pavle Subotić, Herbert Jordan, Lijun Chang, Alan Fekete, and Bernhard Scholz. 2018. Automatic Index Selection for Large-scale Datalog Computation. Proc. VLDB Endow., 12, 2 (2018), Oct., 141–153. issn:2150-8097 https://doi.org/10.14778/3282495.3282500 10.14778/3282495.3282500 – reference: Bernard A. Galler and Michael J. Fisher. 1964. An Improved Equivalence Algorithm. Commun. ACM, 7, 5 (1964), may, 301–303. issn:0001-0782 https://doi.org/10.1145/364099.364331 10.1145/364099.364331 – reference: Arash Sahebolamri, Thomas Gilray, and Kristopher Micinski. 2022. Seamless deductive inference via macros. In Proceedings of the 31st ACM SIGPLAN International Conference on Compiler Construction. 77–88. – reference: Tony Antoniadis, Konstantinos Triantafyllou, and Yannis Smaragdakis. 2017. Porting doop to soufflé: a tale of inter-engine portability for datalog-based analyses. In Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis. 25–30. – reference: Molham Aref, Balder ten Cate, Todd J. Green, Benny Kimelfeld, Dan Olteanu, Emir Pasalic, Todd L. Veldhuizen, and Geoffrey Washburn. 2015. Design and Implementation of the LogicBlox System. In Proceedings of the 2015 ACM SIGMOD International Conference on Management of Data (SIGMOD ’15). Association for Computing Machinery, New York, NY, USA. 1371–1382. isbn:9781450327589 https://doi.org/10.1145/2723372.2742796 10.1145/2723372.2742796 – reference: Jiwon Seo, Jongsoo Park, Jaeho Shin, and Monica S. Lam. 2013. Distributed Socialite: A Datalog-Based Language for Large-Scale Graph Analysis. Proc. VLDB Endow., 6, 14 (2013), sep, 1906–1917. issn:2150-8097 https://doi.org/10.14778/2556549.2556572 10.14778/2556549.2556572 – reference: Kai Wang, Zhiqiang Zuo, John Thorpe, Tien Quang Nguyen, and Guoqing Harry Xu. 2018. RStream: Marrying Relational Algebra with Streaming for Efficient Graph Mining on a Single Machine. In Proceedings of the 13th USENIX Conference on Operating Systems Design and Implementation (OSDI’18). USENIX Association, USA. 763–782. isbn:9781931971478 – reference: Michael Arntzenius and Neelakantan R Krishnaswami. 2016. Datafun: a functional Datalog. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming. 214–227. https://doi.org/10.1145/2951913.2951948 10.1145/2951913.2951948 – reference: Kenneth A. Ross and Yehoshua Sagiv. 1992. Monotonic Aggregation in Deductive Databases. In Proceedings of the Eleventh ACM SIGACT-SIGMOD-SIGART Symposium on Principles of Database Systems (PODS ’92). Association for Computing Machinery, New York, NY, USA. 114–126. isbn:0897915194 https://doi.org/10.1145/137097.137852 10.1145/137097.137852 – reference: Herbert Jordan, Pavle Subotić, David Zhao, and Bernhard Scholz. 2022. Specializing parallel data structures for Datalog. Concurrency and Computation: Practice and Experience, 34, 2 (2022), e5643. https://doi.org/10.1002/cpe.5643 10.1002/cpe.5643 – reference: Lawrence Page, Sergey Brin, Rajeev Motwani, and Terry Winograd. 1999. The PageRank citation ranking: Bringing order to the web.. Stanford InfoLab. – reference: John Whaley, Dzintars Avots, Michael Carbin, and Monica S Lam. 2005. Using Datalog with binary decision diagrams for program analysis. In Asian Symposium on Programming Languages and Systems. 97–118. – reference: Herbert Jordan, Bernhard Scholz, and Pavle Subotić. 2016. Soufflé: On Synthesis of Program Analyzers. In Computer Aided Verification, Swarat Chaudhuri and Azadeh Farzan (Eds.). Springer International Publishing, Cham. 422–430. isbn:978-3-319-41540-6 https://doi.org/10.1007/978-3-319-41540-6_23 10.1007/978-3-319-41540-6_23 – reference: LLVM-Authors. 2023. Opaque Pointers – LLVM documentation. https://llvm.org/docs/OpaquePointers.html – reference: Jure Leskovec and Andrej Krevl. 2014. SNAP Datasets: Stanford Large Network Dataset Collection. http://snap.stanford.edu/data – reference: Aaron Weiss, Olek Gierczak, Daniel Patterson, Nicholas D Matsakis, and Amal Ahmed. 2019. Oxide: The essence of rust. arXiv preprint arXiv:1903.00982, https://doi.org/10.48550/arXiv.1903.00982 – reference: André Pacak, Sebastian Erdweg, and Tamás Szabó. 2020. A Systematic Approach to Deriving Incremental Type Checkers. Proc. ACM Program. Lang., 4, OOPSLA (2020), Article 127, nov, 28 pages. https://doi.org/10.1145/3428195 10.1145/3428195 – reference: Chris Lattner and Vikram Adve. 2004. LLVM: A compilation framework for lifelong program analysis & transformation. In International symposium on code generation and optimization, 2004. CGO 2004.. 75–86. – reference: Harold N. Gabow. 1976. An Efficient Implementation of Edmonds’ Algorithm for Maximum Matching on Graphs. J. ACM, 23, 2 (1976), apr, 221–234. issn:0004-5411 https://doi.org/10.1145/321941.321942 10.1145/321941.321942 – reference: Patrick Nappa, David Zhao, Pavle Subotić, and Bernhard Scholz. 2019. Fast parallel equivalence relations in a Datalog compiler. In 2019 28th International Conference on Parallel Architectures and Compilation Techniques (PACT). 82–96. – reference: Martin Bravenboer and Yannis Smaragdakis. 2009. Strictly declarative specification of sophisticated points-to analyses. In Proceedings of the 24th ACM SIGPLAN conference on Object oriented programming systems languages and applications. 243–262. – reference: Tamás Szabó, Sebastian Erdweg, and Gábor Bergmann. 2021. Incremental Whole-Program Analysis in Datalog with Lattices. In Proceedings of the 42nd ACM SIGPLAN International Conference on Programming Language Design and Implementation (PLDI 2021). Association for Computing Machinery, New York, NY, USA. 1–15. isbn:9781450383912 https://doi.org/10.1145/3453483.3454026 10.1145/3453483.3454026 – reference: Nicholas Matsakis and RustDevelopers. 2023. Rust-Lang/polonius: Defines the Rust borrow checker. https://github.com/rust-lang/polonius – reference: Jiacheng Wu, Jin Wang, and Carlo Zaniolo. 2022. Optimizing parallel recursive datalog evaluation on multicore machines. In Proceedings of the 2022 International Conference on Management of Data. 1433–1446. – reference: George Balatsouras and Yannis Smaragdakis. 2016. Structure-sensitive points-to analysis for C and C++. In Static Analysis: 23rd International Symposium, SAS 2016, Edinburgh, UK, September 8-10, 2016, Proceedings 23. 84–104. – reference: Yihong Zhang, Yisu Remy Wang, Oliver Flatt, David Cao, Philip Zucker, Eli Rosenthal, Zachary Tatlock, and Max Willsey. 2023. Better Together: Unifying Datalog and Equality Saturation. Proc. ACM Program. Lang., 7, PLDI (2023), Article 125, jun, 25 pages. https://doi.org/10.1145/3591239 10.1145/3591239 – reference: Magnus Madsen, Ming-Ho Yee, and Ondřej Lhoták. 2016. From datalog to flix: A declarative language for fixed points on lattices. ACM SIGPLAN Notices, 51, 6 (2016), 194–208. https://doi.org/10.1145/2908080.2908096 10.1145/2908080.2908096 – reference: Yannis Smaragdakis and Martin Bravenboer. 2011. Using Datalog for Fast and Easy Program Analysis. In Proceedings of the First International Conference on Datalog Reloaded (Datalog’10). Springer-Verlag, Berlin, Heidelberg. 245–251. isbn:978-3-642-24205-2 https://doi.org/10.1007/978-3-642-24206-9_14 10.1007/978-3-642-24206-9_14 – reference: Lars Ole Andersen. 1994. Program analysis and specialization for the C programming language. Ph. D. Dissertation. DIKU, University of Copenhagen. – reference: Jay McCarthy. 2022. Datalog: Deductive Database Programming. https://docs.racket-lang.org/datalog/ Accessed 04-13-2023 – reference: Alfred Tarski. 1955. A lattice-theoretical fixpoint theorem and its applications. – reference: Bjarne Steensgaard. 1996. Points-to analysis in almost linear time. In Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages. 32–41. – reference: Francois Bancilhon and Raghu Ramakrishnan. 1986. An Amateur’s Introduction to Recursive Query Processing Strategies. In Proceedings of the 1986 ACM SIGMOD International Conference on Management of Data (SIGMOD ’86). Association for Computing Machinery, New York, NY, USA. 16–52. isbn:0897911911 https://doi.org/10.1145/16894.16859 10.1145/16894.16859 – reference: Rijnard van Tonder. 2021. Towards Fully Declarative Program Analysis via Source Code Transformation. arXiv preprint arXiv:2112.12398. – reference: Mirjana Mazuran, Edoardo Serra, and Carlo Zaniolo. 2013. Extending the Power of Datalog Recursion. 22, 4 (2013), aug, 471–493. issn:1066-8888 https://doi.org/10.1007/s00778-012-0299-1 10.1007/s00778-012-0299-1 – reference: Nuno Lopes, Nikolaj Bjørner, Nick McKeown, Andrey Rybalchenko, Dan Talayco, and George Varghese. 2016. Automatically verifying reachability and well-formedness in P4 Networks. Technical Report, Tech. Rep. – reference: Nicholas D. Matsakis and Felix S. Klock. 2014. The Rust Language. Ada Lett., 34, 3 (2014), oct, 103–104. issn:1094-3641 https://doi.org/10.1145/2692956.2663188 10.1145/2692956.2663188 – volume-title: 2015 IEEE 31st International Conference on Data Engineering. 867–878 year: 2015 ident: e_1_2_1_35_1 – volume-title: Oxide: The essence of rust. arXiv preprint arXiv:1903.00982, https://doi.org/10.48550/arXiv.1903.00982 year: 2019 ident: e_1_2_1_46_1 – ident: e_1_2_1_50_1 doi: 10.1017/S1471068417000436 – volume-title: Proceedings of the 6th ACM SIGPLAN International Workshop on State Of the Art in Program Analysis. 25–30 year: 2017 ident: e_1_2_1_2_1 – ident: e_1_2_1_16_1 doi: 10.1145/3303084.3309490 – ident: e_1_2_1_24_1 doi: 10.1145/2692956.2663188 – ident: e_1_2_1_41_1 doi: 10.1145/1480881.1480915 – ident: e_1_2_1_15_1 doi: 10.1007/978-3-319-41540-6_23 – ident: e_1_2_1_25_1 doi: 10.1007/s00778-012-0299-1 – ident: e_1_2_1_36_1 doi: 10.1007/978-3-642-24206-9_14 – ident: e_1_2_1_51_1 – ident: e_1_2_1_19_1 – ident: e_1_2_1_27_1 doi: 10.1109/PACT.2019.00015 – ident: e_1_2_1_20_1 – ident: e_1_2_1_33_1 doi: 10.14778/2556549.2556572 – volume-title: Static Analysis: 23rd International Symposium, SAS 2016, Edinburgh, UK, September 8-10, 2016, Proceedings 23 year: 2016 ident: e_1_2_1_6_1 – ident: e_1_2_1_38_1 doi: 10.14778/3282495.3282500 – ident: e_1_2_1_32_1 doi: 10.1145/3497776.3517779 – ident: e_1_2_1_22_1 doi: 10.1145/2908080.2908096 – ident: e_1_2_1_42_1 – volume-title: Program analysis and specialization for the C programming language. Ph. D. Dissertation. DIKU ident: e_1_2_1_1_1 – volume-title: Proceedings of the 13th USENIX Conference on Operating Systems Design and Implementation (OSDI’18) year: 2018 ident: e_1_2_1_45_1 – ident: e_1_2_1_52_1 doi: 10.1145/3591239 – ident: e_1_2_1_39_1 doi: 10.1145/3453483.3454026 – ident: e_1_2_1_37_1 doi: 10.1145/237721.237727 – volume-title: Proceedings of the 2022 International Conference on Management of Data. 1433–1446 year: 2022 ident: e_1_2_1_49_1 – ident: e_1_2_1_10_1 doi: 10.1145/1640089.1640108 – ident: e_1_2_1_3_1 doi: 10.1145/2723372.2742796 – ident: e_1_2_1_13_1 doi: 10.1145/116873.116878 – ident: e_1_2_1_12_1 doi: 10.1145/321941.321942 – volume-title: Differential Datalog. In Proceedings of the 4th International Workshop on the Resurgence of Datalog in Academia and Industry (Datalog-2.0) year: 2019 ident: e_1_2_1_31_1 – ident: e_1_2_1_40_1 doi: 10.2140/pjm.1955.5.285 – ident: e_1_2_1_47_1 doi: 10.1007/11575467_8 – ident: e_1_2_1_34_1 doi: 10.1145/2882903.2915229 – ident: e_1_2_1_28_1 doi: 10.1145/3428195 – ident: e_1_2_1_23_1 – ident: e_1_2_1_29_1 – ident: e_1_2_1_14_1 doi: 10.1145/364099.364331 – ident: e_1_2_1_11_1 doi: 10.1109/69.43410 – ident: e_1_2_1_30_1 doi: 10.1145/137097.137852 – ident: e_1_2_1_8_1 doi: 10.1145/16894.16859 – ident: e_1_2_1_7_1 doi: 10.1007/978-1-4612-4980-1_17 – ident: e_1_2_1_17_1 doi: 10.1002/cpe.5643 – volume-title: Worst-Case Optimal Join Algorithm. In International Conference on Database Theory. year: 2014 ident: e_1_2_1_43_1 – ident: e_1_2_1_18_1 doi: 10.1109/CGO.2004.1281665 – ident: e_1_2_1_5_1 doi: 10.1145/2951913.2951948 – volume-title: Datalog: Deductive Database Programming. https://docs.racket-lang.org/datalog/ Accessed 04-13-2023 year: 2022 ident: e_1_2_1_26_1 – ident: e_1_2_1_9_1 doi: 10.1145/3428209 – ident: e_1_2_1_48_1 doi: 10.1145/3434304 – ident: e_1_2_1_4_1 doi: 10.1145/3371090 – ident: e_1_2_1_44_1 doi: 10.1145/3318464.3384677 |
| SSID | ssj0001934839 |
| Score | 2.3053792 |
| Snippet | The restricted logic programming language Datalog has become a popular implementation target for deductive-analytic workloads including social-media analytics... |
| SourceID | crossref acm |
| SourceType | Enrichment Source Index Database Publisher |
| StartPage | 1198 |
| SubjectTerms | Constraint and logic programming Domain specific languages Software and its engineering Theory of computation |
| SubjectTermsDisplay | Software and its engineering -- Domain specific languages Theory of computation -- Constraint and logic programming |
| Title | Bring Your Own Data Structures to Datalog |
| URI | https://dl.acm.org/doi/10.1145/3622840 |
| Volume | 7 |
| WOSCitedRecordID | wos001087279100044&url=https%3A%2F%2Fcvtisr.summon.serialssolutions.com%2F%23%21%2Fsearch%3Fho%3Df%26include.ft.matches%3Dt%26l%3Dnull%26q%3D |
| hasFullText | 1 |
| inHoldings | 1 |
| isFullTextHit | |
| isPrint | |
| journalDatabaseRights | – providerCode: PRVHPJ databaseName: ROAD: Directory of Open Access Scholarly Resources customDbUrl: eissn: 2475-1421 dateEnd: 99991231 omitProxy: false ssIdentifier: ssj0001934839 issn: 2475-1421 databaseCode: M~E dateStart: 20170101 isFulltext: true titleUrlDefault: https://road.issn.org providerName: ISSN International Centre |
| link | http://cvtisr.summon.serialssolutions.com/2.0.0/link/0/eLvHCXMwtV3NT9swFLc2xmGXwdgmGDD5ME2apojEcWL7WD6mSSu0UhniVtmOI5AgRW03OPG38_wRJwIO22GXqHJdR_XPfu_5-ffeQ-izyVNDVQXHkoKqhDLDE57TKpGiguOGyZV0aRfPhuzkhJ-fi3Hg6S5cOQHWNPzuTtz8V6ihDcC2obP_AHccFBrgM4AOT4Adnn8F_L5j1MEunn8b3TYA61Lau-ff7q7A5XM49C6bvl06jnrMUTsGB8f2FiGQt67tgK1jM9rgE3kBsgoWlI9VH8zlIrqW9zsC8BB-Zw3MiOwsMHsnNitEbLUX_KGE9s-Y7qDvkiCO3OYjJsMiCjR3J8YIZUWSUR8H3cpc1ltao9F4MhyQnhTNMl-ZOmjkjPiQ5KfSntrEGKCCQcemnUKLNMPwzUv0irBCWMLf8X3PAydyCuahj6S2Y-2F_tZQ0dc9Q6VncZyuozfhqIAHHuK36IVpNtBaW4YDB6n8Dn11iGOLOAbEsYUXd4jj5QwHxN-jX9-PTg9-JKECRiIJY8uEa0OIMqJK04pwqSlRsIFMltZcGqZUoWA3lUILTjJZw1E5laoQdWrKSrOyYvkHtNLMGrOJMNXCpHUhWVYoaljNq7KkXJdSSpNLJrfQBvzp6Y3PcTINU7GFvrSTMNUhabytXXI19QHtRdcRx47tGI-6fHz2DdvodbeEdtAKzI7ZRav6z_JyMf_kEHsAcJRXow |
| linkProvider | ISSN International Centre |
| openUrl | ctx_ver=Z39.88-2004&ctx_enc=info%3Aofi%2Fenc%3AUTF-8&rfr_id=info%3Asid%2Fsummon.serialssolutions.com&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Ajournal&rft.genre=article&rft.atitle=Bring+Your+Own+Data+Structures+to+Datalog&rft.jtitle=Proceedings+of+ACM+on+programming+languages&rft.au=Sahebolamri%2C+Arash&rft.au=Barrett%2C+Langston&rft.au=Moore%2C+Scott&rft.au=Micinski%2C+Kristopher&rft.date=2023-10-16&rft.pub=ACM&rft.eissn=2475-1421&rft.volume=7&rft.issue=OOPSLA2&rft.spage=1198&rft.epage=1223&rft_id=info:doi/10.1145%2F3622840&rft.externalDocID=3622840 |
| thumbnail_l | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/lc.gif&issn=2475-1421&client=summon |
| thumbnail_m | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/mc.gif&issn=2475-1421&client=summon |
| thumbnail_s | http://covers-cdn.summon.serialssolutions.com/index.aspx?isbn=/sc.gif&issn=2475-1421&client=summon |