GAE in关于将实体分成两个以提高性能。(golang)

时间:2013-08-16 13:20:48

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

我有一个实体帐户,主要包含两组信息。

Account {
    a1 // Group 1 rarely change
    a2
    a3
    a4
    ...
    b1 // Group 2 change frequently
    b2
    b3
    b4
    ...
}

第一组是一般信息,不会更新太频繁,但第二组会经常更改。

我想知道我是否应该将第2组提取到另一个实体并将密钥存储在Account中,这样当我更新第2组时,我只需要放入()第2组的数据。

我担心的是,几乎所有对服务器的操作都主要需要来自组1 + 2的数据。如果我将Account分成2,我需要做两个get()来检索这两个数据。

我知道读取表单数据存储比写入便宜得多。但拆分实体不会减少对put()的调用。在这种情况下,我不知道是否应该将性能集中在put()或get()。

由于

1 个答案:

答案 0 :(得分:1)

如果组1中的数据没有更改,索引不会更新,因此更新它们不会产生金钱成本,而进行第二次提取需要付出代价。

您始终需要所有数据,因此拆分它们没有意义。

分裂带来的好处在于性能。获取/放置一个小实体比一个大实体花费的时间更少。因此,例如,如果第1组非常大(如以字节为单位的总大小)并且您不需要数据,则可以通过仅获取/放置具有第2组的实体来提高性能。这听起来不像你的情景。

如果说第1组是500KB,我会考虑拆分它。虽然如果你不得不一直提取第1组,这会使收益无效。