Hi Seggy, the wiki could maybe be reworded a bit. There's definitely only one .index file on disk for each design document, and when any view in that document changes all of the views are rebuilt.

I think what the wiki might also have been trying to get across is that, if two views in a design document use a byte-identical map function, those views will share the same map results (the results won't be duplicated). Internally CouchDB builds a dictionary keyed on the source of the map function that keeps a list of reduce functions operating on that map output.

Cheers, Adam

On Oct 28, 2009, at 6:44 PM, Seggy Umboh wrote:

Hmmm ...... I just found that the View API wiki page says otherwise:

"Each view function is stored according to a hash of their byte
representation, so it is important that a function does not load any
additional code, changing its behavior without changing its byte- string."

I hope the wiki is correct, because that sounds more desirable, but if it's
not, I'd be happy to fix the wiki.



On Wed, Oct 28, 2009 at 12:40 PM, Adam Kocoloski <[email protected]>wrote:

Hi Seggy, it's per design document. Every time you change any view in a
design doc, all the views in that document are reindexed.  Best,

Adam


On Oct 28, 2009, at 3:09 PM, Seggy Umboh wrote:

That's interesting. Is the hash per design document, or per view? Does it
mean that when I change one view in my _design/development, only that view
is reindexed?


On Tue, Oct 27, 2009 at 7:53 PM, Adam Kocoloski <[email protected]>
wrote:

On Oct 27, 2009, at 8:25 PM, Larry wrote:

As I had expected Im starting to experience lengthy re-indexing times
when

changing/updating our views. We have just over 300K worth of documents
currently and it will be growing. One of our views takes about 20
minutes
or
so to index when installed. This locks up key aspects of our application
and
we would like to find a way to keep the application continuously
functional.
I know that our views scripts can certainly be optimized and thats
something
were working on as our knowledge and experience with CouchDB grows.
However
given where we are now I was wondering if there is a "best practice" or
any
tips that users may have on updating views across large data sets.

Thanks for the help!

larry


Hi Larry, one trick you may find useful in 0.10 is to take advantage of
the
fact that the view index files are identified by the hash of their
contents.
This means that you can have your _design/production document and your _design/development document, and when you're satisfied with the dev
version
of your app and you want to deploy it, you can just update
_design/production to be identical to _design/development -- your
production
system will automatically use the prebuilt indexes from
_design/development
with zero downtime. You can even use HTTP COPY to do this if you like.
Cheers,

Adam





Reply via email to