A logical representation of a set of data entities.
Logically, all datasets have two generic properties: a name, and a descriptor that holds information such as the dataset's schema and its partitioning information. Concrete implementations of {@code Dataset} may supportadditional properties, mandatory or otherwise, as needed. {@code Dataset}s are not normally instantiated directly, but managed by a repository (also implementation-specific).
Implementations of {@link Dataset} are immutable.
@param < E> The type of entities stored in this {@code Dataset}. @see View @see DatasetRepository @see DatasetWriter @see DatasetReader @see PartitionStrategy @see DatasetDescriptor @see Schema 06/06, 2011 - Extended interface Closeable
All datasets are required to support the {@link DatasetChangeEvent}mechanism by allowing listeners to register and receive notification of any changes to the dataset.
In addition, all datasets must belong to one (and only one) {@link DatasetGroup}. The group object maintains a reader-writer lock which provides synchronised access to the datasets in multi-threaded code.
A logical representation of a set of data entities.
Logically, all datasets have two generic properties: a name, and a descriptor that holds information such as the dataset's schema and its partitioning information. Concrete implementations of {@code Dataset} can supportadditional properties, mandatory or otherwise, as needed. {@code Dataset}s are not normally instantiated directly, but managed by a repository (also implementation-specific).
Implementations of {@link Dataset} are immutable.
@param < E> The type of entities stored in this {@code Dataset}. @see View @see DatasetWriter @see DatasetReader @see PartitionStrategy @see DatasetDescriptor @see Schema ds.beginUpdate() try { // .. do modifications } finally { ds.endUpdate(); }
Note that it is not necessary to call beginUpdate/endUpdate for every dataset modification - dataset will get locked automatically. Note that locks cannot be upgraded - if one threads use read lock and and then write lock, dead lock will occur - see #5814 for sample ticket
@author imi
A dataset allows arbitrary Tuples to be returned from each sample index. The tuples returned are not guaranteed to be mutation free; that is, they should be considered flyweight objects to be used and discarded before the next invocation of {@link #getFlyweightTuple(int)}.
A multiresolution dataset is a dataset consisting of multiple levels, with level 0 being the bottom most level containing the original datasets. Levels 1 and above represent a 'zoomed out' view of the data, filtered, interpolated, scaled, or decimated as appropriate. The only requirement is that if M and N are two levels in the dataset, and M > N, then getNumSamples(M) < getNumSamples(N). In other words, the number of samples (the resolution) must strictly decrease as the level increases. A useful visualization is to imagine levels stacking on top of one another like a pyramid. There is no requirement that the pyramid contain a level Z such that getNumSamples(Z) == 1, but in practice, getNumSamples(Z) should be less than XYPlot.getMaxDrawablePoints().
It is recommended to use a method that makes successive levels half the size of former levels, so that the height of the pyramid is log_2(num_samples).
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|