Functional language implementations of Production Grade data stores
There are many datastores written in Erlang, for example Riak, Dynomite, CouchDb, Scalaris, have I missed any?
I know that Java and C/C++ have also been used to write datastores (Cassandra, Hypertable, etc), but have any Datastores been written in any other functional languages such as F#, Scala, Haskell, Clojure, etc? The reason I am asking this (and many other functional programming and Erlang type questions) is to assess the feasibility of functional programming languages for开发者_开发问答 real world projects.
As a side note it has been pointed out to me that I mean the actual implementation language of the datastore itself, and not the client language to access the datastore (ie: via ODBC).
- Data.Tcache is a transactional cache with configurable persistence for Haskell.
- Elephant is a persistent object database for Common Lisp with full transaction semantics.
- CLSQL - a SQL database for Common Lisp interface.
- AllegroCache is a high-performance, dynamic object caching database system for Allegro Common Lisp.
- Spark-Scheme comes with a built-in database and ODBC support.
In one sense you have already answered your own question. The systems you mention, and others from the comments, ARE written in functional langauges and ARE definitely real world projects, so the answer is yes.
FleetDB is schema-free database in Clojure.
Your question puzzles me a little. You ask about datastores written in a variety of languages. Generally, when I program I look for a library or API to get and put data from and to the datastore in my chosen language. What the underlying datastore is written in (if it's written in anything, some datastores are no more than file layouts) I do not care.
And on that basis a little Googling will turn up Haskell-to-ODBC libraries, and I imagine the other languages will have similar facilities. I have no knowledge of these, so won't comment on their suitability for projects.
精彩评论