【问题标题】:What is maximum size/limitation of ListProperty for Google App Engine datastore?Google App Engine 数据存储区的 ListProperty 的最大大小/限制是多少?
【发布时间】:2013-11-25 18:18:59
【问题描述】:

我使用 GAE 很长时间,但找不到 ListProperty 的最大长度。

我阅读了documentation,但没有找到解决方案我想创建 ListProperty(long) 以保留大约 30 个 long 或更多值。我想将此字段用作过滤器 - 我可以像 StringListProperty 一样使用它吗?

ListProperty(long) 的大小限制是多少?

【问题讨论】:

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


    【解决方案1】:

    @marcadian 有一个很好的答案。 ListProperty 没有具体限制。

    您确实需要查看实体的数据存储限制: https://developers.google.com/appengine/docs/python/datastore/#Python_Quotas_and_limits

    两个最明显的限制是 1MB 的最大实体大小和 20000 个索引条目。

    根据您列表中的内容,可能会有所不同。您可以在该 1MB 限制内容纳 130k 8 字节长,但如果它们被编入索引,由于索引限制,您将遇到 20k 条目的障碍。

    最糟糕的是,这些限制是针对总实体大小的,所以如果您在一个实体中有两个列表,则一个列表的大小可能会受到另一个列表中的内容的限制。

    【讨论】:

    • 没错——实体大小是有限的。更危险的是索引条目限制,但不确定 20 000 个索引条目限制是否以简单的方式工作 - 因此您可以拥有更多条目,但索引值应该为 20000。
    • 我刚刚注意到您说您使用此字段作为过滤器,因此您可以在达到实体大小限制之前达到索引条目限制。
    • 你认为如果我只索引这个字段并且会有超过 20 000 种类型的值,它会打破索引约束吗?
    • 如果给定实体的 ListProperty 中有 > 20k 个值,您将打破索引约束。
    • 首先不清楚你的意思是什么:我不能在单个实体上拥有 20 001 或第二个:每个实体的索引中有 20 001 个不同的值类型?最好先问,然后假设是假的,请解释我的一些疑问。
    【解决方案2】:

    我有一个 20K 字符串的列表(虽然没有索引)。我认为长度没有限制,但每个实体大小都有限制。索引多值属性时要小心,这可能很昂贵。

    【讨论】:

    • 你的意思是写入成本很高。
    • 好吧,基本上索引会有额外的开销,如果没有必要,总是设置 indexed=False
    • 我经常使用 indexed=False 并且有一些工具可以检查哪些实体我的实体写入/读取成本很高。
    【解决方案3】:

    30 就可以了。

    Guido 对相关问题的回答:https://stackoverflow.com/a/15418435/1279005 所以最多 100 个重复值就可以了。

    我认为使用 NDB 更容易理解重复属性。你应该试试看。 将它与 Long 或 String 属性一起使用并不重要 - 如果该属性被索引,您将能够通过它进行过滤。

    【讨论】:

    • 我没有使用nbd,也不打算使用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多