web-dev-qa-db-ja.com

MySQLデータベースをAppEngineアプリケーションで使用できますか

AppEngineには独自のデータストアがあることを知っています。これはほとんどの場合に最適で、かなり使いやすいです。ただし、いくつかのアプリケーションに使用するMySQLデータベースがあり、それらのすべてがWebベースであるとは限りません。多くの理由でAppEngineを使用したいのですが、AppEngineアプリケーションにMySQLデータベースにアクセスさせたいと考えています。私が見つけたドキュメントには、これができるかどうかが明確に記載されていません。誰かがそれをしたか、それを行う方法を示すドキュメントへのポインタを持っていますか?

26
GPollice

Googleは最近、GAEでのCloudSQLのサポートを発表しました--- http://googleappengine.blogspot.com/2011/10/google-cloud-sql-your-database-in-cloud.html

23
Uday Shanmugam

データベースへの直接ネットワーク接続を作成することはできません。 概要ページ は、Mysqlの使用を妨げる主な制限の概要を示しています。この場合の主な制限は「任意のネットワーク接続」です。アプリエンジン内からのみhttp(s)呼び出しを行うことができます。

JVMは、セキュリティで保護された「サンドボックス」環境で実行され、サービスとセキュリティのためにアプリケーションを分離します。サンドボックスは、アプリが他のアプリのパフォーマンスとスケーラビリティを妨げないアクションのみを実行できるようにします。たとえば、アプリはスレッドを生成したり、ローカルファイルシステムにデータを書き込んだり、任意のネットワーク接続を確立したりすることはできません。アプリはJNIやその他のネイティブコードも使用できません。 JVMは、サンドボックスの制限内で動作する任意のJavaバイトコードを実行できます。

19
Peter Recore

簡単な答えは:いいえ。

MySQLにアクセスする方法は、MySQLにWebサービスインターフェイスを公開することです。

9
jldupont

SDC(Secure Data Connector) を見てください。

そして同じ質問

App EngineとMySQL

3
Manjoor

開発中のローカル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");

3
makkasi

はい。ただし、通常ではありません。中間として機能するWebサービスまたは単純なphpページを作成し、jsonまたはxmlでデータを渡します。

1
Simon

私はまだこれらすべての学習段階にありますが、これをいくつかの方法で実行できると確信しています。

  • AppsScriptsをAppEngineにリンクし、JDBCを使用してGoogleにインクします
  • SQLデータベースをGoogleCloudStorageに保存します
  • スプレッドシートスクリプトを介してAppsScriptを接続する
  • クラウドSQLを使用する

「GoogleAppsScriptには、JDBCサービスを使用してJDBC経由でデータベースに接続する機能があります。現在のサポートは、MySQL、Microsoft SQL Server、Oracleにまで及びます。AppsScriptを使用すると、Google Cloud SQLでホストされているデータベースに簡単に接続できますが、機能します。他のクラウドホスティングプラットフォームやローカルデータベースでも使用できます。」 https://developers.google.com/apps-script/jdbc

(元々は App Engineの質問 から)

0
VarthDaver

はい、できます。

Intについて読む https://cloud.google.com/sql/docs

GAEでサポートされている任意の言語で使用でき、GAEの外部からも接続できます。

0
Tiago Gouvêa