incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Burobjorn <burobj...@gmail.com>
Subject Re: Seeking advice on using couchdb for rewritting a project.
Date Wed, 12 Nov 2008 09:58:30 GMT
Hi Jan,

Thanks for the quick and friendly response. We're going to test and see
how we can use couchdb. I'll probably be asking a lot more questions
than ;)

Just one minor comment: the phpillow library is AFAIK not mentioned on
the couchdb wiki. Perhaps its a good idea to mentioned it on this page:

http://wiki.apache.org/couchdb/Getting_started_with_PHP

All the best,

grtz
BjornW

> Hi Bjorn!
> 
> On Nov 11, 2008, at 19:02, Burobjorn wrote:
>> My name is Bjorn Wijers and I recently started to play with couchdb.
>> It's a very interesting project and I would like to use it to rewrite an
>> older project called Simuze[1], but I wonder if couchdb would be the
>> right tool for the job. Perhaps some of you can help me out in
>> understanding the pro's and con's of using couchdb for this?
>>
>> Simuze is musicplatform (website) for musicians and music fans by
>> non-profit Stichting (=Foundation) Open Media. Artists can upload their
>> music under a Creative Commons license of their choosing and music
>> lovers can download these songs from the site. It was built quite some
>> time ago in PHP and MySQL.
> 
> Personally, I think this is a cool app :)
> 
> 
>> The basics in this application are:
>>
>> - users
>>
>> - profiles (might be multiple per user, since a user may have more than
>> one artist persona)
>>
>> - media files (images and audio for now)
>>
>> - media collections (such as a playlist or album)
>>
>> - ratings (every media file or collection)
>>
>> - tags (everything)
>>
>> Our objective is to rewrite Simuze in such a way that we can distribute
>> it as an 'easy' to install webapplication under a free/open-source
>> license (Affero GPL). We would like to connect all the different Simuze
>> installs (replication would be very helpful for this, I guess) and
>> create a distributed free (as in CC licensed and PD) music web. Think of
>> it as a non-suck MySpace built by musicians ;)
> 
> So far, this sounds like a good use-case for CouchDB.
> 
> 
>> Some questions that I have are:
>>
>> 1) Would this type of application be suitable for couchdb or is this
>> better suited by using a RDBMS?
> 
> I don't think an RDBMS has an advantage over CouchDB considering the
> data. Things might look a lot different from what you are used to, but it
> will all come together and be easier in the end.
> 
> 
>> 2) Could we use the attachment feature for adding media files (FLAC or
>> WAV or AIFF files roughly 50 MB per file) to couchdb? Or is this not
>> advisable given the size of the files? The reasoning behind this is that
>> by using replication we can easily backup the whole system or setup an
>> another node of it. Therefor having everything in one place seems like a
>> good idea?
> 
> There is no limitation (ok, currently it is 4GB, but that is adjustable) on
> how big a a document attachment can be. Using replication for backup
> is a good idea.
> 
> 
>> 3) In a RDBMS such as MySQL I can use foreign keys to preserve data
>> integrity. In other words I can delete the user and due to the foreign
>> keys 'automatically' remove its profile(s), uploaded media etc. How
>> would one solve this with couchdb?
> 
> With CouchDB you can only make "loose references" and CouchDB does
> not do cascading deletes. But a two-request process helps you there:
> 
> 1) Get all docs for a certain property
> 2) Send a bulk delete request with the previous result
> 
> Yes, this is not as convenient and there's a potential race condition, but
> this is easily solvable.
> 
> 
>> Thanks for reading this rather lengthy email. Looking forward to the
>> thoughts and comments on this.
> 
> I'd say: Go for it.
> 
> Feel free to send any follow-up question.
> 
> Regarding PHP libraries to use, I'd recommend
> http://kore-nordmann.de/projects/phpillow/index.html
> 
> Cheers
> Jan
> -- 
> 

Mime
View raw message