I have to say, though, while you were busy inching towards 1.0 I've fallen in love with other production-ready NoSQL db's (namely Mongo and Cassandra). I'm excited to play with Couch, just to play with it, but as someone who is already very satisfied with other NoSQL technologies (when I need them), what would be your pitch for why I should give Couch a serious look?
I've got truly offline replication (as in you can run me on Android and your laptop and keep them synced via the cloud).
Also, none of the other NoSQLs are really set up for schemaless queries like I am. Incremental map-reduce lets you normalize a bunch of different heterogenous document structures in your view, which is more flexible than the key-path indexes Mongo has, and more real-time than Hadoop/Google style map reduce.
I hope someone creates mongodb account and responds to your comment. Nothing better to follow than hot, fierce war between databases. Keep'em coming! May the best prevail!
I think we have different definitions of "production-ready." I find Cassandra to considerably immature having weird bugs that cause it to outright crash and both Cassandra and Mongo have seen issues from many people with data loss. Yes, people are using these systems in production but they're both still young and immature and it is in everyone's best interest to continue to evaluate possible solutions that are coming out.
I've been in production without issue for years in some installations. I probably could have raised the "production-ready" flag in 2008/2009 if I held myself to the same standards as a lot of projects.
In both my last job (latexsearch.com) and my current job (smarkets.com) I've worked with couchdb in fairly large scale installations. I haven't experienced a single bug nor had any couchdb-related performance problems. It's pretty solid.
couch hits a number of sweet spots. Documents can have attachments so you can build a complete application out of html,css, and javascript and have the entire app reside in a couch database. Coupled with P2P replication this make for some interesting possibilities.
couch also inherits a lot from it's choice of implementation language, Erlang, and it's append-only storage design. A high level functional language such as Erlang makes for a small manageable code base. So if you want to extend or enhance it there's not as much to get your arms around as you would have in C++.
On the other if you're a web programmer or could just otherwise care less about db internals, the JSON based RESTful API is all you need and there's a client already out there for just about every language I can think of except maybe Rebol.
I've been poking at it for a couple of years now and one thing I have to say is that it is really truly rock solid. Moreover it has an active and supportive community and at least two companies building businesses around it, Cloudant and couch.io, both of which boast committers to the project.
I also threw my congrats out into blog-space this morning after updating the install on my laptop. Even though MongoDB fits most of my specific application needs better than CouchDB, CouchDB is a great project.
Other than being a great tool for its problem domain, I think part of the reason CouchDB is successful is because Chris Anderson (jchris) is hilarious. Watch his video (http://vimeo.com/5288034)...
When asked about writing CouchDB in C++ he replies "C++ is great- but then you have to use it." Priceless. Anyways congratulations.
Apparently they added Host headers and keepalive, even though it's not a fully conforming HTTP/1.1 client. Makes me wonder how many servers out there accept Host headers from HTTP/1.0 clients.
It's a pure CouchApp served behind Apache httpd for technical reasons. The site proper is run in/from CouchDB, Apache is merely used for virtual hosting and caching. We are transitioning to a pure-CouchDB setup now that CouchDB can do virtual hosts itself.
Great job but the site does a terrible job in telling a new visitor what exactly CouchDB does. I'm still not clear what it does - why are they offering a download before actually communicating the benefits.
CouchDB fills an important niche between embedded databases, like SQLlite and Distributed NoSQL solutions, like riak. Also it's seems to be targeting once popular "Mobile/Offline Databases" sector (it was before 3G and even GPRS took off and when wireless bandwidth was limited and not always on (i.e. dial up).
I think about CouchDB as a modern version of MS-Access and/or Lotus Notes ;-)
It seems very popular, so maybe it's just that I'm not cool enough (not in the target audience/mixing with the right crowd, virally speaking) - but being upfront about what something is and what's great about it, would seem to me to be an important for encouraging adoption. OTOH, I'm noticed many successful projects don't do this, so maybe it isn't important. :/
My history shows 5 pages from the landing page before I found one that said what CouchDB is (the faq), and I'm still not sure what distinguishes it.
* More efficient header commits.
* Use O_APPEND to save lseeks.
* Faster implementation of pread_iolist(). Further improves performance on concurrent reads.
* Added authentication caching
* Faster default view collation.
* Added option to include update_seq in view responses.
I'm not a CouchDB pro by any means but I've been following it from a distance for some time.
The main feature of CouchDB is that it's a fast, scalable database that also allows you to host your apps inside of it, with each "view" being stored in the database itself.
I believe some people use it for large installations but as far as I know that is not the primary focus.
It's a "fast, scalable database" that isn't focused on large installations? What?
While I haven't used couchdb much personally, its most significant characteristics seem to be that it's a document-oriented database (each record can have its own structure) and that it inherits all of Erlang's infrastructure for fault-tolerance.
Well, that's taken long enough. Lotus Notes has everything to do with CouchDB. Damien was a product developer at Iris/Lotus, and in a lot of ways CouchDB is a modern rethink of the best of what Notes/Domino is. When you take away the client and the need to be backwards-compatible to the late Bronze Age (Notes V2 applications from '93 can run unmodified in the current version 8.5 client), you're free to make a lot of improvements, but you also get to keep the good stuff.
We've been using CouchDB in production for at least six months with our web-based content management system and our mobile advertising platform. We also use it to store scores for a couple of mobile games, and to store posts for PicBored, an anonymous image-based forum for Android. I am a bit worried about how well the replication will work with dozens or hundreds of servers, but it's working great with only a handful.
I would use this to replace MySQL or PostgreSQL and I would use it over MongoDB or Cassandra because it is high-quality software, built on top of Erlang (highly concurrent and fault tolerant language, great foundation to start with), and implements really great features.
I personally use MongoDB for small, one-off projects. The good thing about schemaless databases is that you can just start shoving data into them without caring about its structure.
That said, document-based databases suck at complex queries and reporting tasks.
If only it worked. The test suite is giving me a crapload of errors on *.couchone.com. I spent a couple hours getting it installed on my laptop (docs have incorrect dependencies among other things) and the first test just hangs. CouchDB 0.9?
> Erlang is not really that fun or exciting to use
It depends what you use it for. Its brilliant for infrastructure - software that has to live forever and survive no matter what gets thrown at it. It makes a lot of the hard problems go away so you can focus on the fun and exciting stuff.
interesting, I actually like it. The syntax took some getting used to but I find with functional languages I think more and write a lot less and spend a lot less time debugging.
I found Armstrong's book useful also, as well as the tutorial at erlang.org
When you consider all that's in CouchDB, the smallness of the code base is impressive. I think that's a direct consequence of the choice of Erlang.
cool. Might I suggest that after the pace gets saner, you add a script that fires a confirmation email before creating the instance + includes a "how to use the hosted instance" mini explanation.
This might a) free up some instances that are created only because certain folks have this silly habit of retrying a form with new values when it doesn't work the first time, and b) will make it easier to couchdb novices to get started.
Otoh, I might just be speaking for myself and my own silliness.
Last year, when I asked couch.io for an account, they suggested that I go with a competitor cloundant because they were not ready for users. It really impresses me when companies/people show such honesty. I expect that now both couch.io and cloudant will do a good business (as will MongoHQ): as easy as it is to run services on our own servers, it is also great to just let someone else worry about admin (like using Heroku, for example)
Well done guys. But don't forget to credit Bryant Cutler (http://bryantcutler.com/) for the awesome logo.
update: downvoted? why? I really think the guy should be credited. He did a fricking awesome job which CouchDB has based its whole image on. The faux movie poster linked at the top of this story has a giant size version of his logo as the very backdrop. This shit is important. Credit him, says I!
I agree that logo is the bomb. I remember when Damien held the contest and my friend @atduskgreg entered. When I saw the logo that one I knew Greg's didn't stand a chance. Thanks Bryant!
I have to say, though, while you were busy inching towards 1.0 I've fallen in love with other production-ready NoSQL db's (namely Mongo and Cassandra). I'm excited to play with Couch, just to play with it, but as someone who is already very satisfied with other NoSQL technologies (when I need them), what would be your pitch for why I should give Couch a serious look?