Details
-
Improvement
-
Status: Closed
-
Major
-
Resolution: Won't Fix
-
1.3, 2.0.0
-
None
-
Committers Level (Medium to Hard)
Description
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,
Unknown macro: {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?