TokyoCabinetテーブルデータベース
http://alpha.mixi.co.jp/blog/?cat=11&paged=2
HASH-WRITE 41.766 61.560 361,947,424 HASH-READ 12.473 12.511 361,947,424 HASH-RANDOM 124.149 1525.510 365,624,992
1千万件の時のランダムアクセスがSSDだとHDDより10倍以上速い
(1億データだと20倍ぐらい差が出ている)
TCTDB TCHDB put 102.04 (9800qps) 41.12 (24319qps) get 50.97 (19619qps) 41.01 (24384qps) search 53.80 (18587qps) -
TokyoCabinetにはテーブルモードがありますが、
GETだとほとんど遅くならないですね。PUTは2倍ぐらい遅くなりますが、
問題なさそう。
現在、SNSアプリではハッシュモードのみを使っていて、
テーブルモードは使ったことがないんですが、今後はテーブルモードを使おうかと思います。
バッチなんかで全ユーザーのデータを集計するためにmysqlを併用しているんですが、
テーブルモードを使えば、MySQL無しで運用できそうですし。
ただ、全国ランキングをする場合は、全ユーザーのデータをperlのリストに保持してから
sortすることになるのかな?
会員が多い場合は時間がかかりそう(^^;
MySQLの場合は、SQLでORDER BYでソートした結果がすぐ取れますし
(それはインデックスをMySQLがバックグラウンドで予め作ってるからですけどね)
ただ、100万件ソートとかになると、
C言語は1秒かからなくてもperlだと10秒ぐらいかかるだろうね
ソートに関しては検索条件を工夫すればできる模様
↓
プライマリーキーはフィールド指定して検索・ソートできる
http://blog.myrss.jp/archives/2010/04/tokyo_tyrant_to.html
あと、実は、全文検索もTCでできるようなので、
テーブルモードを使えば、mysqlなしで2chradioが実現できそう。
CPU負荷的な問題も解消して爆速になると思う。
あと静的HTMLをわざわざつくらないのでもCGIだけで動きそうだし、
頻繁にクローラーを回して、頻繁に記事をインサートしても
問題なく動きそうだし、
うーん、TCのテーブルモードで移植してみようかな?