Tag: 谷歌云的数据存储

一种将appengine数据存储实体转换为我的对象的方法?

使用google appengine 1.3.0 w / java和jdo … 在尝试为一对多拥有的关系编写JDO查询时,我遇到了一个我认为非常聪明的非JDO概念。 祖先Querys。 appengine.api.datastore.Query接口允许使用父键确定查询范围。 不幸的是,查询的结果是带有属性列表的“实体”对象。 apis中是否有一个util会将其中一个Entity对象转换为我的JDO对象,甚至是一个简单的DTO bean(与我的JDO对象匹配)? 我用下面的代码强行破解了它,但不喜欢双重查找。 PersistenceManager pm; DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); List results; com.google.appengine.api.datastore.Query query = new Query( “MyObject”, KeyFactory.stringToKey( parentId ) ); query.addFilter(“rank”, Query.FilterOperator.GREATER_THAN_OR_EQUAL, minRank ); query.addSort(“rank”); query.setKeysOnly(); for (Entity anEntity : datastore.prepare(query).asIterable()) { results.add( pm.getObjectById( MyObject.class, anEntity.getKey() ) ); }

Google数据存储区 – 查询关键值

我有一个EntityKind SuggestedInterest。 当我使用键“GrpId”和属性“suggestedint”填充它时。 现在,我需要“suggestint”值来请求“GrpId” 所以,我把查询写成: String findSuggestedInterest(String grpId) { DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); Filter filter = new FilterPredicate(Entity.KEY_RESERVED_PROPERTY,FilterOperator.EQUAL,grpId); Query q0 = new Query(“SuggestedInterest”).setFilter(filter); PreparedQuery pq0 = datastore.prepare(q0); Entity result = pq0.asSingleEntity(); return result.getProperty(“suggestedint”).toString(); } 当我执行此代码时,我得到了 java.lang.IllegalArgumentException: __key__ filter value must be a Key 开发人员讲述了使用Entity.KEY_RESERVED_PROPERTY来查询密钥,但我想我误会了。 查询密钥的正确方法是什么?

在开发环境数据存储区中预加载数据的便捷方法

我正在使用Maven在Google App Engine上开发应用程序。 当我运行本地服务器时,我希望在数据存储区中预加载一些数据,例如本地用户表。 服务器将数据存储文件放在目标目录的WEB-INF / appengine生成下,并在每次构建之前进行清理。 有没有方便的方法呢?

如何在多个参数上动态构建JDO查询

可以使用JDO语法轻松查询多个参数,如下所示: //specify the persistent entity you’re querying and you filter usign params query = pm.newQuery(MyClass.class, ” customer == paramCustomer && date >= paramStartDate && date <=paramEndDate "); // declare params used above query.declareParameters("com.google.appengine.api.users.User paramCustomer, java.util.Date paramStartDate, java.util.Date paramEndDate"); //pass the object declared as params MyClassList = (List) query.execute(user, startDate, endDate); 使用filter以编程方式构建字符串很简单: “customer == paramCustomer && […]

如何使用java更新谷歌应用引擎中的数据存储的字段值

我在数据存储中创建了一个Login(Kind)。 在登录中,我创建了两个字段username和passsword。 当用户更改密码时,我想更新数据存储区内的字段值。 但是当我使用这段代码时, DatastoreService datastore = DatastoreServiceFactory.getDatastoreService(); Entity passwordchange = new Entity(“Login”); passwordchange.setProperty(“password”, “admin@123”); datastore.put(passwordchange); 它会创建一个新行并插入密码“admin @ 123”,而不是在同一行中更新新密码。 任何人都可以建议我如何更新字段的数据。

如何在GAE数据存储中保存实体,只有在防止竞争条件时不存在该实体

我正在尝试将实体保存到Google App Engine数据存储区,如果它不存在,如果它确实不应该继续。 主要问题是:我想要防止任何竞争条件,这样如果两个线程同时执行此操作,则只有一个线程可以成功保存实体。 我不确定什么是最好的方法,使用事务工作或者必须依赖其他解决方案,例如使用Memcache 请在java中提供低级API的答案

如何连接到本地google云数据存储区?

