我正在创建一个Google App Engine应用程序(Python),并正在学习一般框架。我一直在研究NDB数据存储的教程和文档,但是在理解概念方面遇到了一些困难。我具有SQL数据库的丰富背景,并且从未使用过任何其他类型的数据存储系统,因此我认为这就是我遇到麻烦的地方。
我当前的理解是:NDB数据存储是实体集合(类似于DB记录),它们具有属性(类似于DB字段/列)。实体使用模型创建(类似于DB模式)。每个实体都有一个键,在存储时为其生成。这就是我遇到困难的地方,因为这些键似乎没有与SQL DB概念中的任何事物类比。它们似乎类似于表的主键,但那些更紧密地绑定到记录,并且实际上本身就是字段。这些NDB键不是实体的属性,而是与实体分开考虑的对象。如果将实体存储在数据存储中,则可以使用其键检索该实体。
我的一个重要问题是:您从哪里获取这些键?我看到的一些文档显示了简单地创建键的示例。我不明白这一点。当实体被存储时,似乎put()
方法返回一个可以稍后使用的键。那么如果原始键是由数据存储生成的,您如何只创建键并定义ID呢?
我似乎还在挣扎与键的祖先概念。您可以定义所需的任何类型的父键。有预定义的模式吗?例如,如果我有一个名为“Person”的模型子类,并创建了一个类型为“Person”的键,我是否可以将该键用作任何其他类型的父键?例如,如果我想让'Shoe'键成为'Shoe'键的子级,我是否也可以声明'Car'键为同一个'Person'键的子级?或者添加“Shoe”键后会无法再添加“Car”键?
对于来自主要SQL背景的人,我真的只想简单介绍NDB数据存储及其API。