You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@couchdb.apache.org by Victor Stan <vi...@gmail.com> on 2010/08/11 19:43:45 UTC

CouchDB Huh! What is it good for?

So in going through the CouchDB book, and playing a bit more with it,
as well as thinking about the needs of my own projects I came to
realize that perhaps there are some things that I need to better
understand or that couch db may not be able to handle because of it's
inherent nature. I will like it of you folks helped me shed some light
on these discoveries/opinions...

The way I see it now, Couch DB is a really good platform for creating
highly scalable apps that are restricted to the data in the database,
and whatever JavaScript can do in a web browser. This means that Couch
DB can do anything that is implemented in a web browser like HTML,
CSS, SVG, Web3D/webGL(in the future/nightly builds) and whatever
documents exist in the database.

However, what CouchDB can't handle is anything that needs to be
computed, which relies on specific libraries, outside the scope of
CouchDB itself, such as for example, image processing, video/audio
processing/encoding, cryptography(although maybe some js options
exist)

This means that CouchDB can excell at information and data that is
stored exactly in the way that it is meant to be displayed (if it is
not computed on the fly, or text) but can't handle any 'heavy'
computation on binary data. This would limit the extend that CouchApp
can be seen as a true 'application' development platform, to the
extent that it is pretty much limited to dealing with database
introspection, input/output, but no complex computation (that is
beyond map/reduce)...

How much of that is right/wrong?


I appreciate all enlightening information from you!

Victor Stan

Re: CouchDB Huh! What is it good for?

Posted by J Chris Anderson <jc...@apache.org>.
On Aug 11, 2010, at 10:43 AM, Victor Stan wrote:

> So in going through the CouchDB book, and playing a bit more with it,
> as well as thinking about the needs of my own projects I came to
> realize that perhaps there are some things that I need to better
> understand or that couch db may not be able to handle because of it's
> inherent nature. I will like it of you folks helped me shed some light
> on these discoveries/opinions...
> 
> The way I see it now, Couch DB is a really good platform for creating
> highly scalable apps that are restricted to the data in the database,
> and whatever JavaScript can do in a web browser. This means that Couch
> DB can do anything that is implemented in a web browser like HTML,
> CSS, SVG, Web3D/webGL(in the future/nightly builds) and whatever
> documents exist in the database.
> 
> However, what CouchDB can't handle is anything that needs to be
> computed, which relies on specific libraries, outside the scope of
> CouchDB itself, such as for example, image processing, video/audio
> processing/encoding, cryptography(although maybe some js options
> exist)
> 
> This means that CouchDB can excell at information and data that is
> stored exactly in the way that it is meant to be displayed (if it is
> not computed on the fly, or text) but can't handle any 'heavy'
> computation on binary data. This would limit the extend that CouchApp
> can be seen as a true 'application' development platform, to the
> extent that it is pretty much limited to dealing with database
> introspection, input/output, but no complex computation (that is
> beyond map/reduce)...
> 
> How much of that is right/wrong?
> 

That's right as far as it goes. Eg: there's a whole slew of things you can't do with just a standalone CouchDB (from an RSS reader to a image resizing, to certain kinds of view queries which require a client to pipe the output of view A to database B for further processing.)

However, there are a few simple patterns for embedding CouchDB and CouchApps in more heavyweight processing chains. For instance, the easiest way is to follow the _changes feed.

We are doing a webcast on the 25th on exactly this topic:
http://oreillynet.com/pub/e/1708

Cheers,
Chris

> 
> I appreciate all enlightening information from you!
> 
> Victor Stan


Re: CouchDB Huh! What is it good for?

Posted by 7zark7 <7z...@gmail.com>.
Just piggy-backing on what others have said:

Where CouchDB is really great in my experience is for 2 or 3-tiered webapps:

You can replace the data-tier's REST interface, app server, and 
relational DB all with CouchDB, and you pick up a very scalable and 
distributable system to boot.

But in many applications you will need something "in front of" CDB to do 
additional business logic and processing, e.g. Java webapps, RoR, etc.

