Google App Engine for Java使ってみた
以前書いた、読書ポートフォリオを表示するのをWebアプリ化できないかと思って、
せっかくなのでGAE/Jを使ってみました。
一応できたのがこれ。
http://ssbstat.appspot.com/ssbstat/taka_2
が、むちゃくちゃ遅いです。
(2009/7/29追記)
遅い上に、Amazon Advertising APIにも対応していないので、アプリ殺しました。
最初考えたのが、こんな感じ。
- Stack Stock Booksから読書データを取得
- 各ISBN(ASIN)に対して、Amazon Web Serviceよりカテゴリを取得
- ISBNとカテゴリの対応を集計して、Google Chart APIでグラフ化する
一応これで目的は達成できるわけですが、
さすがに毎回AWSに問い合わせると負荷がすごそうだし、処理の無駄も大きいので、次にこうしました。
- Stack Stock Booksから読書データを取得
- ISBNとカテゴリの対応を集計して、Google Chart APIでグラフ化する
こうすると、AWSに行かなくて良い代わりに、BigTableへのアクセス回数が増えます。
しかも、ISBNの数だけBigTableに行くので、非常に効率が悪いです。
で、今度はこうしてみました。
- Stack Stock Booksから読書データを取得
- BigTableをメモリに全て読み込む
- ISBNとカテゴリの対応を集計して、Google Chart APIでグラフ化する
こうすると、AWSへのアクセスも最小に抑えつつ、BigTableへのアクセスも1回で済むのですが、
BigTableから取得できる件数は1,000件に制限されているので、
1,000以上の書籍をStack Stock Booksに登録している場合は、対応できません。
うーむ。
そもそもStack Stock Booksのデータと、BigTableのデータを、アプリ上でJOINするという発想がマズいらしい。
Stack Stock BooksのデータもBigTableに載せてしまえば良さそう。
と思ったけど、結局1,000件制限には引っかかるのか。。
うーむ。
やっぱり1,000件制限がある限り、Google App Engineを集計系のアプリで使うのはムリっぽい。