スティルハウスの書庫の書庫

はてなダイアリーで書いてた「スティルハウスの書庫」を移転してきました。

2009-01-01から1年間の記事一覧

JDOでのeagar loadingの指定方法

は、ここが参考になりそうです(試してない)。http://www.datanucleus.org/products/accessplatform_1_1/jdo/fetchgroup.html

Desinger×Engineer勉強会#2のお知らせ

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は壊れやすい

ローカルの開発環境ではDatastoreに保存したデータがlocal_db.binというファイルに格納されます。SDK 1.2.2からはこの内容がWebブラウザから閲覧できるようになって便利になりました。しかしやはりあくまでデバッグ用ということで簡素な作りになっているよう…

Datastoreの更新スピードのナゾ

現在、既存DB(全テーブル合計で100万レコードくらい)をDatastoreにインポートする作業を進めています。現状ではバルクアップロードの機能がサポートされていないので、アップロード用の簡単なツールを作って、100件ずつサーバに投げて25秒過ぎた時点で中断…

Excelの高階関数とVisual FP

Excelに高階関数が備わっているのはご存じですか? 多くの人がよく使っている、式の一括コピーのことです。例えば数値が並んでいる列があるとき、その頭のセルの右となりに式を設定して、なにがしかの式を定義をします(例えば「=A1+1」など)。そしてCtrlを…

merge-joinを明示的に実行する方法

はありません、とMLで教えてもらいました。http://groups.google.com/group/google-appengine-java/browse_thread/thread/35ede3e4a299a2e6/bb64cb6dd3e6c913#bb64cb6dd3e6c913 As long as your query consists entirely of equality filters and does not h…

アプリのversion等を取得する方法

MLで聞いたら教えてもらえました。ありがたや。。http://groups.google.com/group/google-appengine-java/browse_thread/thread/e6bfcbfafd4f6e1e You can try using ApiProxy: import com.google.apphosting.api.ApiProxy; ... String version = ApiProxy.g…

XPathをつかう

App EngineでXPathを使うときはXalanが必要でした。以下のまとめを参考にしたところ動きました。http://jx-script.blogspot.com/2009/05/gaejxml.html http://groups.google.com/group/google-appengine-java/browse_thread/thread/dda1848382d3da8/ee9b0761…

分散KVS、あるいは人の脳

Bigtable/Datastoreでプログラミングしつつ、トイレで「ブラックスワン」を読んでいると、分散KVSと人の脳が似ているとちょっと思った。 容量の心配はいらなくて、たくさん詰め込んでも遅くならない キーから値を取り出す(連想)のはまあまあ速い 書き込み…

SDKの外部JARも切り替えよう

SDKを1.2.2にアップデートしたところ、Datastoreを使う単体テストが通らなくなってしまいました(NoSuchMethodExceptionが出る)。一瞬はまりましたが、原因は、単体テスト用にEclipseのビルドパスで「外部JAR」として参照していたSDKの各種JARファイルが1.2…

BigtableとBigTable、GAEとApp Engine

ライティングの仕事をしているととても気になるのですが、「Bigtable」と「BigTable」のどっちが正式名でしょう?Bigtable論文では「Bigtable」表記なので、私はこれを使っています。でも、GoogleフェローJeff Dean様のプレゼン資料には「BigTable」と書いて…

Datastoreに長い文字列を保存する

Datastoreのエンティティでは、String型のフィールドに500文字バイト以上の文字列を保存することができません。代わりに「com.google.appengine.api.datastore.Text」型を使います(この型のフィールドにはインデックスを張れません)。しかし、いま作ってい…

memcacheとDatastoreでライトバック付きKVSをつくる

Datastoreの鬼門である集計関数の代わりのカウンター等を実装するとき、sharded counterより高速なものを求めると、「とりあえずmemcacheに書き込んで、cron/TQでDatastoreに非同期に保存する」ような仕組みがほしくなります。カウンターに限らず、「ライト…

@Transactionalでお手軽にトランザクション管理(するにはコンテナが必要でした)

Datastoreでトランザクション管理をするには、 try { tx.begin(); <更新処理> pm.makePersistent(members); tx.commit(); } finally { if (tx.isActive()) { tx.rollback(); } }といったコードを書きます。これを毎回書くのが面倒なので、AOPやテンプレー…

7/17GAEセミナーのプレゼン資料

