firebaseの設計思想

firebaseの設計思想とはRDSなどの正規化とは大きく異なるため、柔軟な発想が必要になっていきそうです。

基本的には以下のような考え方になりそうです。

  1. insert,put時にがんばる(たくさん登録する)
  2. select時には複雑なことをしなくでもデータを取得できるようにしておく

正規化をするとネストしがちですが、それもバットケースのようです。

Firebase公式には以下のように書かれています。

https://firebase.google.com/docs/database/ios/structure-data?hl=ja

トランザクションについて

また、insert,put時にがんばる感じになる(同じデータを複数箇所に登録する)ので、トランザクションが気になるところですが、公式にはこの辺に記載があります。

https://firebase.google.com/docs/database/web/save-data?hl=ja

fan-out

ちなみにこの、がんばる感じ、と言っている方法は「fan-out」というのがかっこいい?言い方のようです。

https://firebase.googleblog.com/2015/10/client-side-fan-out-for-data-consistency_73.html

を見てみると、どんな感じでデータを保存しているかイメージがつかめます。

そもそもモバイルアプリベースでの設計思想になっているため、ネットワークが不安定な環境下でのリクエストに耐えられるようなかんがえになっているっぽいです。

このあたりの設計思想について日本語でまとめられた記事としては

http://qiita.com/1amageek/items/64bf85ec2cf1613cf507

が参考になります。実際にどう書くか、は別にしてどういう考え方で取り組むか、という点で目を通しておくとよさそうです。

React Redux導入例

React Reduxに導入する際の具体的な例としては

http://qiita.com/gonta616/items/278a7e81a8b624d9621e

が参考になります。

React Redux saga 導入例

redux-sagaを使う場合には

https://github.com/kuy/redux-saga-examples/tree/4271fd98bd0383e44536bd1910b944c387b0e218/microblog

が参考になります。