Вопрос

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

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

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

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

Это было полезно?

Решение

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

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

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

Другие советы

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

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

Я думаю, что это Статья должно помочь тебе.

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

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

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top