приложение для iPhone с Google App Engine - PullRequest
2 голосов
/ 23 января 2010

Я создал прототип приложения для iPhone, которое использует (внутренне) SQLite в качестве своей базы данных. Намерение состояло в том, чтобы в конечном счете заставить это общаться с сервером через PHP, который использовал бы MySQL как внутреннюю базу данных.

Я только что обнаружил Google App Engine, но очень мало знаю об этом. Я думаю, что было бы неплохо использовать интерфейс Python для записи в хранилище данных - но я очень мало знаю о возможностях GQL. Я в основном написал весь рабочий код базы данных, используя MySQL, проводя внутреннее тестирование на iPhone с SQLite. Будет ли GQL предлагать ту же функциональность, что и SQL? Я читал на сайте, что он не поддерживает запросы на присоединение. Также это действительно реляционный?

По сути, я думаю, мой вопрос, может ли приложение, которое обычно использует SQL-сервер, работать так же хорошо с Google App Engine, с GQL?

Надеюсь, это понятно ... любое руководство - это замечательно.

Ответы [ 4 ]

2 голосов
/ 24 января 2010

GQL практически не предлагает функциональности; он используется только для запросов SELECT и существует только для облегчения написания запросов SELECT для программистов SQL. За кулисами он преобразует ваши запросы в объекты db.Query.

Хранилище данных App Engine вообще не является реляционной базой данных. Вы можете делать некоторые вещи, которые выглядят как реляционные, но мой совет для любого, кто имеет опыт работы с SQL, - избегать GQL любой ценой, избегать ловушек, думая, что хранилище данных совсем не похоже на RDBMS, и забывать все, что вы знаете о базе данных. дизайн. В частности, если вы что-то нормализуете, вы скоро пожалеете, что этого не сделали.

2 голосов
/ 24 января 2010

Да, Google App Engine - очень крутой продукт, но хранилище данных - это другой зверь, чем обычная база данных MySQL. Нельзя сказать, что то, что вам нужно, не может быть сделано с хранилищем данных GAE; однако это может потребовать некоторой переделки с вашей стороны.

Наиболее заметным отличием, которое вы заметили с самого начала, является то, что GAE использует объектно-реляционное отображение для своей схемы хранения данных. По сути, графы объектов сохраняются в базе данных, сохраняя там атрибуты и связи с другими объектами. Во многих случаях ORM (реляционные сопоставления объектов) довольно хорошо отображаются поверх реляционной базы данных (так работает Hibernate). Однако отображение не идеальное, и вы обнаружите, что вам нужно внести изменения, чтобы сохранить ваши данные. Кроме того, GAE имеет некоторые уникальные недостатки, которые немного усложняют ситуацию. Одно неудобство, которое меня беспокоит, это невозможность запрашивать пути атрибутов: например, msgstr "выбрать ... где dog.owner.name = 'bob'". Именно эти правила заставляют вас прочитать и понять, как работает хранилище данных GAE, прежде чем приступить к работе.

Я думаю, что GAE может хорошо работать в вашей ситуации. Может потребоваться некоторое время, чтобы понять устойчивость ORM в целом и хранилище данных GAE в деталях.

1 голос
/ 23 января 2010

Это довольно общий вопрос:)

Краткий ответ: да. Это потребует некоторого переосмысления вашей модели данных, но да, изменения состоят в том, что вы можете поддержать ее с помощью API хранилища данных GAE.

Когда вы создаете свои модели Python (рассматриваете их как таблицы), вы, безусловно, можете определить ссылки на другие модели (так что теперь у нас есть внешний ключ). Когда вы выберете эту модель, вы вернетесь к ссылочным моделям (почти как соединение).

Скорее всего, это будет работать, но это не замена для сервера MySQL.

1 голос
/ 23 января 2010

Я думаю, эта статья должна вам помочь.

Краткое описание: Облачные вычисления и разработка программного обеспечения для портативных устройств - две очень горячие технологии, которые все чаще объединяются для создания гибридных решений. Из этой статьи вы узнаете, как соединить Google App Engine, предложение Google для облачных вычислений, с iPhone, мобильной платформой Apple. Вы также узнаете, как использовать библиотеку с открытым исходным кодом TouchEngine для динамического управления данными приложений на iPhone путем подключения к облаку App Engine и кэширования этих данных для автономного использования.

...