couchdb-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Robert Newson (JIRA)" <j...@apache.org>
Subject [jira] Commented: (COUCHDB-707) Proposal for "Filter Views"
Date Thu, 25 Mar 2010 19:28:27 GMT

    [ https://issues.apache.org/jira/browse/COUCHDB-707?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12849864#action_12849864
] 

Robert Newson commented on COUCHDB-707:
---------------------------------------

include_docs=true does not bring in the attachments binary data, just a stub. Another way
of saying that is that you cannot emit the matching image data in a view anyway.

To make it faster, you could emit the data you wish to match on in either the key or the value
of the emit() call and then you don't need include_docs=true, which is another (internal)
lookup.

with a list function over a view, where the list function only emits rows that match your
criteria, you would follow up with calls to pull the attachment itself.

To your last point, it's true that you would do all this stuff server-side with an RDBMS (stored
procedures, etc), but that's not always the natural thing to do with couch.



> Proposal for "Filter Views"
> ---------------------------
>
>                 Key: COUCHDB-707
>                 URL: https://issues.apache.org/jira/browse/COUCHDB-707
>             Project: CouchDB
>          Issue Type: New Feature
>          Components: JavaScript View Server
>    Affects Versions: 0.11
>            Reporter: Luke Burton
>
> A common operation I find myself performing repeatedly is:
> * request a view (maybe with some basic filter like "keys" or a range of keys)
> * in my client, filter this view based on some complex criteria, leaving me with a small
set of document IDs (complex as in array intersections, compound boolean operations, &
other stuff not possible in the HTTP view API)
> * go back to Couch and fetch the complete documents for these IDs.
> List Views almost get me to the point of doing this purely in Couch. I can enumerate
over a view and do some complex things with it. But I can't output entire documents, unless
I use the include_docs=true flag which murders the performance of the list view.Apparently
because the entire view is fetched with including docs, THEN passed on to the list view JS.
Typically my complex filter criteria is contained in the view itself, so there is no need
to fetch the entire document until I know I have a match.
> In summary, a Filter View would execute some arbitrary JavaScript on each view row, with
access to HTTP request parameters, and return "true" for rows that match. The output would
be a list of IDs for whom the function returned true. include_docs=true would include the
matching documents.
> Performance would certainly not be as good as fetching a raw view, but it would indisputably
be better than fetching the entire view over HTTP to a client, deserializing the JSON, doing
some stuff, then making another HTTP request, and deserializing more JSON.
> I looked at the various entry points for list views in the Couch source. Unfortunately
it will take me some time to come up to speed with the source (if I ever have the time ...),
and I hope that what I'm asking for could be a simple extension to the List Views for someone
very familiar with this area.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message