NoSQL Benchmarks NoSQL use cases NoSQL Videos NoSQL Hybrid Solutions NoSQL Presentations Big Data Hadoop MapReduce Pig Hive Flume Oozie Sqoop HDFS ZooKeeper Cascading Cascalog BigTable Cassandra HBase Hypertable Couchbase CouchDB MongoDB OrientDB RavenDB Jackrabbit Terrastore Amazon DynamoDB Redis Riak Project Voldemort Tokyo Cabinet Kyoto Cabinet memcached Amazon SimpleDB Datomic MemcacheDB M/DB GT.M Amazon Dynamo Dynomite Mnesia Yahoo! PNUTS/Sherpa Neo4j InfoGrid Sones GraphDB InfiniteGraph AllegroGraph MarkLogic Clustrix CouchDB Case Studies MongoDB Case Studies NoSQL at Adobe NoSQL at Facebook NoSQL at Twitter



CouchDB: All content tagged as CouchDB in NoSQL databases and polyglot persistence

CouchDB - a short review

Pretty good summary of what’s good and what you need to pay attention to when using CouchDB:

During one of our last projects we had a small 2-year adventure with Apache CouchDB NoSQL database. Here, I’m going to briefly present its strong points as well as drawbacks. […] CouchDB was chosen based on requirements and assumptions in the project. Especially, easy multi-master replication seemed to be attractive in the context of the project, which was supposed to be a distributed document database without any relations and rather unstructured data. Unfortunately, as we were going deeper into the project those assumptions turned out not to be 100% correct, and sometimes using this technology was a bit painful.

✚ It’s been quite a while since I last read a post about CouchDB. I won’t conclude based on a single article that CouchDB is still doing well, but it was nice to see it mentioned again.

Original title and link: CouchDB - a short review (NoSQL database©myNoSQL)


Integrating D3 with CouchDB

A 4-part series by Mike Bostock describing various integrations paths of D3 and CouchDB:

  1. Part 1: saving a D3 app in CouchDB
  2. Part 2: storing D3 library in CouchDB and storing data in CouchDB
  3. Part 3: accessing CouchDB data from D3
  4. Part 4: data import

Original title and link: Integrating D3 with CouchDB (NoSQL database©myNoSQL)

From IBM to… IBM: The short, but complicated history of CouchDB, Cloudant, and a lot of other companies and projects

Damien Katz created CouchDB after working at IBM on Lotus Notes: CouchDB and Me. CouchDB went the Apache way. Then things got complicated…

On the West coast, Damien Katz and a team of committers created Couchio, later renamed to CouchOne, later merged with Membase to become Couchbase, which finally dropped CouchDB. Damien Katz left Couchbase.

A confusing history with a very complicated genealogy of projects (don’t worry, this goes on) and companies. And this was only West Coast.

East Coast, Cloudant took CouchDB and made it BigCouch. I thought that Cloudant will be the CouchDB company — and in a way it was. Cloudant put BigCouch on the cloud as a service and on GitHub as open source. BigCouch is supposed to get back into Apache CouchDB, but many months later this hasn’t materialized yet.

To complete the circle, today IBM announced signing an agreement to acquire Cloudant — news coverage on GigaOm, BostInno, TechCrunch. Which probably makes sense considering Cloudant’s relationship with SoftLayer and IBM’s $1 billion Platform-as-a-Service Investment, but less so if you consider the IBM and 10genMongoDB collaboration.

Anyways, the future of Apache CouchDB is bright. Yep.

Original title and link: From IBM to… IBM: The short, but complicated history of CouchDB, Cloudant, and a lot of other companies and projects (NoSQL database©myNoSQL)

Storage technologies at HipChat - CouchDB, ElasticSearch, Redis, RDS

As per the list below, HipChat’s storage solution is based on a couple of different solutions:

  • Hosting: AWS EC2 East with 75 Instance currently all Ubuntu 12.04 LTS
  • Database: CouchDB currently for Chat History, transitioning to ElasticSearch. MySQL-RDS for everything else
  • Caching: Redis
  • Search: ElasticSearch
  1. This post made me wonder what led HipChat team to use CouchDB in the first place. I’m tempted to say that it was the master-master replication and the early integration with Lucene.
  2. This is only the 2nd time in quite a while I’m reading an article mentioning CouchDB — after the February “no-releases-but-we’re-still-merging-BigCouch” report for ASF. And according to the story, CouchDB is on the way out.

Original title and link: Storage technologies at HipChat - CouchDB, ElasticSearch, Redis, RDS (NoSQL database©myNoSQL)


MySQL is a great Open Source project. How about open source NoSQL databases?

In a post titled Some myths on Open Source, the way I see it, Anders Karlsson writes about MySQL:

As far as code, adoption and reaching out to create an SQL-based RDBMS that anyone can afford, MySQL / MariaDB has been immensely successful. But as an Open Source project, something being developed together with the community where everyone work on their end with their skills to create a great combined piece of work, MySQL has failed. This is sad, but on the other hand I’m not so sure that it would have as much influence and as wide adoption if the project would have been a “clean” Open Source project.

The article offers a very black-and-white perspective on open source versus commercial code. But that’s not why I’m linking to it.

The above paragraph made me think about how many of the most popular open source NoSQL databases would die without the companies (or people) that created them.

Here’s my list: MongoDB, Riak, Neo4j, Redis, Couchbase, etc. And I could continue for quite a while considering how many there are out there: RavenDB, RethinkDB, Voldemort, Tokyo, Titan.

Actually if you reverse the question, the list would get extremely short: Cassandra, CouchDB (still struggling though), HBase. All these were at some point driven by community. Probably the only special case could be LevelDB.

✚ As a follow up to Anders Karlsson post, Robert Hodges posted The Scale-Out Blog: Why I Love Open Source.

Original title and link: MySQL is a great Open Source project. How about open source NoSQL databases? (NoSQL database©myNoSQL)


Damien Katz leaves Couchbase

In just 129 characters, Damien Katz, creator of CouchDB and CTO of Couchbase, announces he’s leaving Couchbase:

Original title and link: Damien Katz leaves Couchbase (NoSQL database©myNoSQL)

Welcome BigCouch to CouchDB

Wait! BigCouch was actually merged in CouchDB:

What does this mean? Well, right now, the code is merged, but not released. So hold your clicks just a moment! Once the code has been tested, we will include it in one of our regular releases.

Original title and link: Welcome BigCouch to CouchDB (NoSQL database©myNoSQL)


Cloudant's BigCouch and Apache CouchDB... the merge that took a while

The two merged thousands of lines of Erlang to update Apache CouchDB with the modifications Cloudant has made to its core database software. These changes lay the groundwork for preparing the Apache community to improve CouchDB performance at large scale.

I don’t remember when was the first time I’ve heard about BigCouch being contributed to the Apache CouchDB project. I do remember though that, at that time, I actually believed it, as it made sense: Cloudant was still in its early days, seeking validation of its solution, and CouchDB was at its peak.

It’s been so long that I totally forgot about it. But now I’m starting to believe it again. Just as much as a GitHub branch.

Original title and link: Cloudant’s BigCouch and Apache CouchDB… the merge that took a while (NoSQL database©myNoSQL)


Cloudant's phenomenal response time

James Mundy writing about using Cloudant from his app deployed on Microsoft Azure cloud:

When I began implementing Cloudant’s CouchDB based distributed database as a service (daas) to replace our NoSQL Azure Table solution I had some reservations about the time making calls from our Azure Web Roles to their separate data centre would add to response times.

Turns out that really wasn’t anything to worry about at all.

This is very interesting (even if James’s experiment is not really a benchmark). I assume that the way Cloudant pulls this is by offering their service only from top notch connected datacenters. That on top of making sure the service is correctly tuned.

Original title and link: Cloudant’s phenomenal response time (NoSQL database©myNoSQL)


4 Good Things About CouchDB

Will Conant:

CouchDB has four features that really make it stand out:

  1. It has no read locks.
  2. You can back up a database with cp without shutting it down.
  3. Any record (row, document, whatever) can participate in any index any number of times.
  4. Replication is easy and can be bidirectional.

I totally agree with the author. But when using a database, it’s not only about the features that stand out. It’s also about the unique features that fit the project, the missing features, the frequency with which those missing features are addressed. And I could go on for a while.

CouchDB’s bidirectional replication has always been its strongest, differentiating feature. But in my books, users had to fight too much on other parts of the database.

Original title and link: 4 Good Things About CouchDB (NoSQL database©myNoSQL)


Conflict Resolution Using Rev Trees and a Comparison With Vector Clocks

Damien Katz has posted on GitHub a design document for the data structures, called rev trees, used to support conflict management in Couchbase. The doc also includes references to the way conflict resolution is done in CouchDB and also compares rev trees with the vector clocks.

When this happens [nb the edits are in conflict] Couchbase will store both edits, pick an interim winner (the same winner will be selected on all nodes) and “hide” the losing conflict(s) and mark the document as being in conflict so that it can found, using views and other searches, by an external agents who can potentially resolve the conflicts.

Original title and link: Conflict Resolution Using Rev Trees and a Comparison With Vector Clocks (NoSQL database©myNoSQL)


The State of CouchDB - Jan Lehnardt’s Comment

Jan Lehnardt posted a long reply to my comments on the State of CouchDB. I thought many would benefit from promoting it to a real post (with Jan’s permission). Before handing it over to Jan, I want to thank him for taking the time to clarify some of the things. I also want to be clear that I still stand by all my comments. Now, to Jan Lehnardt:

Hey Alex,

you are of course correct and I stand by my post. Let me explain the discrepancy.

The post is a summary of my notes for my opening talk of CouchDB Conf that I ran in Berlin in January. The target audience are the people in the actual audience. There are people who build CouchDB, people who help out with CouchDB, people who use CouchDB and a few people who want to know what’s up with CouchDB. By and large though, these are what I’d call “CouchDB People”.

You interpret the post as if it were for a general public audience and it is entirely my fault making that not more clear in the opening of my post.

To your notes:

  • Confusion: spot on, our bad, mistakes were made, it’s gonna take time to get sorted.

  • passive aggressive style: sorry if that read this way, it was definitely not intended. It was to highlight that there are people who absolutely love what CouchDB does. It isn’t a statement about quantities, which your note about “your numbers” implies. I’m not interested in discussing numbers, but I understand that people have turned away for good reasons. — Consider being an enthusiast, and you go to a conference of like-minded people and the project lead gives a talk and says, “people like you are passionate”. “Fuck yeah I am passionate” you think, or say, and get a good vibe going at the conference. (For CouchDB fans, it was really good times).

  • list of features: good stuff on there, but none of that matters until it ships. This is for people on the inside to see what we are working towards and get them rallied up to help and contribute. You assessment that the “real” features are in the gist is misguided, but I chalk that up to differing opinions, no harm done.

  • *ouch projects: hell yeah I am excited to finally fulfil the original promise of CouchDB from fucking six years ago. The thing to highlight here isn’t that “boo a bunch of things that rhyme with ouch”, but that we are starting to see a production-ready ecosystem of a true open source data sync solution that bloody works. — I agree with you that branding/communication is key here, and that there is a lot to be done.

  • facts matter / “came out on top: nope”: again spot on, but this is where I really wished you had given me shout before posting this. Maybe next time, you should still have my number. Your assessment that we did not come out on top is completely correct, if you look at it from a general public point of view. It’d be odd to deny the facts. But again, this isn’t meant as a post that says “hey everyone, look how great CouchDB is doing”, because a) CouchDB isn’t and b) the intended audience is not everybody. What I did meant to point out that the open source project is aware of the challenges it is facing and is doing its utmost to set everything up so things can be resolved. We spent twelve months in relative obscurity preparing many things that are starting to see the light of day now, but most of it in the future. Only when we delivered on all of that, we can look at the facts again and see how CouchDB is doing. I am confident that it’ll look good, but there is a lot to be done until then. The “coming out on top” is a comment on that the core of the project and its community are strong, and that we are in a position to turn the boat back to former and further glory and not that we are somehow deceived by our own filter bubble and believe that all is well when it isn’t.

Thanks for giving me the opportunity to explain things. I think your assessment of CouchDB in general of the past years has been spot on and your current criticisms are also accurate and well received, it’s just that you got the intended audience for my post wrong, which I didn’t make very clear to the casual observer.

Original title and link: The State of CouchDB - Jan Lehnardt’s Comment (NoSQL database©myNoSQL)