functional database

from The Free On-line Dictionary of Computing (8 July 2008)
functional database

   <database, language> A {database} which uses a {functional
   language} as its {query language}.

   Databases would seem to be an inappropriate application for
   functional languages since, a {purely functional language}
   would have to return a new copy of the entire database every
   time (part of) it was updated.  To be practically {scalable},
   the update mechanism must clearly be {destructive} rather than
   functional; however it is quite feasible for the {query
   language} to be purely functional so long as the database is
   considered as an argument.

   One approach to the update problem would use a {monad} to
   encapsulate database access and ensure it was {single
   threaded}.  Alternative approaches have been suggested by
   Trinder, who suggests non-destructive updating with shared
   data structures, and Sutton who uses a variant of a Phil
   Wadler's {linear type} system.

   There are two main classes of functional database languages.
   The first is based upon {Backus}' {FP} language, of which
   {FQL} is probably the best known example.  {Adaplan} is a more
   recent language which falls into this category.

   More recently, people have been working on languages which are
   syntactically very similar to modern {functional programming
   languages}, but which also provide all of the features of a
   database language, e.g. bulk data structures which can be
   incrementally updated, type systems which can be incrementally
   updated, and all data persisting in a database.  Examples are
   {PFL} [Poulovassilis&Small, VLDB-91], and {Machiavelli} [Ohori
   et al, ACM SIGMOD Conference, 1998].

   {Query optimisation} is very important for database languages
   in general and the {referential transparency} of functional
   languages allows optimisations which would be harder to verify
   in presence of {side-effects}.

   [Trinder, P., "Referentially transparent database languages",
   1989 Glasgow Workshop on Functional programming]

   [Breazu-Tannen et al., DBPL-91].

   [Poulovassilis, VLDB-94].

   (1995-05-09)
    

[email protected]