Difference between revisions of "Applications and libraries/Database interfaces"

From HaskellWiki
Jump to navigation Jump to search
(Replace link on HaskellDB title.)
m (Update the info on Hasql)
 
(6 intermediate revisions by 4 users not shown)
Line 11: Line 11:
   
 
;[https://github.com/hdbc/hdbc HDBC]
 
;[https://github.com/hdbc/hdbc HDBC]
: HDBC is modeled loosely on Perl's DBI interface, though it has also been influenced by Python's DB-API v2, JDBC in Java, and HSQL in Haskell. Supports SQLite3, PostgreSQL, ODBC (including MySQL). ([http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HDBC HDBC in Hackage])
+
: HDBC is modeled loosely on Perl's DBI interface, though it has also been influenced by Python's DB-API v2, JDBC in Java, and HSQL in Haskell. Supports SQLite3, PostgreSQL, ODBC (including MySQL). ([http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HDBC HDBC in Hackage]; [[HDBC-Example|an example of its use]].)
   
 
;[https://github.com/m4dc4p/haskelldb HaskellDB]
 
;[https://github.com/m4dc4p/haskelldb HaskellDB]
Line 17: Line 17:
 
: HaskellDB is a combinator library for expressing queries and other operations on relational databases in a type safe and declarative way. All the queries and operations are completely expressed within Haskell, no embedded (SQL) commands are needed.
 
: HaskellDB is a combinator library for expressing queries and other operations on relational databases in a type safe and declarative way. All the queries and operations are completely expressed within Haskell, no embedded (SQL) commands are needed.
   
Both the [http://www.haskell.org/haskellDB original version from Daan Leijen's] HaskellDB and the [https://github.com/m4dc4p/haskelldb HaskellDB more up-to-date GitHub version] (works with latest GHC versions) are relatively platform-independent.
+
: Both the [http://www.haskell.org/haskellDB original version from Daan Leijen's] HaskellDB and the [https://github.com/m4dc4p/haskelldb HaskellDB more up-to-date GitHub version] (works with latest GHC versions) are relatively platform-independent.
   
This close integration makes it possible to do arbitrary computations on the database (like computing the transitive closure). ([http://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb HaskellDB in Hackage])
+
: This close integration makes it possible to do arbitrary computations on the database (like computing the transitive closure). ([http://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb HaskellDB in Hackage])
  +
  +
;[http://hackage.haskell.org/cgi-bin/hackage-scripts/package/BerkeleyDBXML-0.1 Berkeley DB/DB XML binding]
   
;Berkeley DB/DB XML binding
 
 
:See [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/BerkeleyDBXML-0.1 BerkeleyDBXML in Hackage]
 
:See [http://hackage.haskell.org/cgi-bin/hackage-scripts/package/BerkeleyDBXML-0.1 BerkeleyDBXML in Hackage]
   
Line 29: Line 30:
 
;[http://hackage.haskell.org/package/mysql-simple mysql-simple], [http://hackage.haskell.org/package/postgresql-simple postgresql-simple], [http://hackage.haskell.org/package/sqlite-simple sqlite-simple]
 
;[http://hackage.haskell.org/package/mysql-simple mysql-simple], [http://hackage.haskell.org/package/postgresql-simple postgresql-simple], [http://hackage.haskell.org/package/sqlite-simple sqlite-simple]
 
:The *-simple packages provide a mid-level database interface to MySQL, PostgreSQL and SQLite. They each have a similar API but do not attempt to generalize to cover multiple database implementations under a single library. This enables each library to expose database-specific features. These libraries rely on SQL queries embedded as strings but do support automatically converting fields to/from the database to Haskell types.
 
:The *-simple packages provide a mid-level database interface to MySQL, PostgreSQL and SQLite. They each have a similar API but do not attempt to generalize to cover multiple database implementations under a single library. This enables each library to expose database-specific features. These libraries rely on SQL queries embedded as strings but do support automatically converting fields to/from the database to Haskell types.
  +
  +
;[https://github.com/nikita-volkov/hasql Hasql]
  +
:PostgreSQL driver with focus on performance, simplicity and type-safety. The fastest driver around according to [https://nikita-volkov.github.io//hasql-benchmarks/ the benchmarks]. Powers [https://github.com/PostgREST/postgrest PostgREST] a very popular production-grade REST API for PostgreSQL. Comes with a rich [https://github.com/nikita-volkov/hasql#ecosystem ecosystem of libraries].
   
 
=== Non-current ===
 
=== Non-current ===
Line 42: Line 46:
 
;[http://wiki.di.uminho.pt/twiki/bin/view/Research/PURe/VooDooM VooDooM]
 
;[http://wiki.di.uminho.pt/twiki/bin/view/Research/PURe/VooDooM VooDooM]
 
:PURe VooDooM reads VDM-SL specifications and applies transformation rules to the datatypes that are defined in them to obtain a relational representation for these datatypes. The relational representation can be exported as VDM-SL datatypes (inserted back into the original specification) or SQL table definitions (which can be fed to a relational DBMS). (''Development discontinued in 2006'')
 
:PURe VooDooM reads VDM-SL specifications and applies transformation rules to the datatypes that are defined in them to obtain a relational representation for these datatypes. The relational representation can be exported as VDM-SL datatypes (inserted back into the original specification) or SQL table definitions (which can be fed to a relational DBMS). (''Development discontinued in 2006'')
 
 
;[http://members.tripod.com/~sproot/hasql.htm HaSQL]
 
:HaSQL is a Haskell to ODBC interface. HaSQL allows Haskell program to run SQL queries against an ODBC compliant database. Queries with parameters are supported. Data is retrieved from the database as a lazy list. (''Development dicontinued.'')
 
   
 
;[http://www.volker-wysk.de/mysql-hs/ MySQL-HS]
 
;[http://www.volker-wysk.de/mysql-hs/ MySQL-HS]

Latest revision as of 11:56, 17 July 2021

Libraries

Current

Takusen
A library to interface to Oracle, Sqlite, and Postgres, with an API based on a left-fold enumerator. Now hosted at code.haskell.org. (Takusen in Hackage)
Database Supported Haskell
DSH 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 computation.
HDBC
HDBC is modeled loosely on Perl's DBI interface, though it has also been influenced by Python's DB-API v2, JDBC in Java, and HSQL in Haskell. Supports SQLite3, PostgreSQL, ODBC (including MySQL). (HDBC in Hackage; an example of its use.)
HaskellDB
HaskellDB is a combinator library for expressing queries and other operations on relational databases in a type safe and declarative way. All the queries and operations are completely expressed within Haskell, no embedded (SQL) commands are needed.
Both the original version from Daan Leijen's HaskellDB and the HaskellDB more up-to-date GitHub version (works with latest GHC versions) are relatively platform-independent.
This close integration makes it possible to do arbitrary computations on the database (like computing the transitive closure). (HaskellDB in Hackage)
Berkeley DB/DB XML binding
See BerkeleyDBXML in Hackage
HSQL
HSQL is a simple library which provides an interface to multiple databases. MySQL, PostgreSQL, ODBC, SQLite and Oracle are currently supported. It is part of HToolkit. (HSQL in Hackage)
mysql-simple, postgresql-simple, sqlite-simple
The *-simple packages provide a mid-level database interface to MySQL, PostgreSQL and SQLite. They each have a similar API but do not attempt to generalize to cover multiple database implementations under a single library. This enables each library to expose database-specific features. These libraries rely on SQL queries embedded as strings but do support automatically converting fields to/from the database to Haskell types.
Hasql
PostgreSQL driver with focus on performance, simplicity and type-safety. The fastest driver around according to the benchmarks. Powers PostgREST a very popular production-grade REST API for PostgreSQL. Comes with a rich ecosystem of libraries.

Non-current

Move these to [#Current] if they are updated.


Discontinued

CoddFish
PURe See a separate Haskell Wiki page on it. It is another type safe and declarative approach to database managament in Haskell. (Development discontinued in 2006)


VooDooM
PURe VooDooM reads VDM-SL specifications and applies transformation rules to the datatypes that are defined in them to obtain a relational representation for these datatypes. The relational representation can be exported as VDM-SL datatypes (inserted back into the original specification) or SQL table definitions (which can be fed to a relational DBMS). (Development discontinued in 2006)
MySQL-HS
MySQL-HS is an interface to the MySQL database.
Note: Development was discontinued on 2004-09-21.

Hackage

Related concepts

Relational algebra

This page contains a list of libraries and tools in a certain category. For a comprehensive list of such pages, see Applications and libraries.