LoginSignup
5
1

More than 5 years have passed since last update.

Twitterのストリームをさくらのクラウドに格納した

Last updated at Posted at 2017-07-05

さくらのクラウドが提供しているデータベースにTwitterのストリームのデータを格納する方法のメモです。

やりたいこと

Twitter Streaming APIからパブリックタイムラインを取得し、さくらのクラウドのデータベースアプライアンス(MariaDB)にツイートをどんどん格納する。

やったこと

さくらのクラウドでデータベースアプライアンスの作成

さくらインターネットのクラウドサービスが提供しているデータベースアプライアンスを利用・
これはコントロールパネルから作成。
1日1回の自動でのバックアップ取得やphpMyAdminが組み込まれておりWebUIから全部完結するのは便利。
あと、IP制限もコントロールパネルから設定できるので手軽でした。

TwitterのAPIキーの取得

Twitter Developersからアプリケーションのカスタマーキーなどを取得

データを集めるFluentdサーバの作成、設定

今回はCentOS 7のサーバを作成。
そこにfluentdなどを入れてゆきます。

これらをインストールして td-agent.conf に追記します。

<source>
  @type twitter
  consumer_key hogehoge
  consumer_secret hogehoge
  access_token hogehoge
  access_token_secret hogehoge

  tag input.twitter.sampling
  timeline sampling
  lang ja
  output_format flat
</source>

<match input.twitter.sampling>
  @type mysql
  host 192.168.10.100
  database sakura
  key_names id, user_id, text, created_at
  sql INSERT INTO publictw (id, userid, text, createat) VALUES (?, ?, ?, STR_TO_DATE(?, "%a %b %d %H:%i:%s +0000 %Y"))
  username sakura
  password hogehoge
  flush_interval 10s
</match>

hogehogeの部分は適切な値に変更してください。
MySQLの設定はデータベース名やUsername/Passwordもコントロールパネルから設定したものを入力してください。ちなみに今回はデータを格納するためのテーブルとして publictw と言うものを作成しています。

結果

count.PNG
ちゃんとRDBMSにデータを格納できました。

select.PNG
こんな感じで見えます。

qiita.PNG
RDBMSなのでもちろんLike構文とか使えます。

こういうデータはDynamoDBなんかのNoSQLデータベースに格納するのが鉄板かなと思っていたんですが、本物のSQL構文が使えデータの読み書きに課金されないRDBMSが今のところはベストだと思います。
RDBMSはデータ量が増えたときに辛くなりますが、それくらいのデータを蓄えてから考えたいと思います。

参考情報

以下の情報を参考にさせていただきました。ありがとうございます。

5
1
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1