Note: I'm not in Couchbase team.
Couchbase Promotion Time!
Here let me promote Couchbase a bit. Couchbase is a NoSQL database with MapReduce to the core. It stores pools of JSON documents and optional MapReduce schemes, while you can retrieve either the document themselves or query the result of MapReduce computation.
There is no explicit column index in Couchbase, because we don't need it, as MapReduce is, in fact, a generalized concept of indexing. If you appreciate this idea, Couchbase specification would be more righteous than any other database is.
In addition to this, there are many other strengths in Couchbase, but I am not going to go through them right here. If you are interested, go visit their website and play around with it.
Notes Taken During couchfake Development
- Couchbase has many client libraries in different languages, and a significant portion of implementation lies in the library itself. (i.e. The libraries are not just wrappers, they do lots of things.) According to my knowledge they behave a bit differently due to different natures of the languages. IMO, Couchbase needs to document this better. It would be great to let user understand, for example, a) what are covered by the database itself, and what is determined by the client libraries; b) differences of spec among client libraries. Mixing these together may confuse user, as they will see inconsistent information in guides for different languages.
- As the client libraries are non-trivial and different, there is a nontransparent gap between data stored in the database and data we read from client API. I often had to guess the data form based on the test cases when I implemented couchfake, for example, the format of CAS object, the callback pattern of obverse API, the error codes, etc. It will be great if these information are well documented too.
- Many parts of the spec are still unclear to me, but couchfake managed to pass all the test cases, so maybe you guys can spot stupid mistakes in my code and strengthen your test cases?
No comments:
Post a Comment