2009年12月19日(土)

TwitterのStreaming APIで遊ぶ

  • この前はphpでやってたけど、なんとなく今回はrubyでやってみる
    • GardenHoseなアカウントで実験

今日の夕方に1時間ぐらい計測してみた結果

  • Stream自体の帯域は、32.5KiB/sec程度。
  • 16.6 tweets/sec取得できている。
  • idの進み具合は、228.0 ids/secぐらい。
  • created_at, text, id, in_reply_to_user_id, user.id, source, in_reply_to_status_idをjsonにしてzlibで圧縮
    • json文字列は平均268bytes、圧縮後は平均181bytes。

結果から予想出来ること

  • 上記の圧縮データをストリーミングさせると、181*16.6 = 2.93KiB/secぐらい。
  • もし全idがつぶやきに使われていたとすると、
    • GardenHoseはTwitter全体の16.6/228.0 = 7.28%程度のつぶやきを補足できている
    • Twitter全体のデータがとれた(FireHose)場合、32.5 / 7.28% = 446.4KiB/secぐらいの生ストリームを受けて、181 * 228 = 40.3KiB/secぐらいのjson圧縮ストリームを吐くことになる
  • 1ヶ月(30日)で
    • GardenHoseの場合、16.6 * 2592000 = 約4300万件のつぶやき、16.6 * 2592000 * 181 = 7.25GiBたまる
    • Twitter全体で、228 * 2592000 = 約5億9千万件のつぶやき、228 * 2592000 * 181 = 99.6GiBたまる

ただし

  • 上記データはこの夕方の1時間程度の状態なので、1ヶ月ぐらいやってみないと実際のところはわからないかもしれない
  • でも、大体の感覚をつかむにはいいかなと。