Ash*_*der 5 java google-app-engine jdo
我正在调整我们在App Engine上运行的应用程序,其中一个最大的成本是数据存储读写.我注意到写作中最大的罪犯之一就是我们坚持订单.
基本数据是Order有很多项 - 我们分别存储和关联它们如下:
@PersistenceCapable
public class Order implements Serializable {
@Persistent(mappedBy="order")
@Element(dependent = "true")
private List<Item> orderItems;
// other fields too obviously
}
@PersistenceCapable
public class Item implements Serializable {
@Persistent(dependent = "true")
@JsonIgnore
private Order order;
// more fields...
}
Run Code Online (Sandbox Code Playgroud)
appstats显示了一个带有单个项目的订单的两个数据存储库 - 但两者都使用了大量的写入.我想知道从有经验的人那里优化这个的最好方法.
AppStats数据:
real = 34ms api = 1695ms cost = 6400 billed_ops = [DATASTORE_WRITE:64]
real = 42ms api = 995ms cost = 3600 billed_ops = [DATASTORE_WRITE:36]

我所知道的一些领域可能会有所帮助:
所以,我的问题是,上述任何项目是否预示着大赢,或者是否有其他我错过的选项最好能够关注最初?
加分点:某处是否有一个很好的'数据存储写入较少的'指南'文章?
计费文档明确指出:
新实体放置(每个实体,无论实体大小):2 次写入 + 每个索引属性值 2 次写入 + 每个复合索引值 1 次写入
现有实体放置(每个实体):1 次写入 + 每个修改后的索引属性值 4 次写入 + 每个修改后的复合索引值 2 次写入
关于问题:
更新:
索引数量影响写入成本,但不影响速度。写入分两个阶段完成:保存实体数据的提交阶段和构建索引的应用阶段。该put操作在提交阶段后返回,并且不受索引数量的影响。
在您的情况下,您将一个接一个地调用两个看跌期权。正如您从 AppStats 图表中看到的那样,它们是连续发生的。您可能希望将它们作为异步操作并行执行(不确定 JDO 中是否可用)。
| 归档时间: |
|
| 查看次数: |
573 次 |
| 最近记录: |