gaedirectを使ってGoogle App Engineのデータストアにアクセスする(1)

複数の機器からのアクセスを想定すると、クラウドにデータを保存する必要がある。今回は、JavaScript/jQueryをベースにしたライブラリである「gaedirect」を使って、Google App Engine (GAE)のデータストアにアクセスする。
GAEのデータストアはいわゆるBigtableと呼ばれるキーバリューストア(KVS)型のもので、従来からのRDBとは構造が異なっており、用語も違っている。
・kind:RDBのテーブルと類似の概念
・entity:RDBのレコードと類似の概念
・property:RDBのフィールド項目に対応する概念

  • 画面を準備する
  • プロパティ(フィールド)名と同じIDを有する項目を画面(HTML)に用意する。例えば、’tag_name’,'tag_memo’ というプロパティを有するカインド(テーブル)を作成する場合は、以下のように適宜画面要素を用意する。ユーザの入力値を使う場合は、テキストボックス等にすればOK。

    <!-- HTML -->
    <div id="tag_name"></div>
    <input type="text" id="tag_memo">
    
  • データストアに登録する
  • // JavaScript
    var kind = 'xTag'; // kind名
    var key = getUniqueKey(); // 適宜キーを生成
    var id = 'tag_name,tag_memo' // property名
    $.post(gae(),add(kind,key,id),function(res){
       // 後続処理
    });
    

    「キー値」はentityを識別するためのユニークな値で、GAEのデータストアビューアで見たときに’ID/Name’欄に表示されるもの。(GAEが自動で割り当てる本当のKeyとは異なる。)
    「プロパティの並び」はプロパティ名をカンマ区切りで並べた文字列で、先の例であれば、
    ‘tag_name,tag_memo’
    となる。間にスペース等が入るとうまく動かないので注意。

  • データストアの参照(1件)
  • 登録とほぼ同様。

    // JavaScript
    $.post(gae(),rev(kind名,キー値,参照プロパティの並び),function(res){
       // 後続処理
    });
    
  • データストアの参照(検索)
  • // JavaScript
    var kind = 'xTag'; // kind名
    var id = 'tag_name'; // 参照したいプロパティの並び
    var query = qinit(kind,id); // クエリの初期化(gaedirectの関数)
    $.get(gae(),query,function(){ // 後続処理
    });
    

    queryの属性値を設定することで参照時の動作を変えることができる。

    query['SORT'] = 'tag_name:ASCENDING'; // 昇順でソート
    query['EQUAL'] = 'tag_name:AAA'; // 'AAA'を含む
    

    これら以外に大小比較などが可能。

  • データストアの更新(1件)
  • // JavaScript
    var kind = 'xTag'; // kind名
    var id = 'tag_name,tag_memo' // property名
    $.post(gae(),upd(kind,key,id),function(res){
       // 後続処理
    });
    
  • データストアの削除(1件)
  • // JavaScript
    var kind = 'xTag'; // kind名
    var id = 'tag_name,tag_memo' // property名
    $.post(gae(),del(kind,key),function(res){
       // 後続処理
    });
    
カテゴリー: Tips タグ: パーマリンク