Where it gets cool/confusing is that you can do a lot in the 
web-tier/client via CouchApps hosted directly within CouchDB.  You can 
solve a surprising number of needs with just CouchApps, but it's not a 
full replacement for other type app servers IMHO.

However I'd try not to confuse CouchDB as merely the "app server for 
CouchApps" - it would still be great as just a DB, even without couchapps!

Hope this helps.



On 8/11/10 10:43 AM, Victor Stan wrote:
> So in going through the CouchDB book, and playing a bit more with it,
> as well as thinking about the needs of my own projects I came to
> realize that perhaps there are some things that I need to better
> understand or that couch db may not be able to handle because of it's
> inherent nature. I will like it of you folks helped me shed some light
> on these discoveries/opinions...
>
> The way I see it now, Couch DB is a really good platform for creating
> highly scalable apps that are restricted to the data in the database,
> and whatever JavaScript can do in a web browser. This means that Couch
> DB can do anything that is implemented in a web browser like HTML,
> CSS, SVG, Web3D/webGL(in the future/nightly builds) and whatever
> documents exist in the database.
>
> However, what CouchDB can't handle is anything that needs to be
> computed, which relies on specific libraries, outside the scope of
> CouchDB itself, such as for example, image processing, video/audio
> processing/encoding, cryptography(although maybe some js options
> exist)
>
> This means that CouchDB can excell at information and data that is
> stored exactly in the way that it is meant to be displayed (if it is
> not computed on the fly, or text) but can't handle any 'heavy'
> computation on binary data. This would limit the extend that CouchApp
> can be seen as a true 'application' development platform, to the
> extent that it is pretty much limited to dealing with database
> introspection, input/output, but no complex computation (that is
> beyond map/reduce)...
>
> How much of that is right/wrong?
>
>
> I appreciate all enlightening information from you!
>
> Victor Stan


Re: CouchDB Huh! What is it good for?

Posted by Noah Slater <ns...@apache.org>.
Also, don't underestimate the native power of JavaScript.

http://code.google.com/p/jspdf/

Hehe.

On 12 Aug 2010, at 15:11, Nitin Borwankar wrote:

> Could not the same "criticism" be leveled at any database - that it cannot do computationally complex tasks?  
> 
> Almost by definition a database is not expected to do those things, but rather to make data storage, indexing and access fast and easy. 
> 
> So I am not sure CouchDB has any unique deficiencies in that regard. 
> 
> Cheers,
> 
> Nitin 
> 
> Sent from my mobile Internet device
> 
> 
> On Aug 11, 2010, at 10:43 AM, Victor Stan <vi...@gmail.com> wrote:
> 
>> So in going through the CouchDB book, and playing a bit more with it,
>> as well as thinking about the needs of my own projects I came to
>> realize that perhaps there are some things that I need to better
>> understand or that couch db may not be able to handle because of it's
>> inherent nature. I will like it of you folks helped me shed some light
>> on these discoveries/opinions...
>> 
>> The way I see it now, Couch DB is a really good platform for creating
>> highly scalable apps that are restricted to the data in the database,
>> and whatever JavaScript can do in a web browser. This means that Couch
>> DB can do anything that is implemented in a web browser like HTML,
>> CSS, SVG, Web3D/webGL(in the future/nightly builds) and whatever
>> documents exist in the database.
>> 
>> However, what CouchDB can't handle is anything that needs to be
>> computed, which relies on specific libraries, outside the scope of
>> CouchDB itself, such as for example, image processing, video/audio
>> processing/encoding, cryptography(although maybe some js options
>> exist)
>> 
>> This means that CouchDB can excell at information and data that is
>> stored exactly in the way that it is meant to be displayed (if it is
>> not computed on the fly, or text) but can't handle any 'heavy'
>> computation on binary data. This would limit the extend that CouchApp
>> can be seen as a true 'application' development platform, to the
>> extent that it is pretty much limited to dealing with database
>> introspection, input/output, but no complex computation (that is
>> beyond map/reduce)...
>> 
>> How much of that is right/wrong?
>> 
>> 
>> I appreciate all enlightening information from you!
>> 
>> Victor Stan


