SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Google App Engine for JavaでMySQLを使ってみる

Google Cloud SQLとBigtableのコード記述と処理スピードを比較・検討してみる

Google App Engine for JavaでMySQLを使ってみる(2)

  • X ポスト
  • このエントリーをはてなブックマークに追加

マスタ削除

Cloud SQL

リスト10 Cloud SQLでマスタ削除(delIteminfo)
    public String delItemInfo(String item_no){
        // Start Timer
        long start = System.currentTimeMillis();
        // Start Timer
        try{
            String sql = "delete from item_info where item_no = ?";  //(1)
            PreparedStatement ps = con.prepareStatement(sql);
            ps.setString(1, item_no);
            ps.executeUpdate();                                      //(2)
            // End Timer
            long stop = System.currentTimeMillis();    
            // End Timer
            long time = stop - start;    
            rv = " 実行時間:  " + time +" ms";
        }catch(SQLException e){
            rv = "接続失敗\n理由:" + e.toString();
        }catch(Exception e){
            e.printStackTrace();
            rv = "削除失敗\n理由:" + e.toString();
        }finally{
            try{
                con.close();
            }catch(Exception e){}
        }
        return rv;
    }

 レコード削除でのCloud SQL時間測定は、(1)のSQL文指定から(2)の削除実行までで特に問題はないでしょう。

Bigtable

リスト11 Bigtableでマスタ削除(delIteminfo_kv)
    public String delItemInfo_kv(String item_no){
        // Start Timer
        long start = System.currentTimeMillis();
        // Start Timer
        try{
            ds.delete(KeyFactory.createKey("item_info", item_no));  //(1)
            // End Timer
            long stop = System.currentTimeMillis();    
            // End Timer
            long time = stop - start;    
            rv = " 実行時間: " + time +" ms";
        } catch(Exception e2){
            rv = "削除不成功 " +e2;
        }
        return rv;
    }

 Bigtableでの削除処理は(1)の1行コードで済んでしまいます。繰り返しになりますが、Low-Level APIでのBigtableアクセスは決して複雑なものではありません。

削除処理時間の測定結果

表7 削除処理時間の測定結果(単位ミリ秒)
  1 2 3 4 5
Cloud SQL 削除(クラウド) 128 110 103 103 104
Cloud SQL 削除(ローカル CI) 428 340 334 323 390
Cloud SQL削除(ローカル MI) 22 42 27 28 26
Bigtable 削除(クラウド) 20 13 14 13 13
表8 削除処理時間平均(単位ミリ秒)
  全平均 2~5平均
Cloud SQL 削除(クラウド) 109.60 105.00
Cloud SQL 削除(ローカルCI) 363.00 346.75
Cloud SQL 削除(ローカルMI) 29.00 25.75
Bigtable 削除(クラウド) 14.60 13.25

 削除処理では、特に突出して時間のかかるケースがありませんが、この場合も参照を実行してからの処理になるので更新と同様の理由からの結果と言えるでしょう。

グラフ4 Cloud SQLとBigtableの削除処理時間(Y軸ミリ秒)
グラフ4 Cloud SQLとBigtableの削除処理時間(Y軸ミリ秒)

最後に

 今回の連載(2回)は、GAEでのMySQL使用を可能にするGoogle Cloud SQLを紹介する内容でしたが、

 ややCloud SQLに不利なデータを紹介する記事になってしまったようです。しかし、これも実際に測定した結果なので止むを得ないことでしょう。

 NoSQLのBigtableの方が、SQLのMySQLよりアクセスパフォーマンスが優れているのは予想通りの結果と言えます。ローカル環境でのMySQLインスタンスでの実行はオンプレミスでのMySQLサーバ利用と、かなりの程度類似していると見ることができます。従ってこの結果だけ見れば、オンプレミスMySQLの方がGAEクラウド環境でのCloud SQLよりかなりの程度パフォーマンスが良いという結果になっています。

参照サイト

 参照サイトでは登録と参照のみ実行可能にしてあります。

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Google App Engine for JavaでMySQLを使ってみる連載記事一覧
この記事の著者

清野 克行(セイノ カツユキ)

慶應義塾大学工学部電子物理専攻卒。日本IBM、日本HPで、製造装置業を中心とした業務系/基幹業務系システムのSE/マーケティングや、分散アプリケーションによる社内業務システム開発などに携わる。現在は、クラウドやAjax関連の/ソフト開発/書籍執筆/セミナー講師/コンサルティング、などを行っている。情...

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/6499 2012/04/13 10:30

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング