2009/10/10 オフ会ログ 出席者:浅海、佐藤、毛利 開催地:株式会社あゆた事務所 RDBで実現していたアプリケーションをkey-valueストア(App EngineのDatastore)に適用する際にはどのようなデータモデルを設計すべきかについてEdgeSNSを題材に検討を行った。 図は多対多の検討。 RDBでは関連テーブルを作成しJOINすることで多対多を実現していたが、key-valueストアではJOINは使用できない。 Datastore上で多対多を実現する場合の方法の一つとしてListプロパティを使用する方法がある。 ただし、Listに格納する件数が増えるとパフォーマンスが低下する。 回避方法としてデータエンティティとListプロパティ用エンティティを分割する方法がある。 Listプロパティ用エンティティにフィルタをかける際にkeyのみを取得するようにすることでProtocolBuffersによってシラアライズされているエンティティがデシリアライズされるコストを削減することができる。 (参考:「Google App Engine for Java [実践]クラウドシステム構築」p.163 ) |