如何获得谷歌应用引擎数据存储区中的所有类型?

时间:2010-07-09 02:03:48

标签: java google-app-engine google-cloud-datastore

我正在使用java来编写GAE代码,我已经阅读了GAE Java低级API,但我找不到任何问题的答案。

我想知道是否有一种方法可以调用方法/执行JDOPL并返回数据存储区中所有不同类型的实体。

3 个答案:

答案 0 :(得分:2)

您可以使用数据存储区统计信息API:

http://code.google.com/appengine/docs/java/datastore/stats.html

看起来__Stat_Kind__统计信息会为您提供所需的信息。

答案 1 :(得分:2)

我找到了一个有效的解决方案here。 (截至2010年7月9日,它在本地部署服务器中不起作用)

DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
PreparedQuery global = datastore.prepare(new Query("__Stat_Kind__"));

for( Entity globalStat : global.asIterable() )
{
    Long totalBytes = (Long) globalStat.getProperty("bytes");
    Long totalEntities = (Long) globalStat.getProperty("count");
    String kindName = (String) globalStat.getProperty("kind_name");
    resp.getWriter().println("[" + kindName + "] has " + totalEntities + " entities and takes up " + totalBytes + "bytes<br/>");
}

答案 2 :(得分:2)

您可以使用Metadata API。例如:

Query query = new Query(Entities.KIND_METADATA_KIND);
DatastoreService datastoreService = DatastoreServiceFactory.getDatastoreService();

Iterable<Entity> entityIterable = datastoreService.prepare(query).asIterable();

for(Entity entity : entityIterable) {
    System.out.println("Entity kind: " + entity.getKey().getName());
}