google-app-engine - App Engine 上 Cloud Datastore 的客户端库 - NDB 或 google-cloud-datastore

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

根据 Google 的文档,似乎我有两个主要选项可以使用 Python 连接到 Datastore:App Engine 的 NDB Datastore 库和适用于 Python 的 Google Cloud Datastore API。

我目前使用的是 App Engine(标准版),但我想构建我的应用程序,使其在需要时可以超越标准,可能是通过迁移到 Compute Engine。考虑到这一点,我应该使用哪个库? App Engine 的文档指出可以使用 NDB,但似乎不再积极开发它了。在撰写本文时,最后一次提交是在 6 个多月前,尽管看起来它们之前可能是 planning some expansion .一切最终都会改用 Google Cloud Datastore API 吗?如果 NDB 被淘汰,我真的不想对它产生依赖。

我还没有尝试过,但似乎在 App Engine 中使用完整的 Google Cloud Datastore API may come with its own issues .

如果有人有在 App Engine - 标准版上使用 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 确实会时不时地停止服务。

谢谢。

最佳答案

阅读更多内容后,我将继续回答我自己的问题,希望对其他人有所帮助。

看完discussion on google-cloud-python总而言之,我的许多问题都可以得到一定程度的回答。

首先,开发人员对该项目的意见似乎是Google Cloud Datastore API should work on App Engine , 但性能将是 worse than NDB .这当然是在 App Engine 上使用 NDB 而不是 Datastore API 的原因。

其次,听起来开发人员认为 NDB 既复杂又相当成熟,并且似乎一致支持 its eventual inclusion in the Cloud Datastore python library .因此,NDB 似乎不太可能停产。最有可能的是,它最终可能只需要包含在更广泛的 gcloud 库集中。

第三,开发者表示 NDB support beyond App Engine is being actively developed ,所以如果我的项目超出了 App Engine,NDB 到那时可能已经在更多环境中可用,因此不需要切换到 Cloud Datastore API。此外,超越标准 App Engine 的下一步是灵活环境,which seems to already support NDB nicely .

所有这一切都表明我应该清楚地继续推进 NDB,受益于它在 App Engine 上更好的性能和 ORM 功能,除非 Google 对此事的意见/方向在未来发生变化,否则我很可能会在 Google Cloud 上的其他环境中继续使用 NDB 的选项。我打算使用 NDB 并期待它最终包含在 google-cloud-python 中。

如果有人对此事有任何其他经验,我很想听听您的想法。

关于google-app-engine - App Engine 上 Cloud Datastore 的客户端库 - NDB 或 google-cloud-datastore,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40872410/

相关文章:

python - 定义 Appengine Datastore 模型后要测试什么

java - 如果不是多态性,我如何对这些类进行建模

python - NDB key.get() 给出 'unicode' object has no attribute 'get' 错误

python - GAE NDB 访问结构化重复列表中的子实例(字段)

android - 特定项目使用哪个 MBaaS 平台 : Parse or Google Cloud

javascript - 如何在提交表单时启用后退按钮

python - GAE 数据存储实体的自动删除或过期

gwt - 在 GWT 应用程序中创建应用程序引擎的数据存储实体时出错

google-app-engine - 我可以在没有 goapp 工具/构建器的情况下运行 Appengine 应用程序吗?

python - 另一个 StructuredProperty 中的 StructuredProperty。如何?