2
A
答えて
2
を、最も簡単かつ安価で簡単に使用することですget()
:
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.get(KeyFactory.createKey(kind, long))
のGet(1つの読み出し動作)クエリが安い()
3
はい、可能です。
このような何か試してみてください:キーで1つの実体の有無をチェックするための
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
Query gaeQuery = new Query(entityName);
gaeQuery.setKeysOnly();
gaeQuery.addFilter("__key__", FilterOperator.EQUAL, key);
PreparedQuery pq = datastore.prepare(gaeQuery);
List<Entity> results = pq.asList(FetchOptions.Builder.withLimit(1));
Key elementKey = null;
if (results.size() == 1) {
elementKey = results.get(0).getKey();
}
0
存在をテストしたい場合は、Victorの提案を使用することができますが、代わりに代わりに:
return datastore.prepare(gaeQuery)
.countEntities(FetchOptions.Builder.withLimit(1)) > 0;
上記は、エンティティ全体をフェッチするため、キーのみのクエリではありません。 –
はい、問題はありません。エンティティの存在をテストするために、最も安い方法(おそらく最も速い)。 –
エンティティのサイズによっては、これが最速ではない可能性があります。私はデータストアの帯域幅の使用料が今はなくなったと考えています。だから、私が思うに安いことが保証されています。 – mjaggard