Tag: 谷歌云的数据存储

appengine对“超出最大分配ID”有新的限制吗?

我的应用程序运行良好数月。 今天,它开始在数据存储区放置“超出最大分配ID”时出错。 这是一个新的有关appengine配额和限制的东西吗? http://gochild2009.appspot.com

Google App Engine和SQL LIKE

有没有办法用类似于SQL LIKE语句的filter查询GAE数据存储区? 例如,如果一个类有一个字符串字段,并且我想找到该字符串中具有某些特定关键字的所有类,我该怎么做? 看起来JDOQL的匹配()不起作用……我错过了什么? 欢迎任何评论,链接或代码片段

按GAE的日期(字符串)排序查询结果

我在GAE数据存储区中存储了数千个实体,其中字段“create”保存为日期String (标准格式)。 我的问题是 ,是否仍然可以像这样进行Query : Query q = new Query(“Post”) .addSort(“created”, SortDirection.DESCENDING); 其中“ created ”实际上是一个日期字符串,存储方式如下: 2014-12-11T14:31:43 -08:00″实际上是降序。我已经尝试了但是结果集是随机的而不是即使按日期排序。 有没有办法调整GAE Query来实现这一数据?

Google App Engine – update_indexes错误

我在app引擎上部署了一个Java应用程序,我使用Python SDK的appcfg.py来抽真空并更新我的索引。 昨天我第一次运行vacuum_indexes并成功完成 – 即它将已删除的任务添加到现有的索引中。 下一步可能是我的错误 – 然后我运行update_indexes,即使我之前的索引尚未删除。 不用说我的update_indexes调用错了。 这么多,以至于现在当我查看我的应用引擎控制台时,它会将所有索引的状态显示为“错误”。 一天过去了它仍然将我的索引上的状态显示为“错误”。 有人可以帮助我摆脱我的修复吗?! 谢谢,Keyur PS:我也在GAE论坛上发布了这个,但希望SO用户也面对并解决了这个问题。

数据流DoFn中的数据存储区查询在云中运行时减慢了管道

我试图通过在DoFn步骤中查询数据存储来增强管道中的数据。 来自Class CustomClass的对象中的字段用于对数据存储表执行查询,返回的值用于增强对象。 代码如下所示: public class EnhanceWithDataStore extends DoFn { private static Datastore datastore = DatastoreOptions.defaultInstance().service(); private static KeyFactory articleKeyFactory = datastore.newKeyFactory().kind(“article”); @Override public void processElement(ProcessContext c) throws Exception { CustomClass event = c.element(); Entity article = datastore.get(articleKeyFactory.newKey(event.getArticleId())); String articleName = “”; try{ articleName = article.getString(“articleName”); } catch(Exception e) {} CustomClass enhanced = new CustomClass(event); […]

Appengine批量下载程序不下载列表属性

这与我之前的一个问题有关 ,但有新的信息。 我正在尝试配置bulkdownloader以从我的Java appengine应用程序下载数据,使得拥有对象列表转换为每个父对象内的嵌套XML路径。 我一直在使用export transform transform.child_node_from_list 。 但是,list属性实际上从未被下载并传递给该转换! 这看起来类似于在appengine数据存储区查看器中查看实体时所获得的效果 – 父实体根本不显示列表属性。 您必须通过代码访问它。 那么我的问题是:如何使用批量下载程序访问此列表属性? 如果我使用–kind=ParentEntity下载,你认为这会阻止它下载任何ChildEntity吗? (有没有办法指定“各种”或任何东西?) 在python下载配置中,模型实际上直接引用到配置文件中。 我是否需要模拟一个模仿我的JDO模型并使用该引用的python模型? 作为参考,我的每个文件的缩写版本如下: downloadconfig.yaml: transformers: – kind: ParentEntity connector: simplexml connector_options: xpath_to_nodes: /Parents/Parent style: element_centric property_map: – property: __key__ external_name: key export_transform: transform.key_id_or_name_as_string – property: name external_name: name # Type: String Stats: 30 properties of this type in this […]

Google Datastore Querys会返回陈旧数据

我正在使用Google App Engine,当我从数据存储中删除并再次列出结果时,我会恢复过时的数据。 问题是什么? 这是我使用的代码。 public void remove(long id) { EntityManager em = EMFService.get().createEntityManager(); try { Todo todo = em.find(Todo.class, id); em.remove(todo); } finally { em.close(); } } public List getTodos(String userId) { EntityManager em = EMFService.get().createEntityManager(); Query q = em .createQuery(“select t from Todo t where t.author = :userId”); q.setParameter(“userId”, userId); List todos = […]

Google AppEngine中的复杂类层次结构(Java)

是否有可能在我的实体(JDO)中使用Java(GAE / J)在Google AppEngine中inheritance/扩展相同类的多个类。 例如我有: 内容(抽象类) 课程 然后我的课程将有: 扩展内容的video列表 书籍清单 同时 video包含标签列表 书有标签列表 课程有标签列表 是否有可能做GAE? 我做的与此类似,但有很多问题。 有这种东西的例子吗?

使用App Engine数据存储区查找重叠范围

我正在使用Google App Engine for Java和JDO接口来为CrimeWatch组织的应用程序提供数据存储。 我试图实现的function之一是远程日志,当人们长时间离开时会报告(因此巡逻者知道要密切关注房屋)。 在应用程序中,我有一个AwayLogEntry对象,其中包含开始日期和结束日期,以及所需的其他字段。 我需要向在特定时间段(通常是即将到来的一周)内离开的邻居巡逻的人提供报告。 我正在尝试构建一个报告,给出两个日期,找到与此范围重叠的所有AwayLogEntries。 我真正想要使用的查询是 select * from AwayLogEntry where not(end :reportEndDate) 但是不允许使用NOT子句(找不到关于这个的文档,但是它引起了这种效果的exception),也没有使用带有不等式filter的两个字段,所以我不能直接查询不同的重叠情况。 我现在的解决方法并不是很好 – 当我的当前日期大于条目结束日期时,我将创建一个日常的cron作业,删除(或标记它们,如果我需要保留它们以进行审计)。 然后我可以查询开始日期小于报告结束日期的所有条目(如果我不删除它们,则不会标记)。 这将允许合理地报告下一个X天的条目(这是他们通常需要的),但不允许任意日期范围查询(我猜他们会要求),除非我只是拉入所有条目并在代码中过滤它们。 任何人都可以想到解决GAE JDO实施的这种限制的任何技巧吗?

在AppEngine中安全地处理并发Memcache更新

有关安全处理并发Memcache更新的Google Apps Engine文档: Memcache服务的putIfUntouched和getIdentifiable方法可用于提供一种方法,在需要以primefaces方式更新同一个memcache密钥的同时处理多个请求的情况下,安全地对memcache进行键值更新。 (在这些情况下可以获得竞争条件。) 我正在构建一个需要准确缓存值的应用程序,下面是我的代码,请帮我检查一下是否正确: … IdentifiableValue oldCountIdValue = mc.getIdentifiable( cacheKey ); Long count = ( Long ) oldCountIdValue.getValue(); if( count != null ) { this.oldCountValue = oldCountIdValue; return count; } Long result = new Long( q.count() ); mc.putIfUntouched( cacheKey, oldCountValue, result ); return result; 我的问题是:如果putIfuntouched()返回false怎么办? 该代码应该返回什么? 如何? 当数据存储添加一个实体时,我在下面使用: mc.increment( cacheKey, 1, initValue ); […]