[ 
https://issues.apache.org/jira/browse/OAK-924?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13790132#comment-13790132
 ] 

Thomas Mueller commented on OAK-924:
------------------------------------

Just an idea: What about keeping (caching) the whole namespace data fully in 
memory, in two hash tables or so (one forward mapping, one reverse mapping)? 
Then, for every write to the namespace storage, update a write counter property 
at the root of the namespace storage. When reading from the namespace (JCR 
namespace read calls), check the current write counter, and if it changed, 
rebuild the cache (re-read the whole namespace from storage).

This would only work well if there are few writes. But if there are few reads, 
it should speed up reads a lot, as all reads would only require one lookup 
(reading the write counter property).

It wouldn't require commit hooks (well, a commit hook could be used to update 
the write counter). The storage wouldn't need any indexing (redundant reverse 
mappings).

> Optimize namespace lookups
> --------------------------
>
>                 Key: OAK-924
>                 URL: https://issues.apache.org/jira/browse/OAK-924
>             Project: Jackrabbit Oak
>          Issue Type: Sub-task
>          Components: core, jcr
>            Reporter: Jukka Zitting
>            Assignee: Jukka Zitting
>              Labels: performance
>         Attachments: OAK-924-bench.patch
>
>
> The current namespace handling code does a lot of repetitive work, which 
> shows up in hotspots like XML imports and Sling's namespace mapping code.



--
This message was sent by Atlassian JIRA
(v6.1#6144)

Reply via email to