Я знаю, что App Engine имеет свой собственный хранилище данных. Это отлично подходит для большинства случаев и довольно прост в использовании. Однако у нас есть база данных MySQL, которую мы используем для нескольких приложений, и не все из них основаны на Web. Мы хотим использовать App Engine по многим причинам, но хотели бы, чтобы приложение App Engine обращалось к нашей базе данных MySQL. В документации, которую я нашел, четко не указано, могу ли я это сделать или нет. Кто-нибудь сделал это или указал указатели на документы, которые показывают, как это сделать?
Могу ли я использовать базу данных MySQL с приложением App Engine
Ответ 1
Недавно Google анонсировала поддержку Cloud SQL в GAE - http://googleappengine.blogspot.com/2011/10/google-cloud-sql-your-database-in-cloud.html
Ответ 2
Невозможно создать прямое сетевое подключение к базе данных. На странице обзора описаны основные ограничения, которые помешали бы вам использовать Mysql - главное в этом случае - "произвольные сетевые подключения" . Вы можете делать только http (-ы) вызовы из движка приложения.
JVM работает в защищенной "песочнице" окружающей среды, чтобы изолировать приложение для обслуживания и безопасности. Песочница гарантирует, что приложения могут выполнять действия, которые не мешают с производительностью и масштабируемостью других приложений. Например, приложение не может порождать потоки, записывать данные в локальной файловой системы или сделать произвольные сетевые подключения. Приложение также не может использовать JNI или другой родной код. JVM может выполнять любую Java байт-код, который работает в песочницы.
Ответ 3
Простой ответ: NO.
Способ доступа к MySQL будет заключаться в том, чтобы открыть для него интерфейс веб-сервиса.
Ответ 4
Посмотрите SDC (Secure Data Connector).
И тот же вопрос
Ответ 5
Использование локального экземпляра MySQL во время разработки:
import com.google.appengine.api.rdbms.AppEngineDriver;
public static void makeConnection() {
try {
if (conn == null || !conn.isValid(0)) {
String url = "localhost/databasename";
String username = "root";
String password = "password";
DriverManager.registerDriver(new AppEngineDriver());
String urlForConnection = "jdbc:mysql://" + url;
conn = DriverManager.getConnection(urlForConnection, username, password);
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// in web.xml
<filter>
<filter-name>_ah_DevSocketFilter</filter-name>
<filter-class>com.google.appengine.api.socket.dev.DevSocketFilter</filter-class>
<init-param>
<param-name>use-native-sockets</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>_ah_DevSocketFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
код>
Использование облака
DriverManager.registerDriver(new AppEngineDriver());
c = DriverManager.getConnection("jdbc:google:rdbms://instance_name/guestbook");
Ответ 6
Да, но не нормальный, создавая веб-службу или простую страницу php, которая действует как промежуточная и передает данные в json или xml.
Ответ 7
Я все еще нахожусь в фазе обучения всего этого, но я вполне уверен, что вы можете сделать это сейчас несколькими способами:
- Свяжите сценарии приложений приложений с App Engine и используйте JDBC и зачеркните его в Google
- Храните свою базу данных SQL в облачном хранилище Google
- Подключить скрипты приложений через скрипты электронной таблицы
- Используйте свой Cloud SQL
"Google Apps Script имеет возможность подключаться к базам данных через JDBC с помощью службы Jdbc. Текущая поддержка распространяется на MySQL, Microsoft SQL Server и Oracle. Приложения Script упрощают подключение к базам данных, размещенным на Google Cloud SQL, но также работает с другими облачными платформами и даже локальными базами данных". https://developers.google.com/apps-script/jdbc
(исходно из Вопрос о приложении)
Ответ 8
Да, вы можете.
Читайте о int https://cloud.google.com/sql/docs
Вы можете использовать его на любом языке, поддерживаемом GAE, и подключаться к нему извне GAE.