It’s just data

Ascetic Database Architectures

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:

require 'net/http'
require 'json'

# "can't" using http://www.fileformat.info/info/unicode/char/2019/index.htm
cant = {:data=>[?c, ?a, ?n, 0x2019, ?t].pack("U*")}
puts cant.to_json
         
http = Net::HTTP.new("localhost",8888)
puts http.put('/foo/',nil)
puts http.put('/foo/0', cant.to_json)
begin        
  puts http.get('/foo/0')
ensure 
  puts http.delete('/foo') 
end

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.

Posted by Bob Aman at

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.

Posted by roberthahn at

Sam Ruby: Ascetic Database Architectures

[link]...

Excerpt from del.icio.us/tag/couchdb at

Sam Ruby: Ascetic Database Architectures

[link]...

Excerpt from del.icio.us/tag/couchdb at

Sam Ruby plays with CouchDB

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...

Excerpt from Blogging From Berkeley at

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...

Excerpt from Stefan Tilkov's Random Stuff at

Rounded Corners - 144 (Slight of hand)

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...

Excerpt from Labnotes at

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.

Posted by Derek Gottfrid at

This Week's Semantic Web

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...

Excerpt from Nodalities at

System overload

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......

Excerpt from Damien Katz at

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...

Excerpt from Alexey Zakhlestin's blog at

jQuery and CouchDB

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...

Excerpt from Henri Bergius at

jQuery and CouchDB - Henri Bergius

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...

Excerpt from Planet PHP at

jQuery and CouchDB

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...

Excerpt from Planet Maemo at

jQuery and CouchDB

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...

Excerpt from Planet Midgard at

CouchDB

Нашел в своей сотне открытых табов в WebKit (feature branch) (об этом вообще отдельно нужно писать ) заметку о том, как некто Sam Ruby балуется с CouchDB. Ху из CouchDB? Ну в данный момент я как раз и читаю об этом - а пока то, что понял. CouchDB -...

Excerpt from NilColor at

Add your comment