[ANNOUNCE] Haskell DBMS: Project:M36

Hello, Project:M36 is an open-source, relational algebra engine database management system written in Haskell. When used as a backend with other Haskell frameworks such as yesod, Project:M36 completes a fully-Haskell application stack. https://github.com/agentm/project-m36 Project:M36 adheres strongly to the relational algebra principles laid out by Chris Date in his books and, thus, includes a TutorialD interactive interpreter for learning about the relational algebra. Thus, Project:M36 does not suffer from the typical type-system impedance mismatch or SQL inconsistencies common in ORMs. Of particular interest to Haskellers is the existentially-quantified value type which allows any Haskell data type adhering to a set of basic typeclasses to be used directly as a database value. This feature includes creating database functions to operate directly on these values. In addition, the transaction model is similar to git: instead of continually contending for the "latest committed" state, the DBMS maintains a transaction graph which allows for branching and time travel to past commits. Naturally, through the use of immutable data structures, Project:M36 opens the door for parallelization of every query. Project:M36 includes two native Haskell interfacing libraries: a) a driver for the "persistent" library and b) a client library which allows direct access to the relational algebra DSLs. Thanks for looking at Project:M36! Best regards, Team Project:M36

Sounds very exciting!
ср, 2 дек. 2015 г. в 22:52, A.M.
Hello,
Project:M36 is an open-source, relational algebra engine database management system written in Haskell. When used as a backend with other Haskell frameworks such as yesod, Project:M36 completes a fully-Haskell application stack.
https://github.com/agentm/project-m36
Project:M36 adheres strongly to the relational algebra principles laid out by Chris Date in his books and, thus, includes a TutorialD interactive interpreter for learning about the relational algebra. Thus, Project:M36 does not suffer from the typical type-system impedance mismatch or SQL inconsistencies common in ORMs.
Of particular interest to Haskellers is the existentially-quantified value type which allows any Haskell data type adhering to a set of basic typeclasses to be used directly as a database value. This feature includes creating database functions to operate directly on these values.
In addition, the transaction model is similar to git: instead of continually contending for the "latest committed" state, the DBMS maintains a transaction graph which allows for branching and time travel to past commits.
Naturally, through the use of immutable data structures, Project:M36 opens the door for parallelization of every query.
Project:M36 includes two native Haskell interfacing libraries: a) a driver for the "persistent" library and b) a client library which allows direct access to the relational algebra DSLs.
Thanks for looking at Project:M36!
Best regards, Team Project:M36
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe

Interesting. I wonder how it compares to IxSet (https://hackage.haskell.org/package/ixset) and ACID-State (https://hackage.haskell.org/package/acid-state). Could you comment? On 12/02/2015 12:51 PM, A.M. wrote:
Hello,
Project:M36 is an open-source, relational algebra engine database management system written in Haskell. When used as a backend with other Haskell frameworks such as yesod, Project:M36 completes a fully-Haskell application stack.
https://github.com/agentm/project-m36
Project:M36 adheres strongly to the relational algebra principles laid out by Chris Date in his books and, thus, includes a TutorialD interactive interpreter for learning about the relational algebra. Thus, Project:M36 does not suffer from the typical type-system impedance mismatch or SQL inconsistencies common in ORMs.
Of particular interest to Haskellers is the existentially-quantified value type which allows any Haskell data type adhering to a set of basic typeclasses to be used directly as a database value. This feature includes creating database functions to operate directly on these values.
In addition, the transaction model is similar to git: instead of continually contending for the "latest committed" state, the DBMS maintains a transaction graph which allows for branching and time travel to past commits.
Naturally, through the use of immutable data structures, Project:M36 opens the door for parallelization of every query.
Project:M36 includes two native Haskell interfacing libraries: a) a driver for the "persistent" library and b) a client library which allows direct access to the relational algebra DSLs.
Thanks for looking at Project:M36!
Best regards, Team Project:M36
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe

On 12/02/2015 02:37 PM, Andrey Chudnov wrote:
Interesting. I wonder how it compares to IxSet (https://hackage.haskell.org/package/ixset) and ACID-State (https://hackage.haskell.org/package/acid-state). Could you comment?
Hi Andrey, Project:M36 is a complete relational algebra engine with multiple front-ends, optional filesystem persistence, and transactional semantics. Therefore, it is more akin to SQL DBMSs. More specifically, IxSet does not support relational join, relational group, persistence, aggregations, schema changes, or transactions. Acid-state is effectively a structure graph serializer and therefore has no provisions for schema changes, querying, or any relational algebra operators. Project:M36 can be used as a foundational component of the "Out of the Tarpit" architecture, while the other packages cannot. http://shaffner.us/cs/papers/tarpit.pdf Cheers, M
participants (3)
-
A.M.
-
Andrey Chudnov
-
Geraldus