Question

Je suis en train de mettre en place la configuration de magasin de valeur clé Voldemort. Maintenant, je voudrais être en mesure de stocker hashmaps arbitraires, mais je ne l'ai pas trouvé le moyen de le faire (ou s'il est possible).

D'après la documentation que je devrais utiliser cette syntaxe:

{"fname":"string", "lname":"string", "id":"int32", "emails":["string"]}

Pour indiquer que je veux stocker une représentation HashMap d'un bean Java, mais avec des contraintes sur les touches correspondantes (uniquement fname, lname, id et emails) et leurs types.

Ce que je aurais besoin est d'être en mesure de stocker une carte arbitraire comme ceci:

{"name":"fred", "id":15}

ou comme ceci:

{"apples":"50$", "oranges":"15€"}

(valeurs carte sont sans signification, juste une illustration de cartes avec des noms clés et types de valeurs)

Y at-il un moyen de définir un schéma qui accepterait un hashmap arbitraire?

Était-ce utile?

La solution

Ce que j'ai trouvé utile est d'utiliser simplement le stockage brut générique (où l'octet [] est passé), et les choses côté client pré-sérialisation. Ceci est trivial d'utiliser (je l'utilise Jackson ):

  ObjectMapper mapper = new ObjectMapper();
  // to store:
  byte[] data = mapper.writeValueAsBytes(myMap);
  // and when retrieving back:
  Map<String,Object> data = mapper.readValue(data, Map.class);

Alors que Voldemort supporte son stockage « JSON-like » (ce n'est pas JSON mais dictionnaires binaires simples, pour autant que je sache), il n'y a pas beaucoup d'avantages à l'utiliser à mon avis, puisque vous ne pouvez pas interroger là-dessus ou des sous-ensembles de demande de documents.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top