7/17に開催予定のセミナー「Google App EngineとBigtableってどう使う?」で使用する資料です。tipsページの内容をベースに説明を補足してあります。・Google App EngineとBigtableってどう使う?資料

オバマ大統領も満足したGoogle App Engineのスケーラビリティ

日経ITproに以下の記事が掲載されました。 オバマ大統領も満足したGoogle App Engineのスケーラビリティ

分散キャッシュはあくまでキャッシュ

先の@ITの記事では、memcachedなど、分散キャッシュとして使われているKVSについては取り上げていません。なぜなら、一般的にはそれらは「RDBの置き換え」としては使われておらず、「スケールしにくいDBをスケールさせる手段」として使われているからです。…

OODBはこんなことができた

イリジウムのシステムをOODBで構築した話。昔、JavaWorldにOODB特集を書いたときにもちょっと取り上げました。Iridium - Object Oriented Databases vs Relational Databases The system includes over 66 low -earth-orbit (LEO) satellites, in order to w…

CISCはこんなことができた

http://h50146.www5.hp.com/products/software/oe/openvms/manual/vax_to_i64/HTML/DOCU_020.HTM 複雑命令セット・コンピュータ (CISC): メモリ内の位置に対して直接実行される複雑な操作も含めて,個別の命令で複雑な操作を実行するコンピュータ。このよう…

@IT「もう1つの、DBのかたち、分散Key-Valueストアとは」

@ITにて新連載「分散Key-Valueストアの本命「Bigtable」」を開始しました。 その第1回として、以下の記事が掲載されました。「もう1つの、DBのかたち、分散Key-Valueストアとは」#実は私はエヴァンゲリオンを通して見たことがありません。

JavaWorld DAY「BigtableとMapReduceがもたらす“クラウドの最終進化”とは」

JavaWorld DAY 2009でのセッション発表のお知らせです。タイトル:「BigtableとMapReduceがもたらす“クラウドの最終進化”とは」詳細URL: http://www.idg.co.jp/expo/jwday/2009/session/#S-7

クラウド構築はどんだけ大変かメモ

Underneath the Covers at Google: Current Systems and Future Directions The Joys of Real Hardware Typical first year for a new cluster: ~0.5 overheating (power down most machines in <5 mins, ~1-2 days to recover) ~1 PDU failure (~500-1000 m…

大規模サイトのスケーラビリティ確保について

スケーラビリティに関するベストプラクティス:eBayからの教訓 Facebookのデータセンターに見るMySQL活用事例 - MySQLカンファレンス QCon Tokyo 2009 に行ってきました。二日目のメモ

KVSのメモ

http://d.hatena.ne.jp/shozzy/20090302/1235962175 そう考えると、先にも書いたとおり「開発効率という点でどうなのかなぁ?」と思ってしまう。Javaで業務アプリ書くときに、「RDB、SQLは使わないで、Mapをファイルに永続化させるようにしてね」とか縛られ…

BPStudy#22 の資料です

BPStudy#22のプレゼン資料はこちらです。

セミナーのお知らせ:GAEとBigtableってどう使う?

Google App Engine(GAE)と、Googleの分散データストアBigtableに関する技術セミナーです。Googleが公開するBigtableに関する論文のほか、「Google I/O 2008」「同2009」で発表された情報を中心に紹介します。参加申し込み:こちらからお申し込みください日…

Bigtableの内部構造

Bigtableの概要 Bigtableとは 構造化データを管理するための分散化ストレージ 膨大な数の汎用サーバーをつなげてペタバイト規模のデータを扱えるよう設計されている Bigtableの歴史 およそ7人年の開発作業を経て、2005年4月からプロダクション利用を開始 200…

GAEのサーバー構成とリクエストの流れ

<Google App Engine Stackの構成(引用元)> GAE Stackの特徴 現在の利用状況 8万以上のアプリを収容 140M PV/day 20万人以上の開発者が利用 統合環境を提供 サーバーの構築や管理が不要。デプロイが容易 ログ管理、管理コンソールや各種ツールを提供 スケ…

Google App Engineのtips集

(随時更新中です。間違いなどありましたらコメントをお願いします!)このページのtinyurl: http://tinyurl.com/gaetips Datastoreのtips Bigtableの内部構造 BigtableによるDatastoreの実装 Datastoreによるクエリの実装 トランザクションとエンティティグ…