我有GAE应用程序,它在Google Cloud Datastore中创建了一些数据,并将一些二进制文件存储到Google云端存储中 – 让我们调用应用程序WebApp 。 现在我在Google计算引擎上运行了不同的应用程序。 我们称之为ComputeApp应用程序。 ComputeApp是一个后端进程,用于处理WebApp创建的数据。 我之前在这个问题中问过,我可以使用哪种API与ComputeApp中的数据存储区进行通信。 正如@proppy所建议的那样,我使用Google Cloud Datastore API实现了数据存储通信。 就我在Google云中与数据存储区进行通信而言,一切正常。 我正在使用服务帐户身份validation。 现在我需要在我的开发PC上本地运行我的ComputeApp,这样我就可以获取本地WebApp创建的数据并存储到本地调试数据存储区中。 我需要它,因为我想拥有一个测试环境,所以我可以在本地调试GAE app。 我应该如何修改我的ComputeApp代码以强制它连接到我的本地调试数据存储而不是连接到Google云? 我google了很多,没有找到任何建议或示例。 只有可能的方式我发现我应该完全重写我的代码并使用不同的API来做到这一点。 这就是Datastore Remote API。 这真的是唯一的方法吗? 我真的应该重写整个ComputeApp来连接本地数据库吗? 真? 我希望我只是忽略了一些重要的事情,这不是真的……

使用Java的Google Datastore Emulator(不使用GAE)

我正在使用Google Cloud的Java数据存储客户端库访问云数据存储区。 注意 :我没有使用App Engine来部署我的应用程序; 只是为了开发目的运行本地应用程序。 在示例之后,我可以读/写Cloud Datastore。 Datastore datastore = DatastoreOptions.defaultInstance().service(); KeyFactory keyFactory = datastore.newKeyFactory().setKind(“MyKind”); Key key = keyFactory.newKey(); Entity entity = datastore.get(key); 我希望能够写入本地数据存储模拟器实例。 按照这里的指南,我运行gcloud beta emulators datastore start 。 这显示在我的终端中: C:\Users\User>gcloud beta emulators datastore start WARNING: Reusing existing data in [C:\Users\User\AppData\Roaming\gcloud\emulators\datastore]. Executing: cmd /c C:\Users\User\AppData\Local\Google\Cloud SDK\google-cloud-sdk\platform\cloud-datastore-emulator\cloud_datastore_emulator.cmd start –host=localhost –port=8964 –store_on_disk=True –consistency=0.9 –allow_remote_shutdown C:\Users\User\AppData\Roaming\gcloud\emulators\datastore […]

与Java中的Google Compute引擎的数据存储和云存储通信

我有GAE应用程序,它在Google Cloud Datastore中创建了一些数据,并将一些二进制文件存储到Google云端存储中 – 让我们调用应用程序WebApp 。 现在,我在Google云端存储 Google计算引擎上运行了不同的应用程序。 我们称之为ComputeApp应用程序。 现在,ComputeApp应连接到数据存储区,查询WebApp创建的实体,并从Google云存储中读取相关的二进制文件。 然后,CoumputeApp对二进制文件进行一些处理,例如重新编码为不同的格式,并将其存储回云存储并更新数据存储区中的相关实体。 现在让我描述一个问题: ComputeApp如何与DataStore通信? (我使用Objectify)我找到的唯一方法是GAE Remote API for Java。 它在连接到我在本地运行的WebApp时起作用,但在连接到GAE中部署的WebApp时不起作用。 原因可能在这里描述。 但我不知道python,所以我不理解所描述的解决方案。 我的ComputeApp如何与GAE数据存储区服务进行通信还有其他可行的方法吗? 非常感谢! 编辑:我正确地纠正了我的拼写错误。

将嵌套的BigQuery数据导出到云存储

我试图通过API将bigquery数据导出到谷歌云存储桶。 我从这里改编了代码片段https://cloud.google.com/bigquery/docs/exporting-data Job job = table.extract(format, gcsUrl); // Wait for the job to complete try { Job completedJob = job.waitFor(WaitForOption.checkEvery(1, TimeUnit.SECONDS), WaitForOption.timeout(3, TimeUnit.MINUTES)); if (completedJob != null && completedJob.getStatus().getError() == null) { // Job completed successfully } else { // Handle error case System.out.println(completedJob.getStatus().getError()); } } catch (InterruptedException | TimeoutException e) { // Handle interrupted […]