improve view filtering in changes
---------------------------------

                 Key: COUCHDB-1398
                 URL: https://issues.apache.org/jira/browse/COUCHDB-1398
             Project: CouchDB
          Issue Type: Improvement
          Components: View Server Support
    Affects Versions: 2.0, 1.3
            Reporter: Benoit Chesneau


Improve the native view filter `_view` support by really using view index. This 
patches add following features

- small refactoring: create the couch_httpd_changes modules, to put all the 
changes http support in its own module instead having it in couch_httpd_db. 
- add the `view_updated` event when a view index is updated : {view_updated, 
{DbName, IndexName}}
- start the feed using results in the view index instead of all the db index
- only react on view index changes.

For now next changes are still get using the couch_db:changes_since function 
and passing the map function to the results. It could be improved if we had a 
by_seq btree in the view index too. Other way may be to skip a number of the 
documents already processed. Not sure it would be faster. Thoughts ?


The branch couch_view_changes  in my repo contains preliminary support:

https://github.com/benoitc/couchdb/tree/couch_view_changes

Diff:
https://github.com/benoitc/couchdb/compare/master...couch_view_changes

To use it, use the native filter named _view which take the parameter 
view=DesignName/Viewname

eg:

  
http://server/db/_changes?feed=continuous&heartbeat=true&filter=_view&view=DesignName/SomeView


It has also an interresting side effect: on each db updates the view index 
refresh is triggered so view updates are triggered. Maybe we could introduce an 
optionnal parameter to not trigger them though?

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to