数据库或表的名称是什么?

时间:2014-11-28 16:50:01

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

我是Google App Engine的新用户,NDB正在学习https://cloud.google.com/appengine/docs/python/gettingstartedpython27/usingdatastore

其中的示例有效,但指定的数据库或实体组的名称在哪里?应用程序如何知道每次都使用相同的数据库?如果他还运行相同的应用程序,我怎么不小心查询或写入别人的数据库呢?

2 个答案:

答案 0 :(得分:2)

App Engine上的每个应用程序都使用相同的数据存储,但每个应用程序只能访问自己的实体。因此不需要数据库名称。

您应用的所有实例都可以访问您的应用创建的数据存储区内的所有实体。作为应用程序开发人员,您可以基于用户ID或用户角色实施各种访问限制。例如,您可以强制每个经过身份验证的用户只能读取自己的消息,而未经身份验证的用户根本无法访问消息,或者具有系统管理员角色的用户可以删除其他用户及其消息。

如果您的应用为多个不同的客户提供服务并且您希望将其数据分开,则可以使用Multitenancy。但是,这主要是为了方便起见并防止代码中的意外错误 - 只需在数据模型和查询中使用客户ID即可达到同样的效果。

答案 1 :(得分:0)

数据存储区类型与关系数据库中的表类似。对于NDB,每个Model对应一个Kind,默认情况下,Kind的名称是您定义的Model子类的名称。在示例中,您将引用它为“问候语”。

使用Model的构造函数的parent参数指定实体组。在您引用的示例中,您可以看到父项被传递给Greeting构造函数。

在App Engine中,每个应用程序基本上都有自己的数据存储区,因此您无需指定 - 环境会为您找出它。