This thread is somewhat quixotic for the CouchDB list.

Having said that, I'm doing Scala implementation, although with some significant architectural differences from CouchDB:

1. Using binary data rather than JSON - hence no attachments, and a clear separation of data and metadata e.g. no injection;

2. A more explicit layering/modularity i.e. a toolkit rather than a product;

3. A focus on mechanism rather than policy, allowing CouchDB style replication as well as Bayou/PRACTI models using different consistency/ coupling/deployment tradeoffs such as monotonic writes, local ACID;

4. No specific app-server mechanisms - use existing JVM technologies and frameworks for that e.g. purely a database;

5. Pluggable indexing including map/reduce, obviously using any language available on the JVM e.g. clojure/java/javascript/scala/jruby/ groovy etc;

6. Clustering using Terracotta.

The benefit of Scala is primarily that it is on the JVM, so you can use the existing infrastructure, both in development and for deployment. Users get all of the management etc tools available for the JVM environments, and it certainly eases the political issues of adoption.

IMO you can also do this in Clojure - both Scala and Clojure are focussed on concurrency and well suited to implementing systems in this space. In the end though, after starting in Clojure, Scala's maturity was a deciding factor.

Antony Blakey
-------------
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

He who would make his own liberty secure, must guard even his enemy from repression.
  -- Thomas Paine


Reply via email to