【问题标题】:Several questions about NDB keys关于 NDB 键的几个问题
【发布时间】:2016-12-28 09:15:46
【问题描述】:

问题 a:是否有任何绝对保证,从 NDB 成功检索的实体不会包含值为 None 的键,也不包含值为 None 的 key.id()?此保证是否写在文档的任何地方?

问题 b:密钥是否将 id 存储为 str/int?或者密钥是否将 id 存储在哈希中以使用 key.id() 进行解密?如果有,继续问题 c。

问题 c:密钥哈希中的字符数是有限的还是固定的?如果是,继续问题d。

问题d:在尝试创建Key时,构造函数在尝试创建Key时是否限制了其id的str len?如果否,请继续提问 e。

问题 e:如果我构造一个 str id 等于 len 的 key hash + 1 的 key,如果 hash 可以具有的值范围更小,如何使用 id() 解密和检索 id比我提供的 str id 的值范围?

感谢您的宝贵时间!

【问题讨论】:

    标签: hash key google-cloud-datastore app-engine-ndb


    【解决方案1】:

    回答:如果您曾经检索到一个键(或 id)为 Null 的实体,这表明 NDB 存在更大的问题。据我所知,这是不可能的,因为每个实体都需要一个密钥。不,除了source code,没有任何“保证”。

    答案b:key将id存储为str/int,见source code

    def id(self):
        """Return the string or integer id in the last (kind, id) pair, if any.
        Returns:
          A string or integer id, or None if the key is incomplete.
        """
        return self.__pairs[-1][1]
    

    由于它不使用哈希,我没有继续回答 c、d 和 e。

    【讨论】:

      猜你喜欢
      • 2022-07-20
      • 2011-05-12
      • 2011-08-24
      • 2013-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多