Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Common Interface for CouchDB and Amazon S3

I just read tons of material on Amazon's S3 and CouchDB. Maybe not enough yet though, so here is my question:

Both systems sound very appealing to me. CouchDB is distributed using the Apache License V2 and with Amazon's S3, you pay per stored megabyte and the traffic you generate. So there is a bit of a difference monetarily.

But from a technical point of view, from what I understood, both systems help you at storing unstructured data of arbitrary sizes (depending on the underlying OS as I understand from CouchDB).

I don't know how easy it would be to come up with a unified interface for both of them, so that you could just change your "datastore provider" as the need arises? Not having to change any of your code.

I also don't know if this is technically easily feasible, haven't looked at their protocols yet in great detail. But it would be great to postpone the provider decision to as late as possible.

Also this could be interesting for integration testing purposes: You could for example test against a local CouchDB instance and run your code against S3 for production use.

To formulate my question from a different angle: Is Amazon's S3 and CouchDB essentially solving the exact same thing or is this insane and I missed the whole point?

Updated Question

After Jim's brilliant answer, let me then rephrase the question to:

"Common Interface for CouchDB and Amazon SimpleDB"

And following the same lines of thinking, do you see a problem with a common interface between CouchDB and SimpleDB then?

like image 581
raoulsson Avatar asked Dec 02 '22 07:12

raoulsson


1 Answers

You're missing the point, just slightly. CouchDB is a database. S3 is a filesystem. They're both relatively unstructured, but with S3 you're storing files under keys while with CouchDB you're storing (arbitrarily-structured) data under keys.

The Amazon Web Services analogue to something like CouchDB would be Amazon SimpleDB.

Something like what you're looking for already exists for Ruby, and it's called Moneta. It even can store stuff on S3, which may be exactly what you want.

like image 169
Jim Puls Avatar answered Dec 18 '22 23:12

Jim Puls