I’m developing an application in erlang/elixir. I’d like to access Couchbase 2.0 from erlang. I found the erlmc project (https://github.com/JacobVorreuter/erlmc ) which is a binary protocol memcached client. The notes say “you must have a version 1.3 or greater of memcached.”
I understand that Couchbase 2.0 uses memcached binary protocol for accessing data, and I’m looking for the best way to do this from erlang.
The manual talks about a “Couchbase API Port” on 8092, and calls the 11210 (close to the 11211 memcached normal port) as “internal cluster port”.
http://www.couchbase.com/docs/couchbase-manual-2.0/couchbase-network-ports.html
So, the question is this:
Is setting up erlmc to talk to Couchbase 2.0 on port 8092 the correct way to go about it?
Erlmc talks about how it hashes keys to find the right server, which makes me think that it might be too old of a version of the memcached protocol (or is there a built in MOXI on couchbase 2.0 that I should be connecting to? If so which port?)
Which is the port for the erlang views? And presumably the REST interface for views does not support straight key lookups, so I’ll need to write code to access that as well, right?
I’m keen to use a pure erlang solution since NIFs are not concurrent and I’ll have some unknown number of processes wanting to access Couchbase 2.0 at the same time.
The last time I worked with Couch was CouchDB, and so I’m trying to piece things together after the merger of Couch and Membase.
If I’m off on the wrong track, please advise on the best way to access Couchbase 2.0 from erlang in a highly concurrant manner. The memcached protocol should be pretty solid, thus possibly libraries a couple years old should work, right?
Thanks!
The only answer I have so far is:
https://github.com/chitika/cberl
This project is based on the C++ “official” couchbase client.
It seems to have two possible problems:
1) it might be abandoned (last activity was 3 months ago)
2) it uses an NIF, which as I understand it, cannot be accessed concurrently.