You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@couchdb.apache.org by Matthew Gamble <mg...@mgamble.ca> on 2009/12/06 23:01:24 UTC

Design Question

I'm been trying to wrap my head around how to layout my application in
couchDB for the past few days and I can't seem to figure out which is the
best way of doing it.  I'm sorry if a question like this has been asked
before, but I couldn't find anything in the archives that was quite the same
as what I'm trying to do.

In a nutshell, I'd like to store addresses (VCard like data) for users.  My
first thought was a single document per-user with each VCard as an
attachment but that made it very hard to search the data as it required the
client side to download and parse everything for a search.

My next idea was a document for each VCard and a key (user_id, for example)
to denote which user the card belongs to.  This is quick to access with a
view, and might be the right way to do this?

Or is it best to put each user as their own database and store the address
books / VCards as documents?

To give you an idea of the scale, I'm looking at 100-200k unique users with
(up to) 5000 VCards each.  I really like the idea of using CouchDB to store
the address book / vcard data as it lets me only enter the data that's
actual used.

Thanks in advance for any advice - like I said, I'm still trying to wrap my
head around the way CouchDB works.

Re: Design Question

Posted by Roger Binns <ro...@rogerbinns.com>.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Matthew Gamble wrote:
> I'm sorry if a question like this has been asked
> before, but I couldn't find anything in the archives that was quite the same
> as what I'm trying to do.

There indeed was a similar discussion.  One of the final conclusions was
that it would be best to have each user plus their data stored in a separate
DB.  The reason for this is that it makes the security rules easier to
define and also makes more sense for replication.  (Presumably you want to
eventually allow the users to run a personal CouchDB with the same database.)

> attachment but that made it very hard to search the data as it required the

May be helpful http://wiki.apache.org/couchdb/Full_text_search

> Or is it best to put each user as their own database and store the address
> books / VCards as documents?

That would be most natural.  In theory you can write an update handler that
parses the vCard into fields and makes them keys of the doc.  If you do this
then the full text search should work really easily.

Roger
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iEYEARECAAYFAkscL2oACgkQmOOfHg372QSAwACdGdOXBMw9W7a5jLAeXPHGGz27
Za4An3KylQT6Z788a09Nr1MOH2jiXeFU
=AJpY
-----END PGP SIGNATURE-----