Re: CouchDB Huh! What is it good for?

Posted by Nitin Borwankar <nb...@fastmail.fm>.
Could not the same "criticism" be leveled at any database - that it cannot do computationally complex tasks?  

Almost by definition a database is not expected to do those things, but rather to make data storage, indexing and access fast and easy. 

So I am not sure CouchDB has any unique deficiencies in that regard. 

Cheers,

Nitin 

Sent from my mobile Internet device


On Aug 11, 2010, at 10:43 AM, Victor Stan <vi...@gmail.com> wrote:

> So in going through the CouchDB book, and playing a bit more with it,
> as well as thinking about the needs of my own projects I came to
> realize that perhaps there are some things that I need to better
> understand or that couch db may not be able to handle because of it's
> inherent nature. I will like it of you folks helped me shed some light
> on these discoveries/opinions...
> 
> The way I see it now, Couch DB is a really good platform for creating
> highly scalable apps that are restricted to the data in the database,
> and whatever JavaScript can do in a web browser. This means that Couch
> DB can do anything that is implemented in a web browser like HTML,
> CSS, SVG, Web3D/webGL(in the future/nightly builds) and whatever
> documents exist in the database.
> 
> However, what CouchDB can't handle is anything that needs to be
> computed, which relies on specific libraries, outside the scope of
> CouchDB itself, such as for example, image processing, video/audio
> processing/encoding, cryptography(although maybe some js options
> exist)
> 
> This means that CouchDB can excell at information and data that is
> stored exactly in the way that it is meant to be displayed (if it is
> not computed on the fly, or text) but can't handle any 'heavy'
> computation on binary data. This would limit the extend that CouchApp
> can be seen as a true 'application' development platform, to the
> extent that it is pretty much limited to dealing with database
> introspection, input/output, but no complex computation (that is
> beyond map/reduce)...
> 
> How much of that is right/wrong?
> 
> 
> I appreciate all enlightening information from you!
> 
> Victor Stan

Re: CouchDB Huh! What is it good for?

Posted by Noah Slater <ns...@apache.org>.
On 12 Aug 2010, at 01:07, Eric Carlson wrote:

> The CouchDB book, for all its glory, is heavily weighted toward
> CouchApps. I recommend having a look at
> http://wiki.apache.org/couchdb/Basics, which lists interfaces to CouchDB
> from many many programming languages other than javascript and friends.
> If you do your image or audio/video processing in one of those (or
> other) languages, CouchDB is readily available to be the document-based,
> distributed/replicatable and scalable database that it is. As it says in
> the CouchApp readme, 'CouchApp /is by no means the only way to use
> CouchDB.' /It just happens to be way that is best documented in the
> CouchDB book.

I would like to address this in the next edition.


Re: CouchDB Huh! What is it good for?

Posted by Victor Stan <vi...@gmail.com>.
Thanks you for all your feedback and clarification. It's a fine box
for what it is ;)

Victor Stan



