Google App Engine 存储为 list 与 JSON



我有一个名为User的模型,一个用户有一个属性relatedUsers,在一般格式中,它是一个整数数组。现在,有时我想检查用户的 relatedUsers 数组中是否存在某个数字。我看到两种方法可以做到这一点:

  1. 使用带有索引值(也可能不是)的标准 Python 列表,只需运行 IN 查询并查看该数字是否在那里。

  2. 拥有该用户的密钥,获取属性相关用户的值,这是一个 JSON 字符串格式的数组。解码字符串,并检查数字是否在其中。

哪一个更有效率?数字 1 的读取成本会比选项 2 高吗?并且数字 1 写入的成本会高于数字 2,因为索引每个值的成本是写入成本。如果我不索引怎么办 - 那么哪种解决方案会更好?

以下是您的成本与功能,选项明智:

  1. 将值放在索引列表中将更加昂贵。对于列表中的每个值,您将产生一次写入的成本,这可能会激增,具体取决于您的用户有多少朋友。如果您有某些类型的复合指数,这种成本爆炸可能会更糟。好的一面是,您可以对这些信息运行查询:例如,您可以查询与特定用户是好友的用户列表。

  2. 这里没有额外的索引或写入成本。问题是您丢失了查询功能。

如果您知道您只会对当前用户的朋友列表进行检查,请务必选择选项 2。否则,您可能需要更仔细地查看您的设计。

最新更新