我有一个用php + mysql编写的小应用程序,我想移植到AppEngine,但是我找不到将mysql数据移植到数据存储区的方法。
我应该如何将数据保存到数据存储中?那有可能吗?我只能看到有关Java对象持久性的文档,这是否意味着我必须将数据库移植到一堆假对象(每行一个)?
编辑:我说的是假对象,因为我不想使用它们,它们只是克服GAE设计缺点的一种方法。
我有一个30兆的表,需要通过使用对象来检查每一个GET,因此我需要为每一行创建一个对象,因此我将拥有一个45兆的Java类,其中包含成千上万的行,例如:
行Row23423 =新行(123,346,75,34,“一头母牛”);
我简直不敢相信这是唯一的方法。
这是一个想法,如何通过逐个发布对象来填充数据存储?我的意思是,就像博客中的帖子一样。您编写一个生成并保留数据的类,然后将数据与URL逐一卷曲。慢,但是可能行得通吗?
最佳答案
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指定服务器地址。
由于同一应用程序的多个版本共享同一数据存储-甚至在运行时之间也是如此-使用Java版本可以访问使用Python版本上传的数据。