On Wed, Aug 11, 2010 at 8:07 PM, Eric Carlson <er...@ericcarlson.co.uk> wrote:
>  Victor,
>
> The CouchDB book, for all its glory, is heavily weighted toward
> CouchApps. I recommend having a look at
> http://wiki.apache.org/couchdb/Basics, which lists interfaces to CouchDB
> from many many programming languages other than javascript and friends.
> If you do your image or audio/video processing in one of those (or
> other) languages, CouchDB is readily available to be the document-based,
> distributed/replicatable and scalable database that it is. As it says in
> the CouchApp readme, 'CouchApp /is by no means the only way to use
> CouchDB.' /It just happens to be way that is best documented in the
> CouchDB book.
>
> So yes, while I agree that CouchDB may be somewhat limited in what it
> can do as a 'a true "application" development platform' out of the box,
> CouchDB to me is about a lot more than thinking inside the box.
>
> Cheers,
> Eric
>
> On 11/08/10 18:43, Victor Stan wrote:
>> So in going through the CouchDB book, and playing a bit more with it,
>> as well as thinking about the needs of my own projects I came to
>> realize that perhaps there are some things that I need to better
>> understand or that couch db may not be able to handle because of it's
>> inherent nature. I will like it of you folks helped me shed some light
>> on these discoveries/opinions...
>>
>> The way I see it now, Couch DB is a really good platform for creating
>> highly scalable apps that are restricted to the data in the database,
>> and whatever JavaScript can do in a web browser. This means that Couch
>> DB can do anything that is implemented in a web browser like HTML,
>> CSS, SVG, Web3D/webGL(in the future/nightly builds) and whatever
>> documents exist in the database.
>>
>> However, what CouchDB can't handle is anything that needs to be
>> computed, which relies on specific libraries, outside the scope of
>> CouchDB itself, such as for example, image processing, video/audio
>> processing/encoding, cryptography(although maybe some js options
>> exist)
>>
>> This means that CouchDB can excell at information and data that is
>> stored exactly in the way that it is meant to be displayed (if it is
>> not computed on the fly, or text) but can't handle any 'heavy'
>> computation on binary data. This would limit the extend that CouchApp
>> can be seen as a true 'application' development platform, to the
>> extent that it is pretty much limited to dealing with database
>> introspection, input/output, but no complex computation (that is
>> beyond map/reduce)...
>>
>> How much of that is right/wrong?
>>
>>
>> I appreciate all enlightening information from you!
>>
>> Victor Stan
>>
>

Re: CouchDB Huh! What is it good for?

Posted by Eric Carlson <er...@ericcarlson.co.uk>.
 Victor,

The CouchDB book, for all its glory, is heavily weighted toward
CouchApps. I recommend having a look at
http://wiki.apache.org/couchdb/Basics, which lists interfaces to CouchDB
from many many programming languages other than javascript and friends.
If you do your image or audio/video processing in one of those (or
other) languages, CouchDB is readily available to be the document-based,
distributed/replicatable and scalable database that it is. As it says in
the CouchApp readme, 'CouchApp /is by no means the only way to use
CouchDB.' /It just happens to be way that is best documented in the
CouchDB book.

So yes, while I agree that CouchDB may be somewhat limited in what it
can do as a 'a true "application" development platform' out of the box,
CouchDB to me is about a lot more than thinking inside the box.

Cheers,
Eric

On 11/08/10 18:43, Victor Stan wrote:
> So in going through the CouchDB book, and playing a bit more with it,
> as well as thinking about the needs of my own projects I came to
> realize that perhaps there are some things that I need to better
> understand or that couch db may not be able to handle because of it's
> inherent nature. I will like it of you folks helped me shed some light
> on these discoveries/opinions...
>
> The way I see it now, Couch DB is a really good platform for creating
> highly scalable apps that are restricted to the data in the database,
> and whatever JavaScript can do in a web browser. This means that Couch
> DB can do anything that is implemented in a web browser like HTML,
> CSS, SVG, Web3D/webGL(in the future/nightly builds) and whatever
> documents exist in the database.
>
> However, what CouchDB can't handle is anything that needs to be
> computed, which relies on specific libraries, outside the scope of
> CouchDB itself, such as for example, image processing, video/audio
> processing/encoding, cryptography(although maybe some js options
> exist)
>
> This means that CouchDB can excell at information and data that is
> stored exactly in the way that it is meant to be displayed (if it is
> not computed on the fly, or text) but can't handle any 'heavy'
> computation on binary data. This would limit the extend that CouchApp
> can be seen as a true 'application' development platform, to the
> extent that it is pretty much limited to dealing with database
> introspection, input/output, but no complex computation (that is
> beyond map/reduce)...
>
> How much of that is right/wrong?
>
>
> I appreciate all enlightening information from you!
>
> Victor Stan
>