4 ms·
If you like this, check out http://www.happstack.com/docs/crashcourse/AcidState.html http://www.happstack.com/docs/crashcourse/AcidState.html . It allows for ar
by stuffihavemade 14y ago
If you like this, check out http://www.happstack.com/docs/crashcourse/AcidState.html http://www.happstack.com/docs/crashcourse/AcidState.html . It allows for arbitrary Haskell data structures to safely and automatically be marshaled in and out of the data store.
- pestaa 14y agoI really loved AcidState when I first learnt about it. Saves tons of headaches when converting Haskell's superb algebraic data types into dumb SQL types; but it also limits the points of entry into 1 (which means no outside queries/reports which SQL does very well). Another feature it lacked is replication which I believe was on the roadmap so I'm not sure about its current state. If you can live with the fact that your application is the only entry point for your data, definitely look into AcidState.
- ac 14y agoReplication and sharding (horizontal and vertical scaling) in acid-state are in development right now. The developer's page has the road-map as well as his contact details: http://acid-state.seize.it http://acid-state.seize.it. There's another project for distributed storage and data processing in Haskell called Holumbus http://holumbus.fh-wedel.de/trac http://holumbus.fh-wedel.de/trac which powers one of the search engines for Hackage API's.
- ac 14y ago> but it [acid-state] also limits the points of entry into 1 (which means no outside queries/reports which SQL does very well). > [...] > If you can live with the fact that your application is the only entry point for your data, definitely look into AcidState. Sorry for the double post, but I couldn't edit my previous reply anymore. You do have a point about SQL being more amenable to outside queries and reports, especially ad-hoc ones. However, take a look at Data.Acid.Remote (http://hackage.haskell.org/packages/archive/acid-state/0.8.2/doc/html/Data-Acid-Remote.html http://hackage.haskell.org/packages/archive/acid-state/0.8.2...) which allows you to connect to an acid store in your running application remotely: however, at this time you will have to provide your own security solution for that. Also, for ad-hoc queries to your data you can, probably, bolt on a dynamic Haskell evaluator/interpreter to your application: see http://www.haskell.org/haskellwiki/Safely_running_untrusted_Haskell_code http://www.haskell.org/haskellwiki/Safely_running_untrusted_... for a possible solution. That is, of course, not safe (as in Haskell-safe, see the section about exploits), but neither are ad-hoc SQL queries on your live data store.