2009-08-01から1ヶ月間の記事一覧
ひがさんのブログ:SQL脳からBigtable脳へ Google App Engineを使って一番悩むのは、RDBMSが使えなくなって、Bigtableを使わなければならなくなったことでしょう。 「これまでSQLでこう書いていたのが、Bigtableではそのまま実現できない、どうすればいいん…
#appengine JavaのLow-Level API(低レベルAPI)入門shin1ogawaさんの大変ありがたいまとめ! 英訳してGoogleのApp Engineドキュメントに掲載してほしいくらいですね。 個人的な思いとしては、GAE/JのDatastoreについてJDOから入るのは間違いの元だと思ってる…
http://code.google.com/p/gaevfs/ GaeVFS is an Apache Commons VFS plug-in that implements a distributed, writeable virtual file system for Google App Engine (GAE) for Java. GaeVFS is implemented using the GAE datastore and memcache APIs. Th…
App Engine未体験の方の中には、「App Engineはトランザクションをサポートしていない」ような印象を持っている方もいるかもしれませんが、そんなことはありません。App Engineのドキュメントに The App Engine datastore is strongly consistent, but it's …
あるカインドのエンティティを全部削除したい等のバッチ処理は、1つのcronジョブでちまちまやっていると時間がかかります(1回25秒で2〜300件くらい)。そんなときは同じURLで複数のcronジョブを並列で走らせれば早いです。並列実行できる処理に限りますが。…
(随時更新) グローバルなタイムスタンプ 「System#currentTimeMillis()の値」と「memcacheに記録した前回の値+1」と比較して大きい方を返す こういう部分で分散システムを意識しなきゃならない(しないとハマる)のがApp Engineの罠 ライトバックキャッシ…
ぶいてくさんのエントリ:【Google App Engine】 Entityとトランザクション3 先日、Entityとトランザクション2において、Ownedな関連を使ったUpdateサンプルを紹介したわけだが、実はこれ、大量データをINSERTすると急激に遅くなるという問題を含んでいる…
bluerabbitさんのエントリ:google app engineではマスタの取り込みが辛い しかも、マスタが正しく取り込まれたかを検証するのがまた困難で件数チェックだけでも1000件の制約にかかったりするわけです。そこで前のエントリーの 1000件以上取得する方法とかご…
shin1ogawaさんのわかりやすGAE/Jまとめ: http://www.slideshare.net/shin1ogawa/gaejava
これは大変ありがたいまとめ! JDOだと1000件以上取得できるとは知らなかった。。http://shin1o.blogspot.com/2009/08/appengine-1000.html http://shin1o.blogspot.com/2009/08/appengine-1000_15.html * Low-level APIのPreparedQueryだと1000件の上限があ…
例えばDatastore APIで多数のエンティティに読み書きしていると、数100回〜数1000回に1回くらい?(すごくおおざっぱな印象)の割合で延々とブロックされて、 com.google.appengine.api.datastore.DatastoreTimeoutException: Unknownが出たり、もしくは30秒…
http://code.google.com/intl/en/appengine/docs/java/mail/overview.html For security purposes, the sender address of a message must be the email address of an administrator for the application, or the Google Account email address of the curr…
http://code.google.com/p/asynctools/ asynctools is a library allowing you to execute Google App Engine API calls in parallel. API calls can be mixed together and queued up and then all are kicked off in parallel. Callbacks can be used to o…
チケット駆動開発のFAQ http://forza.cocolog-nifty.com/blog/2009/08/faq-611b.htmlチケット駆動開発って何だろう。。と思って読んだら、ここ数年の私の開発方法とよく似てた。私はこんな感じ: タスク(=チケット)管理ツールとしてJiraを使う 発注元の方…
以前のエントリに、ひがさんからご丁寧なコメントをいただいて、もったいないので新しいエントリにさせていただきました。 AMFでの通信なら、persistentなうちにクライアントが触る可能性のある関連は触っておくのが一番無難な気がします。 この辺は、EJB3(E…
大きめのコンポジットインデックスを作ろうとしたら、管理コンソールのインデックス状態が「Error」となってしまいました。大きめといっても、2M件くらいなので“爆発”状態ではないのですが。。MLで問い合わせしてみました。http://groups.google.com/group/g…
は、ここが参考になりそうです(試してない)。http://www.datanucleus.org/products/accessplatform_1_1/jdo/fetchgroup.html
Be Proudさん主催の勉強会「Desinger×Engineer勉強会#2」にて発表します。http://atnd.org/events/1313・タイトル:「Adobe AIR×Google App Engineの移行tips」 ・内容:Adobe AIR+RoRで構築された既存サービスをGoogle App Engineに移行 した際の苦労話を…
ローカルの開発環境とクラウドの本番環境では、Datastoreのパフォーマンスがずいぶん違います。ローカルのDatastoreはいわばエミュレーターなので、本番環境のDatastoreのもっさり感(とくに更新処理)をちゃんと再現してくれません。まして、先のエントリで…
ローカルの開発環境ではDatastoreに保存したデータがlocal_db.binというファイルに格納されます。SDK 1.2.2からはこの内容がWebブラウザから閲覧できるようになって便利になりました。しかしやはりあくまでデバッグ用ということで簡素な作りになっているよう…
現在、既存DB(全テーブル合計で100万レコードくらい)をDatastoreにインポートする作業を進めています。現状ではバルクアップロードの機能がサポートされていないので、アップロード用の簡単なツールを作って、100件ずつサーバに投げて25秒過ぎた時点で中断…