GoogleAppEngine(PythonSDK)のndb雑感

GoogleAppEngineで動かす予定の、ちょっとしたデータベースアプリケーション(簡単なCRUD)を作るのにgoogle.appengine.ext.ndbを試しに使ってみてます。
少し使ってみて感じたことなど。

  • dbと比べて、APIの設計がよりDataStoreを効率よく使う方に向いてる(get_multiやasync周り、Keyの扱い方など)
    • パフォーマンスを上げたいときに不要となる処理が少ない
  • ちょっとした操作をするだけでもコードが複雑になりやすそう
  • 簡潔なコードで書きたいという要求とはあわなさそう
    • dbと比べて、ReferencePropertyがKeyPropertyになっているので、参照先のインスタンスの実体をとるのにコードを追加しないといけないとか

こんな感じ。
モデルに対応するフォームでCRUDを実現したいぐらいなら、db+djangoforms(ModelForm)を使うほうが簡単に見える。
APIサーバーを作る際にはndbを積極的に使ったほうがよさそう。
使い分けとか併用するのが良いかもしれない。