3

我正在尝试为 Voldemort 键值存储设置配置。现在,我希望能够在其中存储任意哈希图,但我还没有找到这样做的方法(或者如果可能的话)。

根据文档,我应该使用以下语法:

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

表示我想存储 Java bean 的 HashMap 表示,但对允许的键(仅fnamelname和)id及其emails类型有限制。

我需要的是能够像这样存储任意地图:

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

或像这样:

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

(map值无意义,只是map不同键名、值类型的说明)

有没有办法定义一个可以接受任意哈希图的模式?

4

1 回答 1

3

我发现有用的是只使用通用原始存储(传递 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 回答