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

时间:2009-08-28 12:13:12

标签: java database google-app-engine

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

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

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

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

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

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

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

4 个答案:

答案 0 :(得分:4)

如何使用批量加载程序上传数据here。它还没有直接在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用户访问。

答案 1 :(得分:0)

有关于数据存储区here的文档。

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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