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

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

Datastore Low level APIのわかりやすいまとめ

#appengine JavaのLow-Level API(低レベルAPI)入門

shin1ogawaさんの大変ありがたいまとめ! 英訳してGoogleのApp Engineドキュメントに掲載してほしいくらいですね。

個人的な思いとしては、GAE/JのDatastoreについてJDOから入るのは間違いの元だと思ってるんで、
JDOから入るとどーしてもRDBのORMだという認識が頭から抜けずにはまる人が多いよぅに思うんですよね。

確かに。。間違いとまでは言わないけど、インデックスやスキャンとか理解せずにHibernate感覚で使い始めるとはまりそうですね。あとApp EngineのJDO実装に対して感じるのは、

  • 白鳥が水面下で必死に水かきしている感がある:owned関係の子を10000くらいに増やしたり、Queryで1000件以上取ったりするとかなり遅くなるなど
  • この間のbp studyで白石さんとも話したけど、JDOはAPI自体がちょっと古いし、Python版やRailsと比べて回りくどい感は否めない
EntityGroupといっても、結局「エンティティのKeyが親を持つか?持たないのか?」という事でしか無いのです。
また、JDOを使って書き込みを行っている場合は、楽観的排他制御やListPropertyのインデックス等の制御をする為にJDOが独自に付加した属性が存在していたりします。

なるほど〜、ということは、Low-level APIだけ使っているとEG単位でのACID保証はされないということかな? となると、EGの一義的な意味は「ローカリティ(複数のエンティティを物理的に近い位置にまとめる)」であって、「ACID保証の範囲」というのはあくまでJDO/JPAレベルで付加した機能である。。という理解で合っているかな。。?

追記:これは間違いでした。詳しくはコメントをご覧ください。