关于NDB密钥的几个问题

时间:2016-05-20 04:40:11

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

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

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

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

问题d:在尝试创建密钥时,构造函数在尝试创建密钥时是否限制其id的str len?如果不是,请继续回答问题。

问题e:如果我构造一个str的len等于len hash + 1的密钥,那么如果hash的值范围较小,密钥如何解密并检索id为id的id?比我提供的str id的值范围?

谢谢你的时间!

1 个答案:

答案 0 :(得分:1)

答案a:如果您检索的密钥(或ID)为Null的实体,则表明NDB存在更大的问题。据我所知,这是不可能的,因为每个实体都需要一把钥匙。不,没有"保证"其中除了source code

答案b:密钥将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。