在云数据存储区中创建多个实体时,实体编写太多

时间:2016-07-31 19:26:21

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

当我在数据存储区中创建大量实体(大约1000个)时,我注意到一种奇怪的(?)行为。

我有一个REST方法,可以创建1000个相同类型的实体。我正在使用

datastore.put(entityObject);

创建实体。当我检查跟踪时间线时,我看到了:

details for main rest call

如果我查看每个后续看跌期权的详细信息,它会显示: enter image description here

并且有很多这些看涨期权!即使是“见解”也是如此。标签说: enter image description here

这是我的实体类:

import com.googlecode.objectify.Key;
import com.googlecode.objectify.annotation.Entity;
import com.googlecode.objectify.annotation.Id;
import com.googlecode.objectify.annotation.Index;
import com.sm.task.entity.Task;

@Entity(name = "TMS.Task")
public class TaskEntity {

    @Id
    private String id;

    private String title;
    private String description;

    @Index
    private String status;


    public Task toTask() {
        return new Task(
                id,
                title,
                description,                
                status);
    }

    public Key<TaskEntity> key() {
        return Key.create(TaskEntity.class, id);
    }

    public static Key<TaskEntity> keyFor(String id) {
        return Key.create(TaskEntity.class, id);
    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }

}

我没有找到导致或控制此行为的任何设置。谁能帮助我理解这个问题的原因以及如何摆脱它?

1 个答案:

答案 0 :(得分:0)

您不应进行1,000次put次调用来存储1,000个实体,而应进行2次put次调用,每次调用500个实体(只需传递要保存的实体列表)。这样更快,更有效。