3

VoldemortKey-ValueStoreの構成をセットアップしようとしています。さて、そこに任意のハッシュマップを格納できるようにしたいのですが、そうする方法が見つかりませんでした(または可能であれば)。

ドキュメントによると、私はこの構文を使用する必要があります:

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

Java BeanのHashMap表現を格納したいが、許可されたキー(、、、および)とそのタイプに制約があることfnameを示すためlnameidemails

私が必要とするのは、次のような任意のマップを保存できるようにすることです。

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

またはこのように:

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

(マップ値は無意味であり、異なるキー名と値タイプを持つマップの単なる図解です)

任意のハッシュマップを受け入れるスキーマを定義する方法はありますか?

4

1 に答える 1

3

私が便利だと思ったのは、汎用のrawストレージ(byte []が渡される場所)を使用し、クライアント側で事前にシリアル化することです。これを使用するのは簡単です(私は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);

Voldemortは「JSONのような」ストレージをサポートしていますが(私が知る限り、JSONではなく単純なバイナリ辞書です)、クエリを実行したりサブセットを要求したりすることはできないため、私の意見ではそれを使用するメリットはあまりありません。ドキュメントの。

于 2010-12-06T18:48:10.783 に答える