Overview

SpdXtra takes the close-to-the metal approach, allowing the creation of highly scalable and performant SPDX generators and consumers.

SpdXtra consists of three major components:

spdxtra_architecture.png

1. Dataset

An implementation of Jena's Dataset interface, this is the only mutable state in SpdXtra. For large codebases, it is recommended that a TDB be used. For unit tests and small codebases, an in-memory implementation, such as that produced by Jena's DatasetFactory.createTxnMem(), may be sufficient.

2. Read

The read class and its child classes contain static operations to obtain SPDX information from the dataset. All methods return immutable views. This part of SpdXtra is perhaps the furthest from complete at present.

3. Write

This class and its subclasses contain static methods that generate updates and changes to the dataset. Each method produces a ModelUpdate, a functional interface that represents an update to the dataset. The method Write.applyUpdatesInOneTransaction then applies all such updates in a single transaction.

This approach makes it possible to commit updates to multiple properties of the same element or chain of elements in a single write operation, minimizing disk thrashing when a persisted dataset is used. It also allows the atomicity of such updates to be maintained.

A demo/tutorial of how to build an SPDX document with SpdXtra is available here.




Last edited Apr 11, 2016 at 2:18 AM by yevster, version 9