0

根据Google的文档,似乎我有两个使用Python连接到数据存储的主要选项:App Engine的NDB数据存储库和Google Cloud Datastore API为Python。App Engine上的云数据存储的客户端库 - NDB或谷歌云数据存储

我目前使用的是App Engine(标准版),但是我想要构建我的应用程序,以便可以通过迁移到计算引擎(如果需要)扩展。考虑到这一点,我应该使用哪个库? App引擎的文档指出可以使用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和云存储API非常相似,从一个移动到其他的以后就不会是问题?也许有人已经这样做了,并可能有意见。
  • NDB真的照亮App Engine有什么具体原因吗?性能?
  • 由于NDB使用云数据存储,我应该担心它最终会停止使用吗? Google已经将App Engine与最近的其他云计算产品联系起来,并且最近NDB repo还没有看到很多更新的事实让我担忧。 Google会不时停止执行某些操作。

谢谢。

+0

[google.appengine.ext.ndb和gcloud.datastore?有什么区别?](http://stackoverflow.com/questions/39441764/whats-the-difference-between-google-appengine-ext -ndb-and-gcloud-datastore) –

+1

我个人的经验是NDB拥有你需要的所有功能,并且非常成熟。我还使用CGD Api来访问其他应用程序数据存储区,并且我发现该库也是“低级别”的......您将所有的ndb.Model类功能,类中定义的实体“模式”等都丢失了。如果您做一个查询,你将recita存储在数据存储信息的原始数据,你必须手动提取属性,进行转换(即从Pickle到JSON)等。 –

回答

6

继续阅读更多内容后,我会继续回答自己的问题,希望能够为他人带来好处。

在完整阅读discussion on google-cloud-python之后,我的很多问题都可以在一定程度上得到解答。

首先,开发商对该项目的看法似乎是Google Cloud Datastore API should work on App Engine,但性能将会是worse than NDB。这当然是通过App Engine上的数据存储区API使用NDB的原因。其次,听起来开发商认为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。

如果有人有任何额外的经验,我很乐意听到你的想法。

+0

谁不知道如何安装从谷歌.appengine.ext进口ndb我有错误是说模块google.appengine.ext无法识别。但为什么我已经安装谷歌云SDK – George

+0

我也有问题。我的解决方案很难看,但它似乎工作。我所做的是创建一个Python路径编辑(.pth)文件并将其加载到site-packages文件夹中。在文件中,我提供了Google Cloud SDK的完整路径: /home/user/sdks/google-cloud-sdk/platform/google_appengine/ 然后,我使用导入命令将上述目录引入google__path__。这是我导入的: import.google.api 丑。这么难看。但它的工作。 – HondaGuy

相关问题