首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Appengine上的Key-Value

Appengine上的Key-Value
EN

Stack Overflow用户
提问于 2012-06-19 02:02:28
回答 3查看 176关注 0票数 0

尽管appengine已经是无模式的,但是仍然需要定义需要通过Datanucleus持久层存储到Datastore中的实体。因此,我正在考虑一种绕过这个问题的方法;通过在运行时存储键值的层,而不是编译时实体。

使用Redis的方法是创建一个如下键:

代码语言:javascript
复制
private static final String USER_ID_FORMAT = "user:id:%s";
private static final String USER_NAME_FORMAT = "user:name:%s";

文档中的Redis类型有:StringLinked-listSetSorted set。我不确定是否还有更多。

对于GAE数据存储,字符串"Key“和"Value”必须是要存储的实体。

像这样:

代码语言:javascript
复制
public class KeyValue {
 private String key;
 private Value value; // value can be a String, Linked-list, Set or Sorted set etc.
 // Code omitted
}

此方案的合理性源于对数据存储的Restful访问(由Datanucleus-api-rest提供)

使用此rest api,持久化对象或实体:

代码语言:javascript
复制
POST http://datanucleus.appspot.com/dn/guestbook.Greeting
{"author":null,
  "class":"guestbook.Greeting",
  "content":"test insert",
  "date":1239213923232}

这种方法的问题在于,为了持久化实体,需要在编译时定义实际的类;与拥有键值存储机制的想法不同,我们可以简化方法调用:

代码语言:javascript
复制
POST http://datanucleus.appspot.com/dn/org.myframework.KeyValue
{ "class":"org.myframework.KeyValue"
  "key":"user:id:johnsmith;followers",
  "value":"the_list",
}

将单个字符串作为"value“传递是相当简单的,我可以使用JSON数组来表示列表、集合或排序列表。真正的问题是如何真正持久化传递到接口中的不同类型的数据。是否应该有多个KeyValue实体,每个实体代表它支持的基本类型: KeyValueString?KeyValueList?等。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-19 03:23:13

看起来您正在使用基于JSON的REST API,那么为什么不直接将值存储为JSON字符串呢?

票数 1
EN

Stack Overflow用户

发布于 2012-06-19 05:12:29

您不需要使用Datanucleus层或任何其他精细的ORM层(如Twig或Objectify)。这些都是可选的,并且都基于低级API。如果我正确地解释了你说的话,也许它已经有了你想要的功能。请参阅:https://developers.google.com/appengine/docs/java/datastore/entities

票数 1
EN

Stack Overflow用户

发布于 2012-06-19 19:15:14

Datanucleus是一个运行在GAE之上的特定框架。但是,您可以在一个较低、结构较差、更像键/值的级别--低级API --访问数据库。这是您可以直接访问的最低级别。顺便说一句,低级的“GAE数据存储”内部运行在6个全局Google Megastore表上,而这些表又托管在Google Big Table数据库系统上。将JSON保存为字符串可以很好地工作。但您需要通过ID以外的方法来检索对象,也就是说,您需要一种索引数据的方法来支持对数据的任何类型的有用查询。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11088442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档