incubator-couchdb-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Mark Hahn <m...@hahnca.com>
Subject Re: Google Summer of Code topics
Date Tue, 26 Mar 2013 16:23:49 GMT
The code you provided only runs in the client, not in an update handler,
right?

The concept of a DB supporting partial update is to only send the fields
that need to change to the DB instead of the entire doc. There is a real
efficiency advantage to send a few fields over the wire instead of entire
docs.

There is also an advantage in having different apps (or parts of one app)
only know about some parts of the doc and never having to know the entire
doc.

One example: I have three different node apps that modify a single progress
doc in a single dB based on their work. They are only passed the doc ID and
their job assignment when they start and then they mark their progress in
the doc as they go.



On Tue, Mar 26, 2013 at 7:19 AM, Jeff Charette <iomatix@yahoo.com> wrote:

> Now I'm really confused.  Doesn't you approach have the same drawback for
> existing docs?  You have to have the doc id to update the doc don't you?
>
> For my approach to work, the form has to have the doc id in it yes or for
> new docs I create a new doc based off the type, but that's another exercise.
>
> I really like your approach for complex data types I just suspect that
> some may only have the need for key value, either way good stuff.
>
> Jeff Charette | Principal
> We Are Charette
> web / identity / packaging
>
> m  415.298.2707
> w  wearecharette.com
> e   jeffrey@wearecharette.com
>
> On Mar 25, 2013, at 3:54 PM, Mark Hahn <mark@hahnca.com> wrote:
>
> >> You simply post to '_update/edit/docid' with form content.
> >
> > I don't understand how this works.  Doesn't it require already having the
> > doc and therefore requires a read and an update?
> >
> >
> > On Mon, Mar 25, 2013 at 10:47 AM, Pearce, Martyn <Martyn.Pearce@gs.com
> >wrote:
> >
> >> thank you
> >>
> >> -----Original Message-----
> >> From: Jeff Charette [mailto:iomatix@yahoo.com]
> >> Sent: Monday, March 25, 2013 5:44 PM
> >> To: user@couchdb.apache.org
> >> Cc: 'CouchDB Developers'
> >> Subject: Re: Google Summer of Code topics
> >>
> >> I do something similar.  Here it is in case anyone wants to look at it
> >> from a slightly different code perspective.
> >>
> >>   /* underscore and underscore string are not needed, just my preference
> >> */
> >>    var _ = require('underscore')._,
> >>     _s = require('underscore-string'),
> >>     globalKeys = ['_id', '_rev', 'template', 'type', 'permissions'];
> >>
> >>    exports.edit = function (doc, req) {
> >>
> >>        /* add values from request */
> >>        _.each(req.form, function(val, key) {
> >>                if (globalKeys.indexOf(key) === -1) {
> >>                        try {
> >>                        doc[key].value = JSON.parse(req.form[key]);
> >>                    }
> >>                        catch (e) {
> >>                        if (typeof doc[key] !== 'undefined') {
> >>                                        doc[key].value = req.form[key];
> >>                                }
> >>                    }
> >>                }
> >>        });
> >>
> >>    return [doc, {
> >>        code: 200,
> >>        headers: {
> >>          'Content-Type': 'application/json'
> >>         },
> >>        body: JSON.stringify('render to template or return success')
> >>    }];
> >>    };
> >>
> >> You simply post to '_update/edit/docid' with form content.
> >>
> >> Jeff Charette | Principal
> >> We Are Charette
> >> web / identity / packaging
> >>
> >> m  415.298.2707
> >> w  wearecharette.com
> >> e   jeffrey@wearecharette.com
> >>
> >> On Mar 25, 2013, at 12:46 PM, "Pearce, Martyn" <Martyn.Pearce@gs.com>
> >> wrote:
> >>
> >>> thanks
> >>>
> >>> -----Original Message-----
> >>> From: Mark Hahn [mailto:mark@hahnca.com]
> >>> Sent: Monday, March 25, 2013 4:45 PM
> >>> To: user
> >>> Cc: CouchDB Developers
> >>> Subject: Re: Google Summer of Code topics
> >>>
> >>> Here is the code in a gist ..
> https://gist.github.com/mark-hahn/5238514
> >>>
> >>>
> >>> On Mon, Mar 25, 2013 at 9:00 AM, Pearce, Martyn <Martyn.Pearce@gs.com
> >>> wrote:
> >>>
> >>>> Posting it here would be a great start.  That would imply permission
> for
> >>>> interested parties to post it on an examples page, I think.
> >>>>
> >>>> Thanks,
> >>>>
> >>>> -----Original Message-----
> >>>> From: Mark Hahn [mailto:mark@hahnca.com]
> >>>> Sent: Monday, March 25, 2013 3:59 PM
> >>>> To: user
> >>>> Cc: CouchDB Developers
> >>>> Subject: Re: Google Summer of Code topics
> >>>>
> >>>> How would you suggest I publish it?  I don't have a blog.  I guess I
> >> could
> >>>> post it here for now.  It's not very big.
> >>>>
> >>>>
> >>>> On Mon, Mar 25, 2013 at 2:19 AM, Pearce, Martyn <Martyn.Pearce@gs.com
> >>>>> wrote:
> >>>>
> >>>>> It would be a great published example/howto if you were willing
to
> >>>> publish
> >>>>> your code for that.
> >>>>>
> >>>>> -----Original Message-----
> >>>>> From: Mark Hahn [mailto:mark@hahnca.com]
> >>>>> Sent: Friday, March 22, 2013 6:14 PM
> >>>>> To: user
> >>>>> Cc: CouchDB Developers
> >>>>> Subject: Re: Google Summer of Code topics
> >>>>>
> >>>>>> Implement partial reads and updates of documents,
> >>>>>
> >>>>> In case anyone didn't know, you can do partial updates right now
with
> >> an
> >>>>> update handler.  I have been using one for some time that allows
the
> >> app
> >>>> to
> >>>>> modify any part of a doc with a single http request.  It even allows
> >> one
> >>>> to
> >>>>> modify an attribute nested inside objects.  I've ended up using
only
> >> this
> >>>>> for all updates.
> >>>>>
> >>>>>
> >>>>> On Fri, Mar 22, 2013 at 7:20 AM, Jeff Charette <iomatix@yahoo.com>
> >>>> wrote:
> >>>>>
> >>>>>> My top 3 for couchapps:
> >>>>>>
> >>>>>> 1. more robust _rewrites module to do things like, possibly
> introduce
> >>>>>> regex matching
> >>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>
> http://stackoverflow.com/questions/14839422/rewrite-without-file-extension-in-couchdb
> >>>>>> 2. doc level security
> >>>>>> 3. with secure_rewrites true, _attachments handler moved to
design
> doc
> >>>>>> level /db/_design/doc/_attachments - like an update handler
> >>>>>>       - database level _users, so /db/_design/doc/_users - behaves
> >>>> just
> >>>>>> like /_users
> >>>>>>
> >>>>>> Sorry if any of this is pathetically naive!
> >>>>>> Jeff Charette | Principal
> >>>>>> We Are Charette
> >>>>>> web / identity / packaging
> >>>>>>
> >>>>>> m  415.298.2707
> >>>>>> w  wearecharette.com
> >>>>>> e   jeffrey@wearecharette.com
> >>>>>>
> >>>>>> On Mar 22, 2013, at 7:13 AM, Dave Cottlehuber <dch@jsonified.com>
> >>>> wrote:
> >>>>>>
> >>>>>>> Hi folks,
> >>>>>>>
> >>>>>>> GSOC[1][2] registration for ASF closes this weekend, and
we'd like
> to
> >>>>>>> get some proposals into it, viz
> >>>> http://community.apache.org/gsoc.html
> >>>>>>> from last year.
> >>>>>>>
> >>>>>>> If you reply, please do so just to the dev@ list -- note
I BCC'd
> >>>>>>> users@ for some ideas.
> >>>>>>>
> >>>>>>> I've got a few suggestions to get the ball rolling, with
numbers
> >>>> where
> >>>>>>> taken from the future features list:
> >>>>>>> https://gist.github.com/rnewson/2387973
> >>>>>>>
> >>>>>>> 6. implement a Domain-Specific Language to run within the
Erlang
> VM,
> >>>>>>> to support native speed filtering, validation, and indexing
in
> >>>>>>> addition to the current in-built JS and erlang ones. Maybe
> something
> >>>>>>> that includes http://jsonselect.org/
> >>>>>>>
> >>>>>>> 8/9. Rewire CouchDB's HTTP layer to support websockets and
spdy. I
> >>>>>>> think this implies switching to cowboy, this could be too
messy.
> >>>>>>>
> >>>>>>> 12. Extend CouchDB's query model (e.g.
> >>>>>>> https://developers.google.com/chart/interactive/docs/querylanguage
> )
> >>>> to
> >>>>>>> support a richer syntax.
> >>>>>>>
> >>>>>>> 13/14. Implement partial reads and updates of documents,
> >>>>>>>
> >>>>>>> Make the javascript view engine faster. Could include v8
bindings,
> >>>>>>> different / parallel communication approaches between erlang
and
> >>>>>>> javascript worlds, avoiding reparsing JSON roundtrips, and
make it
> >>>>>>> faster than the current spidermonkey implementation.
> >>>>>>>
> >>>>>>> Implement external storage of attachments and appropriate
HTTP API
> >>>>>>> hooks incl replication to allow hosting attachments outside
the
> >>>> .couch
> >>>>>>> files, either on local storage, or in cloud blob storage
(S3, azure
> >>>>>>> etc).
> >>>>>>>
> >>>>>>> Implement a view development sandbox, where you can easily
> prototype
> >>>>>>> with a sub-set of documents without long build times.
> >>>>>>>
> >>>>>>> Add an optional HTTP compression layer to CouchDB. It would
be
> really
> >>>>>>> cool if you could do the compression during doc update (or
view
> >>>>>>> creation or something) so that it can be served directly
next time.
> >>>>>>> See https://github.com/lgerbarg/couchdb/tree/gzip-support
for a
> >>>> prior
> >>>>>>> implementation or https://gist.github.com/archaelus/76455
for a
> >>>>>>> file-based approach, and
> >>>>>>>
> >>>>>
> >> http://visualstart.blogspot.co.at/2012/02/mochiweb-erlang-and-gzip.html
> >>>>>>> for some other ideas.
> >>>>>>>
> >>>>>>> Develop a plugin API & rework the authentication layer
to allow
> >>>>>>> plugging in ErLDAP, nodejs with EveryAuth or PassportJS
or in fact
> >>>>>>> anything you like.
> >>>>>>>
> >>>>>>> Extend geocouch and/or couchdb with some of Volker's ideas
(cue
> >>>>>>> Volker). Or stuff like quadtrees, geohashes or hilbert curves.
> >>>>>>>
> >>>>>>> Finally, if you are interested in being a mentor, please
speak up!
> >>>>>>>
> >>>>>>> A+
> >>>>>>> Dave
> >>>>>>>
> >>>>>>> [1]: http://www.google-melange.com/gsoc/homepage/google/gsoc2013
> >>>>>>> [2]:
> >>>>>>
> >>>>>
> >>>>
> >>
> https://groups.google.com/forum/?fromgroups=#!topic/google-summer-of-code-discuss/yYM2ru4bTeo
> >>>>>>
> >>>>>>
> >>>>>
> >>>>
> >>
> >>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message