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
