You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@couchdb.apache.org by "Klamann, Norbert" <no...@klamann-software.de> on 2011/02/09 11:59:21 UTC

Why I look into CouchDB

Hello list,
since some days I dabble with couchdb and want to give you some
background to my potential use cases for which I consider Couch.

In my day job I am a freelancer and work since some 15 years or so
with oracle databases. I think I have knack for relational modelling
and like to to it. Nevertheless the toolchain for web applications is
very complex and so are rollout and deployment problems.

Usecase 1
My wife and I have started a local webservice where we offer a kind of
internet full service agency for the local brick and mortar stores and
companies. To make our own life easier we build the websites with
plone.
Plone offers us slideshows, composite pages (Collage in plone
parlance) and a very clean css-structure and very good html. Plone
sites degrade gracefully when javascript is not available in the
browser. One killer feature is that URLS don't break when we move
documents around in the site. The downside of plone is the very
complex architecture, propagation of content changes (between
development and production) is very hard to do in a granular fashion.
We can live with these shortcomings for the time being, but I am not
to keen to develop db-oriented websites with plone, and I see some
potential in this direction even for our customers.
For this reason I consider django which appeals to my relational
trained brain and is architecturally much cleaner IMO.
Couchdb could offer us an even simpler architecture plus easy
replication. I would need the ability the key benefits of plone and
have no ideas if and how it would be feasable to build them in
Couchdb. So I consider this use case as a remote one, but I would like
to hear ideas.

Usecase 2
To organise our own business we need a kind of very special
CRM-System. We have dozens of information objects with lot of mutual
relations. We have potential customers, we look at their websites and
take notes, we contact them, we have to follow up the contacts, write
bills and configure their websites. We have to track the demands of
our existing customers and so on and so forth. I would like to see an
integrated datastore of all this stuff. Simple replication and offline
usage would be a huge benefit.
In a relational DB this would require dozens of tables and quite
complicated joins. I think it would be doable in django and this was
in fact my first thougt. Neverltheless this seems to be a classical
use case for Couchdb. But there are some obstacles :

I don't know how to build a friendly interface to the data. The
interface should assist with the administrative chores of the
business, the less clicks the better. Listboxes with lookup data
should be pre-populated etc.  Accessibility is not the main concern
here, so a javascript-heavy solution would be acceptable, but I am not
a js-Guru and do not like the language too much. The other day I did
the evently tutorial and I find this stuff very complicated, it
requires a great deal of plumbing.

Maybe Couchdbkit with django is the way to go ? Any thoughts ?

I am well aware that couchdb is moving fast and that I have to invest
time to learn and unlearn things. I would like to hear opinions and
get some pointers for further study.I read the definitive guide one
time (which is certainly not sufficient).

Thanks for listening !
--
Mit freundlichen Grüßen

Norbert Klamann
(Geschäftsführer)


mailto:Norbert.Klamann@klamann-software.de
Tel: (49) +172/2797723
Fax: (49) +2235/9918299

Firma
Klamann Software Limited
Franz-Marc-Str.174
D-50374 Erftstadt
Sitz Erftstadt, AG Köln, HRB 57303
Geschäftsführer: Evelyn & Norbert Klamann
Web : klamann-software.de
Ndl. der :Klamann Software limited, 69 Great Hampton Street,B18 6EW
Birmingham, UK, reg. in England and Wales No. 5690926

Re: Why I look into CouchDB

Posted by Eric Casteleijn <er...@canonical.com>.
Hi Norbert,

I'll go a little into use case 1, having some experience with both 
CouchDB and Plone/Zope:

> Usecase 1
> My wife and I have started a local webservice where we offer a kind of
> internet full service agency for the local brick and mortar stores and
> companies. To make our own life easier we build the websites with
> plone.
> Plone offers us slideshows, composite pages (Collage in plone
> parlance) and a very clean css-structure and very good html. Plone
> sites degrade gracefully when javascript is not available in the
> browser. One killer feature is that URLS don't break when we move
> documents around in the site. The downside of plone is the very
> complex architecture, propagation of content changes (between
> development and production) is very hard to do in a granular fashion.
> We can live with these shortcomings for the time being, but I am not
> to keen to develop db-oriented websites with plone, and I see some
> potential in this direction even for our customers.
> For this reason I consider django which appeals to my relational
> trained brain and is architecturally much cleaner IMO.
> Couchdb could offer us an even simpler architecture plus easy
> replication. I would need the ability the key benefits of plone and
> have no ideas if and how it would be feasable to build them in
> Couchdb. So I consider this use case as a remote one, but I would like
> to hear ideas.

There are some interesting low level technical parallels between the 
ZODB (Zope Object Database) that Plone uses, and CouchDB (they are both 
non-relational file based append only B-tree based data stores that 
require manual compacting,) but they are very different in important 
respects: The ZODB stores a tree of arbitrary python objects, which Zope 
loosely maps into a site's urls. A CouchDB database is usually a flat 
store of JSON documents and views on those documents that can 
index/transform/compute on the data in them.

The ZODB is not usually viewed as an alternative to relational databases 
for most purposes, but CouchDB is, due to its extremely fast views.

What Zope offers on top of the ZODB is a Content Management Framework 
which makes it extremely easy to build sites that customers can maintain 
themselves. The closest CouchDB equivalent would probably be CouchApps, 
which allow you to do some really awesome stuff, but AFAIK there is no 
readymade toolset that helps with building a site including CMS that can 
be used by non-technical users. (Yet! There is absolutely no reason that 
one couldn't be built, in, or on top of CouchDB.) I have not even gone 
into the hundreds of extra tools and features (of very varying quality 
and complexity) that Plone brings to the table.

In other tl/dr words:

If you want to use CouchDB to build sites for your customers that they 
themselves maintain without much technical knowledge, you'll have a lot 
of infrastructure to build that Zope/Plone already provides, which would 
be a sizeable investment for a small company. Having said that, you 
could probably avoid some of the complexity and bloat that have made 
Plone in particular sometimes very painful to use. (IMO)

-- 
eric casteleijn
https://code.launchpad.net/~thisfred
Canonical Ltd.