DSH 0.10.0.0 → 0.10.0.1
raw patch · 2 files changed
+63/−1 lines, 2 files
Files
DSH.cabal view
@@ -1,5 +1,5 @@ Name: DSH-Version: 0.10.0.0+Version: 0.10.0.1 Synopsis: Database Supported Haskell Description: This is a Haskell library for database-supported program execution. Using@@ -58,6 +58,7 @@ tests/ComprehensionTests.hs tests/DSHComprehensions.hs tests/CombinatorTests.hs+ README.md Cabal-version: >= 1.8
+ README.md view
@@ -0,0 +1,61 @@+# Database-Supported Haskell (DSH)++This is a Haskell library for database-supported program execution. Using+this library a relational database management system (RDBMS) can be used as+a coprocessor for the Haskell programming language, especially for those+program fragments that carry out data-intensive and data-parallel+computations.++Database executable program fragments can be written using the monad+comprehension notation [2] and list processing combinators from the Haskell+list prelude. Note that rather than embedding a relational language into+Haskell, we turn idiomatic Haskell programs into SQL queries.++DSH faithfully represents list order and nesting, and compiles the list+processing combinators into relational queries. The implementation avoids+unnecessary data transfer and context switching between the database+coprocessor and the Haskell runtime by ensuring that the number of generated+relational queries is only determined by the program fragment's type and not+by the database size.++DSH can be used to allow existing Haskell programs to operate on large scale+data (e.g., larger than the available heap) or query existing database+resident data with Haskell.++Note that this package is flagged experimental and therefore is not suited+for production use. This is a proof of concept implementation only. To learn+more about DSH, our paper entitled as "Haskell Boards the Ferry: Database-+Supported Program Execution for Haskell" [1] is a recommended reading. The+package includes a couple of examples that demonstrate how to use DSH.++In contrast to the DSH version described in [1], the current release+does not rely anymore on the loop-lifting compilation technique+together with the Pathfinder optimizer. Instead, it brings a+completely rewritten query compiler based on Guy Blelloch's flattening+transformation. This approach leads to a more robust compilation and+produces more efficient query code.++1. [http://db.inf.uni-tuebingen.de/staticfiles/publications/ferryhaskell.pdf](Grust+ et al. Haskell Boards the Ferry. Database-Supported Program+ Execution for Haskell. IFL 2010)+2. [http://db.inf.uni-tuebingen.de/staticfiles/publications/haskell2011.pdf](Grust+ et al. Bringing Back Monad Comprehensions. Haskell Symposium 2011).++# Release Notes++* This is an experimental proof-of-concept implementation that most+ likely contains bugs. You have been warned. We are happy to receive+ bug reports.+* For documentation, have a look at the examples included in directory+ 'examples' in the source distribution.+* DSH works with a HDBC PostgreSQL connection. Other databases (*e.g.*+ MySQL, Sqlite) are unlikely to work.+* Support for general algebraic data types is currently broken. Flat+ record types do work.+* Comprehension syntax for DSH queries is currently implemented using+ monad comprehensions and the `RebindableSyntax` extension. This+ means that any module that contains DSH queries and makes use of+ comprehension syntax has to enable the extension. Additionally,+ `do`-notation and comprehensions over other monads (*e.g.* lists)+ can not be used in such a module. This limitation is an+ implementation artifact that we hope to get rid of soon.