afs opened a new issue, #1697: URL: https://github.com/apache/jena/issues/1697
### Version 4.7.0 ### Feature A buffering dataset wraps another dataset. It collects changes (add and delete for triples, quads and prefixes), presents a dataset API that is the base dataset as if the chnages had been applied. It has a flush operation that executes the changes on the base dataset (normally, as a single transaction). Use case: _adding true transactional abort to any dataset_ General purpose datasets can not provide MR+SW transaction and can not provide abort. (see [`DatasetGraph.supportsTransactionAbort`](https://jena.apache.org/documentation/javadoc/arq/org.apache.jena.arq/org/apache/jena/sparql/core/DatasetGraph.html#supportsTransactionAbort()). By delaying changes to the underlying dataset until a commit is performed, abort can be provided by using a buffered dataset that stores the changes until the commit; an abort is simply forget the buffered changes. Use case: _batching many small transactions into a single transaction on the base storage_ Many small updates (add/delete one or two triples) can result in more work being in the transaction mechanism than in the updates themselves. A buffered dataset (with an associated journal to make each small transaction safe - see "RDF Patch".) Use case: _Rule-derived (inference) overlay_ The buffering layer can keep inferred triples separately from the base data. _Notes_ * For the use cases above, the buffering dataset uses JVM heap to store the ongoing differences. If larger than that, it is probably better to use a proper persistent dataset directly. * With a switchable buffering dataset, the update of the underlying dataset may be done asynchronously. Interfaces: `DatasetGraphBuffering`, `BufferingCtl`. Classes: `BufferingDatasetGraph`, `BufferingGraph`, `BufferingPrefixMap`, `BufferingPrefixMapping` Once the machinery design is done, providing a standalone graph case is simple. The general design is a pattern where there is an in-memory `DatasetGraph` that records additions, and a set of items deleted, that is used to filter the `find()` iterator. ### Are you interested in contributing a solution yourself? Yes -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected] --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
