Confused on how to use CouchDB on Android
I want to get CouchDB running as the backend for my mobile app, replacing SQlite.
I have been incredibly confused as a newcomer to this technology because, in addition to all of similar sounding products released by Couchbase last year(Couchbase, Couchbase Single Server, Membase, Couchbase Mobile), they now seem to be dropping/combining all of them into a single project, Couchbase Server. But, that is actually Membase, not CouchDB. To top that off, the creator of CouchDB is no longer going to be working on CouchDB. Yet, there seems to be a very active community around CouchDB. Here is what I know:
I understand that Couchbase, the company, no longer provides a distribution of CouchDB.
I understand that Couchbase Server, the new focus of the Couchbase company, is really not CouchDB at all and it is not compatible with CouchDB. It does not implement the HTTP api that CouchDB uses, it's using a binary protocol that evolved from Membase.
All of the recent information on CouchDB Mobile seems to point to Couchbase Mobile.
My questions boil down to:
Is it still possible to use CouchDB on an Android device? Specifically CouchDB, not Couchbase Server, because the APIs are not compatible
If it is still possible, how do I do it? Where is the source code? Any sample apps?
Sorry if my question gets confusing. To be honest, I am having a hard time wading through the vast collection of seemingly contradictory posts online. I just want to run CouchDB on Android! :)
as a co-founder of Couchbase I should be able to give you a clearer understanding. I'll take your questions in turn.
1) Correct. Couchbase Server is not CouchDB. It sacrifices some of the neat things CouchDB does (HTTP interface, master/master replication) so it can do other neat things (sub-millisecond latency, gigantic clusters.) In the long long run, we'd like to get back high-performance versions of the features we had to drop. For now, we are building the fastest most reliable NoSQL database (yay) but it's not answering the same use cases as CouchDB.
2) Maybe I just answered that? More info about Couchbase Server is here: http://www.couchbase.com/couchbase-server/overview
3) Couchbase continues to invest in mobile technology. We have well tested implementations available for Android and iOS. These are based on Apache CouchDB, so they will have the feature set you are looking for. Visit here to download them: http://www.couchbase.com/wiki/display/couchbase/Couchbase+Mobile+Syncpoint (see links for iOS and Android on that page)
Going forward, we are focussing on light-weight alternatives to actually running CouchDB-based code on the device. To get CouchDB to run on the device requires the Erlang virtual machine. While it is lightweight and respectful of battery life (for a VM), it is still a VM. So we are building more lightweight sync and storage engines for mobile. TouchDB for iOS can sync with Apache CouchDB. We also have a similar project for Android. If I were starting a new project, I'd take a look at these.
The Android port of TouchDB, https://github.com/couchbaselabs/TouchDB-Android, might be interesting:
"TouchDB is a lightweight CouchDB-compatible database engine suitable for embedding into mobile or desktop apps."
It's not a drop-in replacement for CouchDB but promises an API that's basically the same and perhaps mostly importantly for you it "does support replication to and from CouchDB".