appengine ja night #9に行ってきた。 #appengine #ajn9

おしながき

Datastoreのクエリを理解しよう

京都からKotori Web JUnit Runnerの作者でもあるbufferingsさんです。京都でもappengine ja nightの活動を行っており、ajnk2でのクエリ解説が素晴らしい!ということで東京でも発表して頂きました。
(Kotori Web JUnit RunnerはGoogle IO 2010でも紹介され、後述するslim3本でも紹介されています)


Google App Engineをやるならガチでこの発表資料は必見ですぞ!

  • Google App EngineではDBがBigtableでKVS
  • BigtableRDBMSのように複数テーブルにデータを持つ訳ではない。一個のテーブル(Entities table)にデータは全て保存される
  • Datastoreのクエリは必ずIndexを経由してデータを取得する
  • Indexで特定できないデータは取得することはできない
  • Datastoreで取得できるのはIndexのスキャンで連続した範囲のみ
  • Indexにはどんな種類があって、どのようなアクセスのされかたをするのか理解する必要がある

実際にIndexの構造とアクセスパスがどーなってるか?続きはwaveまとめ


今回の内容はDatastore徹底解説と言っていい内容だったと思う。これほどまでにまとまったドキュメントは今まではなかったし、それを日本語で丁寧に解説してくれた人はいなかった。いや、正確にはドキュメントはつい最近まではなかったというのが正しい。なぜなら上記の内容を含めDatastoreを解説された下記Slim3本が遂に発売されたからだ。

オープンソース徹底活用 Slim3 on Google App Engine for Java

オープンソース徹底活用 Slim3 on Google App Engine for Java

この本の狙いは、Google App Engineのデータストア(Bigtable)を理解し使いこなすこと。これだけに特化しています。
なぜなら、データストアを制するものがGoogle App Engineを制すると言われるくらい、データストアを使いこなすことは重要だからです。
.
.
データストアに関する、私や@shin1ogawaが持っているありったけの知識と経験がこの本には詰められています。
世界中で売られているappengineの本の中で本書以上にデータストアについて述べたものはないし、今後も登場することはないでしょう。

bufferingsさんのセッションはDatastoreを理解する高速道路に乗ったようなものでした。そして、Slim3本を買えばDatastoreは完全に抑えられるでしょう。Datastoreのクエリがどんな動きをするのかを理解し、なぜこのクエリは動かないのかがわかるでしょう。これからGoogle App Engineを始める人はbufferingsさんの資料もあるし、slim3本もあるしでうらやましい環境ですね。もう高速道路は整った。さあGoogle App Engineを始めよう。

Next gen queryを斬る!

  • 資料

appengine ja night #9 の私のセッション「Next gen queryを斬る!」のPDF資料です
http://dl.dropbox.com/u/4207279/docs/app-engine-next-gen-queries_with_note.zip

このPDFは、GoogleのAlfredさんによるGoogle I/O 2010のセッション「Next gen queries」のPDF資料(以下)に私が日本語コメントを付けたものです。
http://code.google.com/intl/ja/events/io/2010/sessions/next-gen-queries-appengine.html

kazunori_279さんはGoogle App EngineAPI Expertで、Google IO 2010で現地へ行きApp Engineのセッション及びAppEngineの開発に携わる人から直接話を聞いてきた内容でした。

  • Next gen queryでは
    • Zigzag Merge Joinが効率よくなる
    • Merge Joinがカスタムインデックスでも使用できるようになる
    • Merge Joinでソートができるようになる

って事のようです。詳しくはwaveまとめで。waveまとめに全部書いてあるからなぁー。waveまとめに感謝。


このセッション中に面白いネタが出た。それは下記で既にid:koherentさんが試してくれているようです。

昨日行われたappengine ja night #9で話題になった次の二つについて試してみました。

  • プロパティa、bに対してSingle Property Indexは作らずにComposite Indexだけを作った場合、a=1、b=2、c=3のようなフィルタを使えばComposite Index + ZigZag Scanを試せるんじゃないか。
  • プロパティa、bに対してSingle Property Indexは作らずにComposite Indexだけを作った場合、a=1のようなaだけを使ったフィルタは機能するか。

結果は機能しないぽいらしい。Single Property IndexとComposite Indexに関係性はないんじゃないかと推測していたのでちょっとビックリ。私も後日試してみる。

BDレコーダー+スマホ/PC連携サービス『Chan-Toru beta』

Chan-Toru betaとは

録画しようと思っていた番組の録画予約を忘れてしまったことはありませんか? また、テレビを前にリモコンを使って、録り貯めた番組コンテンツの整理が 面倒だと感じたことはありませんか? そんなあなたにオススメなのが、「Chan-Toru」です。 「Chan-Toru」を使えば、スマートフォンやパソコンを使って、外出先からでも好きなときに番組の録画予約をしたり、いつでも録り貯めた番組コンテンツの整理ができるようになります。最近話題のスマートフォンや、BDレコーダー(ソニー製)をお持ちの方に是非ご利用いただきたい画期的なWEBアプリケーションです。

ソニーの100%子会社であるVisionartsさんが、スマートフォンやPCブラウザ、iPad等からソニー製BDレコーダーの録画予約をできるサービス「Chan-Toru beta」を運用開始しました。

Google App Engineの利点等を簡潔にまとめられてました。

  • AppEngineを使う利点
    • Webアプリ開発に集中できる
    • 無停止バージョンアップの仕組みがはじめからある
    • 自動スケールアウト。テレビ番組はゴールデンタイムにアクセスが集中する傾向があるので、その時だけインスタンスが勝手に増える
    • 圧倒的に安く始められる
    • 初期投資がゼロだけじゃなくて、安く続けられる
    • ミドルウェアの組み合わせ検証が不要
    • セキュリティパッチなどセキュリティ対策が不要
    • バックアップに対するコストが削減出来る。バックアップ計画なども不要
  • Google App Engineとは?
    • 持たざる者への強い味方で、データセンタやインフラやネットワークのエンジニアがいない場合は強い味方になってくれる。逆にそれらを持っているところからすれば開発時の制約が厳しくなるだけのように思えるかも知れない。

近くを探す?

Datastoreでは連続したインデックスの範囲しか取得できないため1次元では表現できない位置情報は検索できない。どうやれば検索できるのか?それ「空間充填曲線:Z曲線」で出来るよという話。座標(x, y)を1次元にするために一筆書きで表現する。これ以上は私の能力では説明できない。。アルゴリズム詳しい人は本当凄いですな。ついていけません。

SDKを試しに読んでみるよ

  • 資料
    • ソース嫁

このセッションは私の中では結構wktkだった。pythonSDKソースは読んだことがほとんどなかったのでありがたかった。これからもっと読んでみよう。あと、tagomorisさんが想像以上に(いい意味で)変態だということがわかりました。ふっふっふっココはソースリーディングしたら3時間とかすぐたって最高に面白いよとか。

  • 合言葉はMakeSyncCall
  • 「空行」を楽しめ
    • 空行の楽しさは無事理解できました。

twitterのログまとめ

  • -