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)
Nearby terms:
Fun « function « functional « functional database
» functional dependency » functionality » functional
language
|