キャッシュという技術
とりあえず書く。
DBの情報をキャッシング
一度DBに問い合わせた情報は、変数やキャッシュサーバーにキャッシングを行い、その値を参照しましょう、そうすれば次からはDBに問い合わせる手間が省ける。という技術。
方法
- Applicationスコープに保存して、Webアプリ全体で共有
- データ取得クラスのメンバとしてCacheもをたす
- phpだとAPC使う
- memcachedとか外部のキャッシュサーバー使う
- 外部にキャッシュのデータを持たすことで、複数サーバーがいても大丈夫
- Ehcache、Terracottaとゆーのがあるみたいだ
- Java用
しっかりやりたいなら、別途キャッシュサーバーを設ける事が、ベストプラクティスとし定着しているっぽいです(ネット流し見調べ)
実装のイメージ
初回アクセス時
Web App ⇔ キャッシュ ⇔ DB
次回アクセス時
Web App ⇒ キャッシュ
更新系クエリ
Web App ⇔ キャッシュ、DB
//あくまでイメージ //ローカルキャッシュの場合 public class DB操作クラス { Map<Integer, Map<String, String>> cache = new HashMap<Integer, Map<String, String>>(); public Map<String, String> getデータ(Integer id) { data = cache.get(id); if(data == null) { data = データ取得処理; cache.put(id, data); } return data; }
データがあったら、そのまま返す。無かったらDB問い合わせ、って感じ。
多分、外部キャッシュサーバー使っても流れは同じ。
こりゃいいわー!と思った。今度試す!