Difference between revisions of "Web/Databases and Persistence"

From HaskellWiki
< Web
Jump to navigation Jump to search
m (Removed gratuitious bits)
(12 intermediate revisions by 9 users not shown)
Line 1: Line 1:
  +
[[Category:Web|*]]
  +
{{Web infobox}}
  +
 
Below is a list of databases that have been used or designed for web development. See also: [[Libraries_and_tools/Database_interfaces|Database Interfaces]]
 
Below is a list of databases that have been used or designed for web development. See also: [[Libraries_and_tools/Database_interfaces|Database Interfaces]]
   
== HDBC ==
+
== acid-state ==
   
  +
acid-state is the successor of the now deprecated happstack-state and is completely free from any dependencies on happstack.
HDBC (Haskell Database Connectivity) provides an abstraction layer between Haskell programs and SQL relational databases. This lets you write database code once, in Haskell, and have it work with any number of backend SQL databases (MySQL, Oracle, PostgreSQL, ODBC-compliant databases, etc.)
 
   
  +
{| class="wikitable"
* HDBC provides an abstraction layer between Haskell programs and SQL relational databases. This lets you write database code once, in Haskell, and have it work with any number of backend SQL databases (MySQL, Oracle, PostgreSQL, ODBC-compliant databases, etc.)
 
  +
! License
* 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.
 
  +
| Public Domain
* HDBC is a from-scratch effort. It is not a reimplementation of HSQL, though its purpose is the same.
 
  +
|-
  +
! Author:
  +
| David Himmelstrup
  +
|-
  +
! Home page:
  +
| http://acid-state.seize.it/
  +
|-
  +
! Documentation:
  +
| [http://mirror.seize.it/acid-state/examples/ Stand-alone examples], [http://happstack.com/docs/crashcourse/AcidState.html usage with Happstack] and [https://github.com/mightybyte/snaplet-acid-state/blob/master/examples/Site.hs usage with Snap].
  +
|-
  +
! Package & repositories
  +
| [http://hackage.haskell.org/package/acid-state Hackage] - [http://mirror.seize.it/acid-state/ Darcs]
  +
|}
   
  +
== happstack-state ==
'''License:''' LGPL
 
   
  +
happstack-state, also referred to as MACID, is a native Haskell persistent data store layer. It stores Haskell datatypes and queries are written in Haskell. Although it is part of the [[Happstack]] suite, it does not depend on happstack-server and can easily be used with other web frameworks.
'''Author:''' John Goerzen
 
   
  +
In buzzword terms, happstack-state is a NoSQL, RAM-cloud which can store arbitrary Haskell datatypes.
'''Maintainer:''' John Goerzen <jgoerzen@complete.org>
 
   
'''Home page:''' http://github.com/jgoerzen/hdbc/wiki
 
   
  +
{| class="wikitable"
'''Documentation:''' http://hackage.haskell.org/packages/archive/HDBC/latest/doc/html/Database-HDBC.html
 
  +
! License
  +
| BSD3
  +
|-
  +
! Author:
  +
| Happstack team, HAppS LLC
  +
|-
  +
! Maintainer:
  +
| Happstack team <happs@googlegroups.com>
  +
|-
  +
! Home page:
  +
| http://happstack.com/index.html
  +
|-
  +
! Documentation:
  +
| http://happstack.com/docs
  +
|-
  +
! Package & repositories
  +
| [http://hackage.haskell.org/package/happstack Hackage] - [http://patch-tag.com/r/mae/happstack/pullrepo Darcs]
  +
|}
   
== Persistent ==
+
== HDBC ==
   
  +
HDBC (Haskell Database Connectivity) provides an abstraction layer between Haskell programs and SQL relational databases. This lets you write database code once, in Haskell, and have it work with any number of backend SQL databases (MySQL, Oracle, PostgreSQL, ODBC-compliant databases, etc.)
Persistent is a high-level, non-relational, type-safe persistence layer for Haskell. Its design allows it to be used on both SQL and non-SQL backends. Heavy usage of type families allows strong type guarantees, while usage of template haskell removes the need for boilerplate coding.
 
   
  +
* HDBC provides an abstraction layer between Haskell programs and SQL relational databases. This lets you write database code once, in Haskell, and have it work with any number of backend SQL databases (MySQL, Oracle, PostgreSQL, ODBC-compliant databases, etc.)
'''License:''' BSD3
 
  +
* 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.
  +
* HDBC is a from-scratch effort. It is not a reimplementation of HSQL, though its purpose is the same.
   
  +
{| class="wikitable"
'''Author:''' Michael Snoyman <michael@snoyman.com>
 
  +
! License:
  +
| LGPL
  +
|-
  +
! Author:
  +
| John Goerzen
  +
|-
  +
! Maintainer:
  +
| John Goerzen <jgoerzen@complete.org>
  +
|-
  +
! Home page:
  +
| http://github.com/hdbc/hdbc/wiki
  +
|-
  +
! Documentation:
  +
| [http://hackage.haskell.org/packages/archive/HDBC/latest/doc/html/Database-HDBC.html Haddock]
  +
|}
   
  +
== Persistent ==
'''Maintainer:''' Michael Snoyman <michael@snoyman.com>
 
   
  +
Persistent is a high-level, non-relational, type-safe persistence layer for Haskell. Its design allows it to be used on both SQL and non-SQL backends. Heavy usage of type families allows strong type guarantees, while usage of template haskell removes the need for boilerplate coding.
'''Documentation:''' http://docs.yesodweb.com/persistent/
 
   
  +
{| class="wikitable"
'''Packages & repositories'''
 
  +
! License:
 
  +
| BSD3
* Hackage: http://hackage.haskell.org/package/persistent
 
  +
|-
* Github: http://github.com/snoyberg/persistent
 
  +
! Author:
  +
| Michael Snoyman <michael@snoyman.com>
  +
|-
  +
! Maintainer:
  +
| Michael Snoyman <michael@snoyman.com>
  +
|-
  +
! Documentation:
  +
| http://www.yesodweb.com/book/persistent
  +
|-
  +
! Packages & repositories
  +
| [http://hackage.haskell.org/package/persistent Hackage] - [https://github.com/yesodweb/persistent Github]
  +
|}
   
 
== Takusen ==
 
== Takusen ==
Line 44: Line 106:
 
Currently we fully support ODBC, Oracle, Sqlite, and PostgreSQL.
 
Currently we fully support ODBC, Oracle, Sqlite, and PostgreSQL.
   
  +
{| class="wikitable"
'''License:''' BSD3
 
  +
! License:
 
  +
| BSD3
'''Author:''' Alistair Bayley, Oleg Kiselyov
 
  +
|-
  +
! Author:
  +
| Alistair Bayley, Oleg Kiselyov
  +
|-
  +
! Maintainer:
  +
| alistair@abayley.org, oleg@pobox.com
  +
|-
  +
! Announcement:
  +
| [http://www.haskell.org/pipermail/haskell-cafe/2010-July/081224.html Haskell-Cafe]
  +
|-
  +
! Packages & repositories
  +
| [http://hackage.haskell.org/package/Takusen Hackage] - [http://code.haskell.org/takusen Darcs]
  +
|}
   
'''Maintainer:''' alistair@abayley.org, oleg@pobox.com
 
   
  +
== Hasql ==
'''Announcement:''' http://www.haskell.org/pipermail/haskell-cafe/2010-July/081224.html
 
   
  +
A very efficient PostgreSQL driver and a flexible mapping API.
'''Packages & repositories'''
 
   
  +
{| class="wikitable"
* Hackage: http://hackage.haskell.org/package/persistent
 
  +
! License:
* Darcs: http://code.haskell.org/takusen
 
  +
| MIT
  +
|-
  +
! Author:
  +
| Nikita Volkov
  +
|-
  +
! Announcement:
  +
| [https://www.reddit.com/r/haskell/comments/2lwx9y/hasql_is_up_to_2x_and_7x_faster_than/?ref=share&ref_source=link Reddit]
  +
|-
  +
! Packages & repositories
  +
| [http://hackage.haskell.org/package/hasql Hackage] - [https://github.com/nikita-volkov/hasql GitHub]
  +
|}

Revision as of 17:43, 8 February 2016

Haskell Web Development

Software:
Servers - Libraries - Frameworks
Deploy - Cloud
Interfaces to frameworks
Databases and Persistence
Testing and Verification
Content Management

Community & Research:
Forums and Discussion
Literature (research, talks and blogs)
Existing Haskell web applications
Ongoing projects and ideas

Below is a list of databases that have been used or designed for web development. See also: Database Interfaces

acid-state

acid-state is the successor of the now deprecated happstack-state and is completely free from any dependencies on happstack.

License Public Domain
Author: David Himmelstrup
Home page: http://acid-state.seize.it/
Documentation: Stand-alone examples, usage with Happstack and usage with Snap.
Package & repositories Hackage - Darcs

happstack-state

happstack-state, also referred to as MACID, is a native Haskell persistent data store layer. It stores Haskell datatypes and queries are written in Haskell. Although it is part of the Happstack suite, it does not depend on happstack-server and can easily be used with other web frameworks.

In buzzword terms, happstack-state is a NoSQL, RAM-cloud which can store arbitrary Haskell datatypes.


License BSD3
Author: Happstack team, HAppS LLC
Maintainer: Happstack team <happs@googlegroups.com>
Home page: http://happstack.com/index.html
Documentation: http://happstack.com/docs
Package & repositories Hackage - Darcs

HDBC

HDBC (Haskell Database Connectivity) provides an abstraction layer between Haskell programs and SQL relational databases. This lets you write database code once, in Haskell, and have it work with any number of backend SQL databases (MySQL, Oracle, PostgreSQL, ODBC-compliant databases, etc.)

  • HDBC provides an abstraction layer between Haskell programs and SQL relational databases. This lets you write database code once, in Haskell, and have it work with any number of backend SQL databases (MySQL, Oracle, PostgreSQL, ODBC-compliant databases, etc.)
  • 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.
  • HDBC is a from-scratch effort. It is not a reimplementation of HSQL, though its purpose is the same.
License: LGPL
Author: John Goerzen
Maintainer: John Goerzen <jgoerzen@complete.org>
Home page: http://github.com/hdbc/hdbc/wiki
Documentation: Haddock

Persistent

Persistent is a high-level, non-relational, type-safe persistence layer for Haskell. Its design allows it to be used on both SQL and non-SQL backends. Heavy usage of type families allows strong type guarantees, while usage of template haskell removes the need for boilerplate coding.

License: BSD3
Author: Michael Snoyman <michael@snoyman.com>
Maintainer: Michael Snoyman <michael@snoyman.com>
Documentation: http://www.yesodweb.com/book/persistent
Packages & repositories Hackage - Github

Takusen

Takusen is a DBMS access library. Like HSQL and HDBC, we support arbitrary SQL statements (currently strings, extensible to anything that can be converted to a string).

Takusen's unique selling point is safety and efficiency. We statically ensure all acquired database resources - such as cursors, connections, and statement handles - are released, exactly once, at predictable times. Takusen can avoid loading the whole result set in memory, and so can handle queries returning millions of rows in constant space. Takusen also supports automatic marshalling and unmarshalling of results and query parameters. These benefits come from the design of query result processing around a left-fold enumerator.

Currently we fully support ODBC, Oracle, Sqlite, and PostgreSQL.

License: BSD3
Author: Alistair Bayley, Oleg Kiselyov
Maintainer: alistair@abayley.org, oleg@pobox.com
Announcement: Haskell-Cafe
Packages & repositories Hackage - Darcs


Hasql

A very efficient PostgreSQL driver and a flexible mapping API.

License: MIT
Author: Nikita Volkov
Announcement: Reddit
Packages & repositories Hackage - GitHub