なんなんだこのGoogle App Engineというのは

既存のソーシャルブックマークに不満を感じており、人がページを見ていく過程をそのまま編集して見せられるようなものがあれば、情報を得る際にもいいし、議論などが追いやすいと考えた。そこで、今まで大学の練習問題と社会ネットワーク分析用のツールしか作ったことがない私は2年振りにコードを書いてみることにした。

とりあえず言語はそれなりに使い慣れたPythonとして、あとは今流行のGoogle App Engineでも使ってみるかという軽い雰囲気でチュートリアルをこなした。いちおうRailsとかのMVC使ってるやつも概念は知ってるし、どうにかなるだろう。と思ったら、

なんだ、このデータベースは。

あれだ、すごく適当にデータモデルを作ったので、正規化とか一切なくてすごく汚いものを作っちゃったのね。で、これではだめだと思って正規化してみたのだが、どうもデータベースを扱うDataStoreがおかしいと気づいてきた。まあとはいっても実務なんかこれっぽっちもやってないわけで、気づいたのは

  • なんかリスト構造とか入れられるぞ、ということは実は全部バイナリ?
  • 他のテーブルへのポインタも入れられるぞ、ということはRelationはこれが担うのか?
  • SQLに似たアクセス手法のGqlQueryがすごく貧弱。RDBの演算が全然できないじゃないか
  • 全てのデータモデルにキーが付属してる。ってことは主キーとかの扱いも変わってくるぞ
  • ということは正規化って無意味で完全にオブジェクト指向の論理で行っていいってこと?

と考えているうちに埓があかなくなったので、「Googleを支える技術」

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

Googleを支える技術 ?巨大システムの内側の世界 (WEB+DB PRESSプラスシリーズ)

を購入して少し読んでみる。だいたい思った通りの仕様だった。ざっくりいくとあまり考えなくても効率的になるから大丈夫のようだ。そりゃそうだ。むしろ提供されているデータ構造をどんどん便利に使いこなした方がいいようだ。

なんかその辺のドキュメントの訳があがってた。
http://d.hatena.ne.jp/hamatsu1974/20080415