15. NoSQL台頭の背景 – SQLの負荷軽減
SELECT * FROM
SELECT * FROM
SELECT * FROM
SELECT * FROM
SELECT * FROM
SELECT * FROM
user WHERE user_id= 10001234;
user WHERE user_id= 10002345;
user WHERE user_id= 10003456:
user WHERE user_id= 10004567;
user WHERE user_id= 10005678;
user WHERE user_id= 10006789;
主キーのWHERE条件が違うだけの同一のクエリが、全体の大部分を占めるケ
ースがある
Mobageのユーザ管理テーブルや、mixiのログイン時刻管理テーブルなど
いずれも主キーはユーザID
ユーザIDを主キーとするテーブルは、テーブルサイズはそこまで大きくならない
1レコード100バイトとして、3000万レコードで3GBにしかならない
全データがメモリに乗るのでCPUバウンドになる
SQLがボトルネックになる → API一発で取れるNoSQLの方が高速
実はMySQLはストレージエンジンをNoSQLとして切り離して使うことができる
InnoDB memcached plugin
RDBMSとNoSQLのハイブリッド構成