Привет задал вопрос по этому вопросу вчера, а теперь упростил задачу, чтобы выяснить, облегчает ли ее решение / диагностику.
Я пытаюсь массово создать 500 сущностей JDO, каждая сущность имеет «Ключ» в качестве первичного ключа, две индексированные строки и одну неиндексированную строку.
Когда я создаю 500 сущностей, он использует 6% квоты записи хранилища данных (из квоты 500000), что составляет 30000 операций записи, что соответствует 60 операциям записи на одну сущность. На сервере разработки «write ops» равно 6, что согласуется с различными комментариями, сделанными в отношении записей в хранилище данных. Нет поиска и составных индексов, я просто создаю 500 сущностей.
Так почему мои сущности берут 60? Сущность JDO выглядит следующим образом:
import javax.jdo.annotations.Extension;
import javax.jdo.annotations.IdGeneratorStrategy;
import javax.jdo.annotations.PersistenceCapable;
import javax.jdo.annotations.Persistent;
import javax.jdo.annotations.PrimaryKey;
import com.google.appengine.api.datastore.Key;
@PersistenceCapable
public class Product {
@PrimaryKey
@Persistent(valueStrategy = IdGeneratorStrategy.IDENTITY)
private Key key;
@Persistent
private String productId;
@Persistent
private String productName;
@Persistent
@Extension(vendorName="datanucleus", key="gae.unindexed", value="true")
private String merchantProductId;
.
.// getters and setters here but not included in post
.
}
500 объектов создаются в цикле:
private void createBulkProducts(PrintWriter out){
int cnt = 0;
Product tmpProd = null;
PersistenceManager pm = PMF.get().getPersistenceManager();
ArrayList<Product> products = new ArrayList<Product>();
for(cnt = 0; cnt < 500; cnt++){
tmpProd = createBulkProduct(new Integer(cnt).toString());
products.add(tmpProd);
}
if(products.isEmpty() == false){
pm.makePersistentAll(products);
out.println(products.size() + " bulk products committed to database");
}
pm.close();
out.println(cnt + " bulk products inserted");
}
private Product createBulkProduct(String cnt){
Product product = new Product();
product.setMerchantProductId("mid" + cnt);
product.setProductId("pid" + cnt);
product.setProductName("the quick brown fox jumps over the lazy dog " + cnt);
return product;
}
Я работаю на GAE 1.6.1
Вся помощь / предложения с благодарностью
Craig