Types and persistence in database programming languages
ACM Computing Surveys (CSUR)
Type inference in a database programming language
LFP '88 Proceedings of the 1988 ACM conference on LISP and functional programming
Orderings and types in databases
Advances in database programming languages
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)
Principles of programming with complex objects and collection types
ICDT '92 Selected papers of the fourth international conference on Database theory
Applications of range query theory to relational data base join and selection operations
Journal of Computer and System Sciences
Proceedings of the IFIP TC 2 WG 2.1 international workshop on Algorithmic languages and calculi
An overview of query optimization in relational systems
PODS '98 Proceedings of the seventeenth ACM SIGACT-SIGMOD-SIGART symposium on Principles of database systems
Programming pearls: little languages
Communications of the ACM
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
Database Management Systems
Access path selection in a relational database management system
SIGMOD '79 Proceedings of the 1979 ACM SIGMOD international conference on Management of data
Guarded recursive datatype constructors
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
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
Querying nested collections
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
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
VLDB '04 Proceedings of the Thirtieth international conference on Very large data bases - Volume 30
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
Towards a streaming SQL standard
Proceedings of the VLDB Endowment
FERRY: database-supported program execution
Proceedings of the 2009 ACM SIGMOD International Conference on Management of data
Organizing functional code for parallel execution or, foldl and foldr considered slightly harmful
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Optimizing relational algebra operations using generic equivalence discriminators and lazy products
Proceedings of the 2010 ACM SIGPLAN workshop on Partial evaluation and program manipulation
Links: web programming without tiers
FMCO'06 Proceedings of the 5th international conference on Formal methods for components and objects
Generic multiset programming for language-integrated querying
Proceedings of the 6th ACM SIGPLAN workshop on Generic programming
Avalanche-safe LINQ compilation
Proceedings of the VLDB Endowment
The pain of implementing LINQ providers
Communications of the ACM
Generic top-down discrimination for sorting and partitioning in linear time*
Journal of Functional Programming
Dynamic symbolic computation for domain-specific language implementation
LOPSTR'11 Proceedings of the 21st international conference on Logic-Based Program Synthesis and Transformation
A practical theory of language-integrated query
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Effective quotation: relating approaches to language-integrated query
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
This paper presents GMP, a library for generic, SQL-style programming with multisets. It generalizes the querying core of SQL in a number of ways: Multisets may contain elements of arbitrary first-order data types, including references (pointers), recursive data types and nested multisets; it contains an expressive embedded domain-specific language for specifying user-definable equivalence and ordering relations, extending the built-in equality and inequality predicates; it admits mapping arbitrary functions over multisets, not just projections; it supports user-defined predicates in selections; and it allows user-defined aggregation functions.Most significantly, it avoids many cases of asymptotically inefficient nested iteration through Cartesian products that occur in a straightforward stream-based implementation of multisets. It accomplishes this by employing two novel techniques: symbolic (term) representations of multisets, specifically for Cartesian products, for facilitating dynamic symbolic computation, which intersperses algebraic simplification steps with conventional data processing; and discrimination-based joins, a generic technique for computing equijoins based on equivalence discriminators, as an alternative to hash-based and sort-merge joins.Full source code for GMP in Haskell, which is based on generic top-down discrimination (not included), is included for experimentation. We provide illustrative examples whose performance indicates that GMP, even without requisite algorithm and data structure engineering, is a realistic alternative to SQL even for SQL-expressible queries.