ACM Transactions on Database Systems (TODS)
Three partition refinement algorithms
SIAM Journal on Computing
Type inference in a database programming language
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Look ma, no hashing, and no arrays neither
POPL '91 Proceedings of the 18th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Join processing in relational databases
ACM Computing Surveys (CSUR)
Structural recursion as a query language
DBPL3 Proceedings of the third international workshop on Database programming languages : bulk types & persistent data: bulk types & persistent data
Query evaluation techniques for large databases
ACM Computing Surveys (CSUR)
Using multiset discrimination to solve language processing problems without hashing
Theoretical Computer Science
Principles of programming with complex objects and collection types
ICDT '92 Selected papers of the fourth international conference on Database theory
High level reading and data structure compilation
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Proceedings of the IFIP TC 2 WG 2.1 international workshop on Algorithmic languages and calculi
Purely functional data structures
Purely functional data structures
Quasilinear algorithms for processing relational calculus expressions (preliminary report)
PODS '90 Proceedings of the ninth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
An implementation technique for database query languages
ACM Transactions on Database Systems (TODS)
Domain specific embedded compilers
Proceedings of the 2nd conference on Domain-specific languages
Eddies: continuously adaptive query processing
SIGMOD '00 Proceedings of the 2000 ACM SIGMOD international conference on Management of data
A relational model of data for large shared data banks
Communications of the ACM
Database Management Systems
Naturally Embedded Query Languages
ICDT '92 Proceedings of the 4th International Conference on Database Theory
A practical functional programming system for databases
FPCA '81 Proceedings of the 1981 conference on Functional programming languages and computer architecture
Kleisli, a functional query system
Journal of Functional Programming
Journal of Functional Programming
C-store: a column-oriented DBMS
VLDB '05 Proceedings of the 31st international conference on Very large data bases
LINQ: reconciling object, relations and XML in the .NET framework
Proceedings of the 2006 ACM SIGMOD international conference on Management of data
MapReduce: simplified data processing on large clusters
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
Foundations and Trends in Databases
Generic discrimination: sorting and paritioning unshared data in linear time
Proceedings of the 13th ACM SIGPLAN international conference on Functional programming
FERRY: database-supported program execution
Proceedings of the 2009 ACM SIGMOD International Conference on Management of data
Storage and access in relational data bases
IBM Systems Journal
Generic multiset programming for language-integrated querying
Proceedings of the 6th ACM SIGPLAN workshop on Generic programming
Generic multiset programming with discrimination-based joins and symbolic Cartesian products
Higher-Order and Symbolic Computation
Dynamic symbolic computation for domain-specific language implementation
LOPSTR'11 Proceedings of the 21st international conference on Logic-Based Program Synthesis and Transformation
Hi-index | 0.00 |
We show how to efficiently evaluate generic map-filter-product queries, generalizations of select-project-join (SPJ) queries in relational algebra, based on a combination of two novel techniques: generic discrimination-based joins and lazy (formal) products. Discrimination-based joins are based on the notion of (equivalence) discriminator. A discriminator partitions a list of values according to a user-specified equivalence relation on keys the values are associated with. Equivalence relations can be specified in an expressive embedded language for denoting equivalence relations. We show that discriminators can be constructed generically (by structural recursion on equivalence expressions), purely functionally, and efficiently (worst-case linear time). The array-based basic multiset discrimination algorithm of Cai and Paige (1995) provides a base discriminator that is both asymptotically and practically efficient. In contrast to hashing, discrimination is fully abstract (only depends on which equivalences hold on its inputs), and in contrast to comparison-based sorting, it does not require an ordering relation on its inputs. In particular, it is applicable to references (pointers). Furthermore, it has better asymptotic computational complexity than both sorting and hashing. We represent cross-products and unions lazily (symbolically) as formal products of the argument sets (relations). This allows the selection operation to recognize on the fly whenever it is applied to a cross-product and invoke an efficient equijoin implementation. In particular, queries can still be formulated naively, using filter, map and product without an explicit join operation, yet garner the advantages of efficient join-algorithms during evaluation. The techniques subsume many of the optimization techniques based on relational algebra equalities, without need for a query preprocessing phase. They require no indexes and behave purely functionally. They can be considered a form of symbolic execution of set expressions that automate and encapsulate dynamic program transformation of such expressions and lead to asymptotic performance improvements over naive execution in many cases.