AppEngineには独自のデータストアがあることを知っています。これはほとんどの場合に最適で、かなり使いやすいです。ただし、いくつかのアプリケーションに使用するMySQLデータベースがあり、それらのすべてがWebベースであるとは限りません。多くの理由でAppEngineを使用したいのですが、AppEngineアプリケーションにMySQLデータベースにアクセスさせたいと考えています。私が見つけたドキュメントには、これができるかどうかが明確に記載されていません。誰かがそれをしたか、それを行う方法を示すドキュメントへのポインタを持っていますか?
Googleは最近、GAEでのCloudSQLのサポートを発表しました--- http://googleappengine.blogspot.com/2011/10/google-cloud-sql-your-database-in-cloud.html
データベースへの直接ネットワーク接続を作成することはできません。 概要ページ は、Mysqlの使用を妨げる主な制限の概要を示しています。この場合の主な制限は「任意のネットワーク接続」です。アプリエンジン内からのみhttp(s)呼び出しを行うことができます。
JVMは、セキュリティで保護された「サンドボックス」環境で実行され、サービスとセキュリティのためにアプリケーションを分離します。サンドボックスは、アプリが他のアプリのパフォーマンスとスケーラビリティを妨げないアクションのみを実行できるようにします。たとえば、アプリはスレッドを生成したり、ローカルファイルシステムにデータを書き込んだり、任意のネットワーク接続を確立したりすることはできません。アプリはJNIやその他のネイティブコードも使用できません。 JVMは、サンドボックスの制限内で動作する任意のJavaバイトコードを実行できます。
簡単な答えは:いいえ。
MySQLにアクセスする方法は、MySQLにWebサービスインターフェイスを公開することです。
開発中のローカル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>
</ code>
クラウドを利用する
DriverManager.registerDriver(new AppEngineDriver());
c = DriverManager.getConnection("jdbc:google:rdbms://instance_name/guestbook");
はい。ただし、通常ではありません。中間として機能するWebサービスまたは単純なphpページを作成し、jsonまたはxmlでデータを渡します。
私はまだこれらすべての学習段階にありますが、これをいくつかの方法で実行できると確信しています。
「GoogleAppsScriptには、JDBCサービスを使用してJDBC経由でデータベースに接続する機能があります。現在のサポートは、MySQL、Microsoft SQL Server、Oracleにまで及びます。AppsScriptを使用すると、Google Cloud SQLでホストされているデータベースに簡単に接続できますが、機能します。他のクラウドホスティングプラットフォームやローカルデータベースでも使用できます。」 https://developers.google.com/apps-script/jdbc
(元々は App Engineの質問 から)