8303


現在web上でマンガを作るサービスを作っていて、データ構造が階層的になっています。

novel  
-chapter (コマの集合  
--entry （一つのコマのモデル  
---entryBaloon （吹き出しのモデル  
---entryCharacter （画像のモデル

という風な階層構造をbackbone.jsで作っていて、データベースもそれに準じた形で作っているのですが、entryが増えると、サーバからnovel全体をとってこようとした時のパフォーマンスが非常に悪いです。

閲覧だけならキャッシュをとっておけばいいのですが、backboneを使って編集内容を反映しているので、その度にキャッシュをアップデートする訳にもいきません。  
現状はトップで表示するものだけキャッシュを作っています。  
どうするのが適切でしょうか？

(ソースコードは <https://github.com/taizan/ecomaki> )


CC BY-SA 3.0
2015-03-24T03:14:30.033
8293
2015-03-24T06:33:19.080
2015-03-24T06:33:19.080
85
525
question
javascript ruby-on-rails mysql backbone.js
多重構造になっていて重たいクエリの処理


とりあえず、外部キーになっているカラムにインデックスを張りましょう。マイグレーションでやるなら例えば

[code]

    add_index :chapters, :novel_id
    
[/code]

です。

それ以上については、

  * プロファイルの結果
  * 想定されるデータ量
  * 要求されるパフォーマンスと現実との差異
  * すでにやったチューニング

のなにもかもがわからないので何が適切かも答えようがないです。


CC BY-SA 3.0
2015-03-24T05:50:25.847
8303
2015-03-24T05:50:25.847
5793
8293
answer