Как поместить данные в хранилище данных движка приложений Google? - PullRequest
4 голосов
/ 28 августа 2009

У меня есть небольшое приложение, написанное на php + mysql. Я хочу портировать на AppEngine, но я просто не могу найти способ перенести мои данные mysql в хранилище данных.

Как мне сохранить данные в моем хранилище данных? Это вообще возможно? Я могу видеть только документацию для персистентности Java-объектов. Значит ли это, что я должен портировать свою базу данных на кучу поддельных объектов, по одному на строку?

Редактировать: я говорю поддельные объекты, потому что я не хочу их использовать, они просто способ преодолеть недостаток дизайна GAE.

У меня есть таблица 30 мегабайт, которую я должен проверять на каждом GET, используя объекты, мне нужно было бы создать объект для каждой строки, поэтому у меня был бы класс java, состоящий, может быть, из 45 мегабайт с тысячами и тысячами строк: :

Row Row23423 = новая строка (123,346,75,34, «корова»);

Я просто не могу поверить, что это единственный путь.

Вот идея, а как насчет заполнения хранилища данных путем размещения объектов один за другим? Я имею в виду, как сообщения в блоге. Вы пишете класс, который генерирует и сохраняет данные, а затем вы свернете URL с данными, один за другим. Медленно, но это может сработать?

Ответы [ 4 ]

4 голосов
/ 28 августа 2009

Как загрузить данные с помощью массового загрузчика, описано здесь . Он пока не поддерживается напрямую в 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.

0 голосов
/ 29 августа 2009

Нет (хорошего) общего ответа на вопрос о том, как перенести реляционное приложение в хранилище данных GAE, потому что понятие «данные» несовместимо между ними. Реляционные базы данных - все о схеме. GAE даже не имеет. Это постоянное объектное хранилище данных без схемы с очень специфическими API. Среда отлично подходит для определенных типов приложений, если вы разрабатываете с нуля, но портировать ее довольно сложно.

Тем не менее, как объясняет Ник, вы можете импортировать CSV-файлы, которые вы сможете легко экспортировать из MySQL. GAE поддерживает Java и Python «одновременно», используя механизм версий. Таким образом, вы можете настроить свое хранилище данных на Python, а затем запустить его для своего приложения на Java. (Java-версия массового загрузчика находится в стадии разработки.)

0 голосов
/ 28 августа 2009

Перенос приложения в Googles App Engine Я думаю, что это будет довольно сложной задачей. Как вы видели, у App Engine нет реляционной базы данных, вместо этого она использует BigTable . Это, вероятно, потребует экспорта его в объекты Java (каким-либо образом сериализованного) и вставки их.
Вы говорите «поддельные» объекты в своем посте, но я, так или иначе, буду вынужден использовать объекты Java, и я не думаю, что они будут поддельными, если вы не планируете использовать один набор объектов для миграции и новый набор для приложения.

0 голосов
/ 28 августа 2009

Документация по хранилищу данных здесь .

Я не вижу ничего о сервисе портирования необработанных данных, но если вы можете извлечь данные из базы данных MySQL в текстовые файлы, тогда будет относительно легко написать скрипт для импорта его в хранилище данных движка приложения. с использованием предоставленных им сред персистентности.

Ваш сценарий будет принимать ваши необработанные данные, преобразовывать их в (Java) объектную модель и импортировать эти объекты Java в хранилище.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...