【发布时间】:2017-04-13 20:01:39
【问题描述】:
根据 Google 的文档,我似乎有两个使用 Python 连接到 Datastore 的主要选项:App Engine 的 NDB Datastore 库和适用于 Python 的 Google Cloud Datastore API。
我目前使用的是 App Engine(标准版),但我想构建我的应用程序,使其在需要时可以扩展,可能通过迁移到 Compute Engine 来实现。考虑到这一点,我应该使用哪个库?应用引擎的文档指出可以使用 NDB,但它似乎不再被积极开发。在撰写本文时,最后一次提交是在 6 个多月前,尽管它们以前可能是 planning some expansion。一切最终都会改用 Google Cloud Datastore API 吗?如果 NDB 被逐步淘汰,我真的不想对它产生依赖。
我还没有尝试过,但似乎在 App Engine may come with its own issues 中使用完整的 Google Cloud Datastore API。
如果有人在 App Engine - Standard 上使用过 Google Cloud Datastore API,我很乐意听取您的想法。
编辑 - 2016-11-30 - 唯一性
这个问题被标记为类似于this one。虽然有一些相似之处,但我特别提到希望选择一种能够轻松实现 App Engine 之外的增长的解决方案。在这一点上,我假设 NDB 库仅适用于 App Engine,因此如果我超越 App Engine,它将无法工作。但是,我认识到在 App Engine 上使用 NDB 可能仍然有优势,然后在我超越时切换到 Cloud Datastore API。我提出的一些相关的、更具体的问题包括:
- NDB 和 Cloud Datastore API 是否足够相似,以至于以后从一个转移到另一个不会有那么大的问题?也许有人已经这样做了,并且可能有意见。
- NDB 真正在 App Engine 上大放异彩有什么特别的原因吗?性能?
- 由于 NDB 使用 Cloud Datastore,我是否应该担心它最终会停止使用?谷歌最近让 App Engine 越来越接近其他云计算阵容,而 NDB 存储库最近没有看到很多更新这一事实让我感到担忧。 Google 确实会不时中断。
谢谢。
【问题讨论】:
-
我个人的经验是NDB具备你需要的所有功能,而且非常成熟。我还使用 CGD Api 仅用于访问其他应用程序数据存储,并且我发现该库太“低级”......你失去了所有 ndb.Model 类功能,类中定义的实体“模式”等。如果你进行查询,您将获取存储在 Datastore 中的信息的原始数据,并且您必须手动提取属性、进行转换(即从 Pickle 到 JSON)等。
标签: google-app-engine google-cloud-datastore app-engine-ndb