Anant Jhingran: new architectures are successful when they attack a different problem. Providing an equivalent bit replacement (arguably at a lower cost, as Mike would say) is hardly the dominating argument that would cause people to switch. Quite simply, as my colleague Curt Cotner points out, database engine technology is a drop in the bucket in terms of the investment it takes to be a full player in database these days. You need APIs/drivers for all the application environments (JDBC,ODBC, OLE, ADO, .NET, Ruby, PHP, Perl, etc.). You need integration with the application servers (J2EE, persistence layers, XA protocols). You need system integration (workload management, etc.). You need tooling to save people cost on the admin side. And the list goes on. Ultimately, these AD/Admin issues consume 70% of the IT budget...
Counter example. I’ve been playing with CouchDB. That code is definitely pre-alpha at this point, but this post is not about the code itself, but about the interface it provides.
I was testing it by loading some pre-existing data from my weblog, and being pre-alpha software it died when it encountered some Unicode data that wasn’t expressible as iso-8859-1 expressed in JSON \Uxxxx format. Before I leave the wrong impression, CouchDB is based on ICU and is fully Unicode enabled, but as you know all it takes is just one bug to cause a problem, and on this particular day the pre-alpha had a bug, and I hit it. That bug was promptly fixed, but the interesting part of the story is my test case:
What does this sample do? it creates a database. It puts one object into the database. It attempts to retrieve it back out. Whether that retrieval succeeds or fails, it proceeds to delete the database.
What API’s/drivers to I need to integrate it with Ruby?
HTTP and JSON.
What API’s/drivers would I need to integrate it with Java?
HTTP and JSON.
What API’s/drivers would I need to integrate it with AJAX?
HTTP and JSON.
What API’s/drivers would I need to integrate it with...
oh, you get my point.
Do HTTP and JSON work with existing J2EE servers? You betcha.
What tooling to I need? Um, a browser, perhaps?
So Anant, while I agree with Curt and yourself that adding and evangelizing a new API is generally harder than the implementation itself; the solution may very well be one that doesn’t do that.
I’ve been wanting to ditch the traditional RDBMS for awhile, and this project is giving me hope that I might be able to soon. This is some seriously cool stuff.
I’ve been experimenting with using Berkeley DB hash tables recently (it’s simple; I can wrap my brain around it). I defined a class in Ruby that basically exposed 4 methods (Create, Read, Update, Delete), with transactions wrapped around the destructive methods. The payload for each key was a JSON structure. Yes, this trick requires more tooling to set up than CouchDB, but BDB is rock solid once you know what you’re doing with it, and when the tooling is set up, you could easily mimic much of what’s being done w/ CouchDB. Maybe I should try building it out with a complete HTTP interface.
I’m not saying it’s better than CouchDB in terms of scaling. I am saying that it’s possible to expose a similar interface on top of BDB. If you want to ditch the traditional RDBMS and go with a stable system, this could be one way to do it.
Sam Ruby has some things to say about CouchDB , in particular, how it has the same interface regardless of the type of client. What API’s/drivers to I need to integrate it with Ruby? HTTP and JSON. What API’s/drivers would I need to integrate it...
Sam Ruby on CouchDB : What API’s/drivers to I need to integrate it with Ruby? HTTP and JSON. What API’s/drivers would I need to integrate it with Java? HTTP and JSON. What API’s/drivers would I need to integrate it...
Oh, Auth! The promise of a spec next week. Green with envy. Sam Ruby gets to play with CouchDB, wish I had more time to play with it now, but other priorities prevail. Of course, there are serious limits to get over first. For one, the lack of any...
I am fan of JSON + HTTP as well and when we (nytimes.com) got a chance to shove a piece of middleware between our apps and database - we picked JSON + HTTP and open sourced the result as dbslayer ( [link] ) Why would I want to write, manage, compile, deal with db drivers for a whole host of potential languages?
Eventually, I would like to actually slay the traditional RDBMS system as it exists today. We have used S3 a bunch and I am very interested in that model. I think I could give up some/most of the computation that is done in RDBMS today and settle for a massive transactional data store w/ a REST interface. CouchDB looks like it is heading in a promising direction. Hopefully things like this, buzhug, c-store, will make some progress on ending RDBMS as well know it.
Selected links related to Semantic Web technologies for the week ending 2007-09-10 In the Media 10 Future Web Trends - ReadWriteWeb free listing for CommercialProducts Docs OWL Working Group chartered to produce a W3C Recommendation for an extended...
Erlang is highly concurrent. Damien is not. CouchDb has been getting tons of interest. I can barely keep up with it. I wish I weren’t so busy so I could actually respond to some of the stuff people are......
Some things which happened while I wasn’t blogging
Haiku OS reported on their Google Summer of Code results Makes me think, that I should really-really get some old mac-mini and install Haiku on it. At least, I can program some fancy Jukebox out of it ohloh.net: The World’s Oldest Source Code...
CouchDB is a very interesting evolution in open source data storage: an ad-hoc document database with replication support. I heard the first time about CouchDB when Jan Lehnardt was presenting it in FrOSCon a month ago, and became immediately very...
CouchDB is a very interesting evolution in open source data storage: an ad-hoc document database with replication support. I heard the first time about CouchDB when Jan Lehnardt was presenting it in FrOSCon a month ago, and became immediately very...
CouchDB is a very interesting evolution in open source data storage: an ad-hoc document database with replication support. I heard the first time about CouchDB when Jan Lehnardt was presenting it in FrOSCon a month ago, and became immediately very...
CouchDB is a very interesting evolution in open source data storage: an ad-hoc document database with replication support. I heard the first time about CouchDB when Jan Lehnardt was presenting it in FrOSCon a month ago, and became immediately very...
Нашел в своей сотне открытых табов в WebKit (feature branch) (об этом вообще отдельно нужно писать ) заметку о том, как некто Sam Ruby балуется с CouchDB. Ху из CouchDB? Ну в данный момент я как раз и читаю об этом - а пока то, что понял. CouchDB -...