繁体   English   中英

如何将数据放入Google应用引擎的数据存储区?

[英]How do I put data into the datastore of Google's app engine?

我有一个用php + mysql写的小应用程序我想移植到AppEngine,但我找不到将我的mysql数据移植到数据存储区的方法。

我该如何将数据保存到我的数据存储区? 这甚至可能吗? 我只能看到Java对象持久性的文档,这是否意味着我必须将我的数据库移植到一堆假对象,每行一个?

编辑:我说假对象是因为我不想使用它们,它们只是克服GAE设计缺点的一种方法。

我有一个30兆的表我需要检查每个GET,通过使用我需要为每一行创建一个对象的对象,所以我有一个可能45兆的java类,有成千上万的行,如:

Row Row23423 = new Row(123,346,75,34,“a cow”);

我简直不敢相信这是唯一的方法。

这是一个想法,如何通过逐个POST对象来填充数据存储? 我的意思是,就像博客中的帖子一样。 您编写了一个生成并保留数据的类,然后逐个使用数据卷曲URL。 慢,但它可能有用吗?

这里描述如何使用批量加载器上传数据。 它还没有直接在Java中支持,但这不必阻止你 - 只需执行以下操作:

创建一个看起来像这样的app.yaml:

application: myapp
version: upload
runtime: python
api_version: 1

handlers:
- url: /remote_api
  script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
  login: admin

确保应用程序的名称是一样的你的Java应用程序的,而且版本是一样的,你正在使用的Java版本。 使用appcfg.py上传此“空”应用。

现在,按照上面链接的页面中的批量加载说明进行操作。 在运行该工具时,请使用--server = upload.latest.myapp.appspot.com指定服务器地址。

由于同一应用程序的多个版本共享相同的数据存储区 - 即使在运行时间内 - 使用Python版本上载的数据也可供Java版本访问。

有数据存储上的文件在这里

我看不到有关原始数据移植服务的任何信息,但如果您可以将MySQL数据库中的数据提取到文本文件中,那么编写脚本以使用持久性将其导入应用程序引擎的数据存储应该相对容易它提供的框架。

您的脚本将获取原始数据,转换为(Java)对象模型并将这些Java对象转换为存储。

将应用程序迁移到Googles App Engine我认为这将是一项非常重要的任务。 正如您所看到的,App Engine没有关系数据库,而是使用BigTable 这可能涉及将其导出到Java对象(以某种方式序列化)并插入它们。
你在帖子中说“假”对象,但我必须使用Java对象,我不认为它们是假的,除非你打算使用一组对象进行迁移,并为应用程序设置一个新的集合。

关于如何将关系应用程序移植到GAE数据存储区的问题没有(好的)一般答案,因为“数据”的概念在两者之间是不兼容的。 关系数据库都是关于模式的。 GAE甚至没有。 它是一个具有非常特定API的无模式持久对象数据存储区。 对于某些类型的应用程序,如果您从头开始开发环境,那么环境非常适合,但移植到它时非常棘手。

也就是说,您可以导入CSV文件,正如尼克解释的那样,您应该可以非常轻松地从MySQL导出。 GAE使用版本机制“同时”支持Java和Python。 因此,您可以使用Python设置数据存储,然后针对Java中的应用程序运行它。 (Java版本的批量加载器正在开发中。)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM