/**
* {@code DataStore} server-side component API ({@code ks-server}).
* <p>
* This package defines the API of the {@code DataStore} internal server-side component, whose
* responsibility is to provide a scalable storage for semi-strutured data about resources,
* mentions and entities. More in details, the package provides:
* </p>
* <ul>
* <li>the {@code DataStore} API ({@link eu.fbk.knowledgestore.datastore.DataStore},
* {@link eu.fbk.knowledgestore.datastore.DataTransaction});</li>
* <li>a base implementation ({@link eu.fbk.knowledgestore.datastore.MemoryDataStore}) that stores
* all data in memory in a space inefficient way (this implementation is good for testing);</li>
* <li>abstract classes {@link eu.fbk.knowledgestore.datastore.ForwardingDataStore} and
* {@link eu.fbk.knowledgestore.datastore.ForwardingDataTransaction} for implementing the
* decorator pattern;</li>
* <li>three concrete decorator classes that wrap another {@code DataStore} and add it logging
* capabilities ({@link eu.fbk.knowledgestore.datastore.LoggingDataStore}), synchronization (
* {@link eu.fbk.knowledgestore.datastore.SynchronizedDataStore}) and per-transaction caching (
* {@link eu.fbk.knowledgestore.datastore.CachingDataStore}).</li>
* </ul>
* <p>
* Custom implementations of the {@code DataStore} component may be provided by the user to
* customize the way the KnowledgeStore stores its data.
* </p>
*/
@javax.annotation.ParametersAreNonnullByDefault
package eu.fbk.knowledgestore.datastore;