Skip to main content

store

Enregistre les données en datastore distribués (datastore graphe ou timeseries graphe)

Les données retournées par lambdas sont stockées en datastores. Accepte Registry, Resource, Java POJO, RDF/N3 string ou org.mddynamics.network.stream.util.Transaction pour exécuter une transaction directement sur le dataset

Patterns

Distributed storage

Usage

interface org.mddynamics.network.stream.LinkStream
    public LinkStream store(String label, String url, Atomic... atomics) throws StreamDefinitionException;

@param label: libellé de la clause, affichée sur l'arborescence du stream (onglet packages)

@param url: URL de distribution de la fonction lambda

@param atomics: fonction lambda (au moins une requise)

@return retourne l'instance du flux (approche DSL)

@exception Si l'exception StreamDefinitionException est levée la compilation échoue et un message d'erreur s'affiche

Lorsque plusieurs fonctions lambda sont définies, elles sont exécutées séquentiellement sur les mêmes données reçues en entrée. Cela permet d'exécuter plusieurs traitements logiques distincts et de transmettre les résultats vers la clause suivante de l'algorithme (à la façon d'une fonction "JOIN")

Paramètres d'URL

En plus des paramètres de distribution, l'url supporte les paramètres suivants:

paramètre d'URL datastore.name (requis) désigne le nom du datastore cible (default=default)

paramètre d'URL datastore.context (optionnel) désigne le domaine / le namespace du datastore. Par défaut, les données sont stockées dans le namespace correspondant à la référence du stream

paramètre d'URL datastore.set (optionnel) désigne le nom du graphe cible (default=default)

paramètre d'URL datastore.date (optionnel) indique la date pour une timeseries, au format suivant (au choix):

  • timestamp (UTC) au format long
  • datetime formatée yyyy-MM-ddTHH:mm:ss.SSSZ en UTC ou avec timezone, ex: '2022-10-01T12:00:00+01:00'
  • datetime formatée YYYY, YYYYMM, YYYYMMDD ou YYYYMMDDHhh, ex: 20221001H12

paramètre d'URL datastore.period indique la date pour une timeseries, requis si datastore.date

signature d'une fonction lambda Atomic
    public Object (LinkStream stream, Event event) -> { return ... }

@param stream: context d'exécution du stream

@param event: payload. L'objet org.mddynamics.network.stream.Event est un wrapper

@return: données à enregistrer en datastore

Il est possible de retourner l'objet Event ou tout autre objet sérialisable. Si l'objet retourné est une instance de java.lang.Iterable alors chaque élément de la liste sera transmis en streaming vers le datastore, sinon l'objet entier est transmis

Exemple de code


@Override
public void build() throws Exception {

make("power data collect")
.from("collect", "www.mddynamics.fr/app/data..", (stream, metrics) -> {
return validData(metrics);
})
.store("yield", "www.mddynamics.fr/app/store/yield", (stream, metrics) -> {
return metrics.resource().get("tension");
});
}