On Aug 16, 2010, at 4:38 PM, Norman Barker wrote: > Hi, > > I have made the changes as recommended, adding a test case > multiview.js and also adding the userCtx to open the db. > > I have also forked geocouch and this is available here >
this patch seems important (especially as people are already asking for help using it on user@) to get it committed, it either must remove the dependency on GeoCouch, or become part of CouchDB when (and if) GeoCouch becomes part of CouchDB. Is it possible / useful to make a version that doesn't use GeoCouch? And then to make the GeoCouch capabilities part GeoCouch for now? Chris > http://github.com/normanb/couchdb > > ./bootstrap > ./configure > make dev > utils/run > > should do it and then the simple test case is available in Futon. > > The test case multiview.js takes two views which emit docs which run > from 0 .. 100, view 1 emits those documents with ids which are > multiples of 3, view 2 emits those which are multiples of 4. The > _multiview request is the intersection of view 1 and view 2 resulting > those documents whose ids are multiples of 12. > > Any comments appreciated, particular concerning the following; > > 1) in the module multiview, is there a quicker way to find the counts > from startkey to endkey rather than iterating? > 2) In the module couch_query_ring is there a quicker way to test for > inclusion rather than iterating? > > Many thanks, > > Norman > > On Fri, Aug 6, 2010 at 10:16 AM, Norman Barker <norman.bar...@gmail.com> > wrote: >> Chris, >> >> I will make those changes, it might be a couple of days as I am on travel. >> >> I will clone geocouch as a starting point and add javascript tests as >> you suggest. >> >> I am bench marking with around 10000 docs and a couple of views >> (including geocouch), the main issue with the folding over every >> document to both find the number of docs in a view slice (between >> startkey and endkey) and then again to test inclusion between views. >> >> I am interested in taking this forward and appreciate any code feedback. >> >> thanks, >> >> Norman >> >> On Thu, Aug 5, 2010 at 6:26 PM, J Chris Anderson <jch...@apache.org> wrote: >>> >>> On Aug 5, 2010, at 4:32 PM, Jan Lehnardt wrote: >>> >>>> Hi Norman, >>>> >>>> I still plan to look at your code, I know the others here >>>> are fairly busy too, sorry for the review delay :) >>>> >>> >>> The code looks clean (but could use better comments about where in the flow >>> each module comes into play). I don't think we can guess about performance, >>> instead we should benchmark to make sure the ring approach is right. >>> >>> In CouchDB currently, it is possible to isolate requests against a single >>> db. So you use the security settings to prevent access to databases, etc. >>> For this, using the userCtx and switching away from couch_db:open_int() >>> would make a big difference. >>> >>> This way people can query across dbs if they have read access to all of >>> them. >>> >>> I think if you package this as a CouchDB fork on Github and add a few >>> JavaScript tests, it will be really useful for some folks. I like that it >>> has geo support. Maybe we can target it for inclusion in trunk just after >>> GeoCouch goes in trunk (if Volker wants to put it in.) >>> >>> Also, for realtime hacking on this, you might find that the #couchdb IRC >>> channel on Freenode is a good place to solicit feedback. There are a lot of >>> people on there doing Geo things that would benefit from this. (They really >>> wanna be able to intersect a Geo query with a Map Reduce query, etc.) >>> >>> Chris >>> >>>> Cheers >>>> Jan >>>> -- >>>> >>>> >>>> On 5 Aug 2010, at 18:12, Norman Barker wrote: >>>> >>>>> Hi, >>>>> >>>>> is there any interest in the multiview, I have fixed (3) below, but am >>>>> still interested in approaches for (1) and (2). >>>>> >>>>> thanks, >>>>> >>>>> Norman >>>>> >>>>> On Fri, Jul 30, 2010 at 3:39 PM, Norman Barker <norman.bar...@gmail.com> >>>>> wrote: >>>>>> Hi, >>>>>> >>>>>> a very initial version of the multiview is at >>>>>> http://github.com/normanb/couchdb-multiview for discussion. >>>>>> >>>>>> The views are intersected by using a ring of processes where each node >>>>>> in the ring represents a view as follows; >>>>>> >>>>>> % send an id from the start list to the next node in the ring, if the >>>>>> id is in adjacent node then this node sends to the next ring node .... >>>>>> % if the id gets all round the ring and back to the start node then it >>>>>> has intersected all queries and should be included. The nodes in the >>>>>> ring >>>>>> % should be sorted in size from small to large for this to be effective >>>>>> % >>>>>> % In addition send the initial id list round in parallel >>>>>> >>>>>> this is implemented in the couch_query_ring module. >>>>>> >>>>>> I have a couple of questions >>>>>> >>>>>> 1) in the module multiview, is there a quicker way to find the counts >>>>>> from startkey to endkey rather than iterating? >>>>>> 2) In the module couch_query_ring is there a quicker way to test for >>>>>> inclusion rather than iterating? >>>>>> 3) Finally, if I hit this concurrently I get an exception, >>>>>> >>>>>> [error] [<0.201.0>] Uncaught error in HTTP request: {exit, >>>>>> {noproc, >>>>>> {gen_server,call, >>>>>> >>>>>> (so ignore my previous email, I am able to trap the msg) >>>>>> >>>>>> I am going to look into (3) but if you have seen this before. >>>>>> >>>>>> I am developing on windows, but also test on linux I will work on >>>>>> getting a linux makefile, but the Makefile.win should be a start. >>>>>> >>>>>> Any help and comments appreciated. >>>>>> >>>>>> Norman >>>>>> >>>> >>> >>> >>