We've had some discussion about providing caching at various layers of Jena on 
a few occasions in the last year or two. I'd like to throw out (for discussion) 
a potential limited-scope design that would use only "off-the-shelf" parts.

What if:

1) I write a simple DatasetChanges impl that just wrote through to a TDB 
dataset. (Let's call it ListeningTDB for short.)
2) Then I write a variation on the current TIM dataset that adds the 
DatasetChanges-"listener" functionality from DatasetGraphMonitor.
3) I write some Assemblers that let you build up a TIM dataset-with-listener 
and a ListeningTDB for it, and let you load the TIM dataset, not from files or 
URLs as usual, but directly from the TDB dataset.
4) Then we could line up (for Fuseki, for example) a TIM dataset that handles 
reads in memory but writes changes through to TDB.

Obviously, this is only useful for those cases where the whole dataset can fit 
into memory, and it could have an _awful_ startup time, but I suspect that it 
might be good for a good number of cases. That would include my most important 
case, anyway.

Am I missing anything obvious here? I often am... :sigh:


---
A. Soroka
The University of Virginia Library

Reply via email to