Механизм приложения и кэширование данных (в поисках решения для данных) - PullRequest
0 голосов
/ 13 ноября 2009

Я только начал играть с Google App Engine, используя php через Quercus.

Я не собираюсь перекладывать свое полное приложение на движок приложений, но думаю об обслуживании некоторых виджетов и приложений API через движок приложений. В то же время я буду поддерживать свои базы данных в mysql, так как они работают на отдельном сервере.

Я делаю разные запросы данных различной формы к моей базе данных. Вещи, как получить по дате в лат / лонг, получить по пользователю и т. Д. И т. Д.

Большинство запросов виджетов и API, которые я подозреваю, будут по-прежнему выполняться для тех же 300-400 запросов. Я не думаю, что имеет смысл перенести все мои данные в механизм приложений и в конечном итоге хранить данные в двух местах.

Я надеялся, что смогу отправлять запросы через php на внешний сервер mysql, но, очевидно, это не работает. Я получаю следующую ошибку при попытке подключения

Warning: A link to the server could not be established. url=jdbc:mysql://localhost:3306/
. что, как я предполагаю, означает, что движок приложения не может подключиться к mysql из-за настроек движка приложения, а не из-за того, что конкретно я сделал неправильно. Я проверил, что mysql работает на порту 3306.

Если предположить, что проблема в том, что App Engine не может подключиться к mysql (даже к внешней базе данных mysql), я думаю, что другой вариант - получить данные в json и сохранить их в memcache движка приложения или напрямую в хранилище данных как полный объект json, а затем хэшируйте запрос, чтобы использовать его в качестве ключа для извлечения данных.

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

Я немного удивлен, что движок приложения не может делать запросы к внешней реляционной базе данных, так как я думал, что ответы извлекаются как объекты, и «отношения» не существуют за пределами mysql.

Ответы [ 2 ]

2 голосов
/ 13 ноября 2009

Вы не можете устанавливать сокет-соединения на App Engine - только HTTP-запросы. Наилучшие варианты: либо отразить соответствующие данные в App Engine, либо попросить старое приложение предоставить API, который предоставляет соответствующие данные, и вызвать его из приложения App Engine.

1 голос
/ 13 ноября 2009

Ну, одно можно сказать наверняка: забудьте о MySQL в AppEngine.

Datastore, вероятно, будет самым быстрым, поскольку он интегрирован в платформу. Конечно, вы можете использовать HTTP-интерфейс для внешней БД, если хотите ...

...