【问题标题】:Google App Engine storing as list vs JSONGoogle App Engine 存储为列表与 JSON
【发布时间】:2012-04-15 01:43:21
【问题描述】:

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

  1. 使用带有索引值(或者可能没有)的标准 Python 列表,然后运行一个 IN 查询并查看该数字是否在其中。

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

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

【问题讨论】:

  • 你不需要一个 in 查询 - 你只需要一个相等查询。

标签: database google-app-engine


【解决方案1】:

这是您的成本与能力的比较,选项明智:

  1. 将值放在索引列表中的成本会高得多。您将为列表中的每个值产生一次写入的成本,这可能会根据您的用户拥有的朋友数量而爆炸式增长。如果您有某些类型的复合索引,这种成本爆炸可能会更糟。好的方面是您可以对此信息运行查询:例如,您可以查询与特定用户为朋友的用户列表。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多