ラズパイとPC間でデータ共有する方法について考えてみた。
対象環境
- Raspberry Pi 3 Model B
- Raspbian Jessie 2016-09-23
目標
ラズパイのCPU温度を定期的にロギングしてアップロードしたい。
データ共有方法
- ラズパイ
- SSH接続してローカルファイルにアクセスする
- ラズパイをデータベースサーバにする
- 第三者サーバ
SSH接続してローカルファイルにアクセスする
ラズパイにSSH接続して共有する案。
データは以下のような形式を想定。
- テキストファイル(csv,tsv)
- SQLite3データベースファイル
自分の所有するデバイスだけで完結できる。第三者サーバを利用することもないため、余計なリスクやコストが不要。
ラズパイをデータベースサーバにする
ラズパイにMySQLなどのデータベースを導入する。知識がなくて追いつかない。大げさな気がする。もっと簡単にやりたい。
Google Fusion TablesをSQL文で操作する
これが最もよさそう。SQL文で制御できるのはすばらしい。
ただ、以下のようなリスクやコストがある。
触ったことがないから実装だけで難しそう。Webサービス全般に言えるが、長期安定稼動できるか不安が残る。とくにGoogleは躊躇せずサービス終了する印象がある。
Google SpreadSheetをGoogle Apps Scriptで操作する
第二候補。ただ、Fusion Tablesよりも手間が増える。Google Apps Scriptでコードを書かねばならない。
GitHubにSQLiteデータベースを配置する
第三候補。GitHubはすでに使っているため使用方法についての問題はなさそう。
ただ、共有する側は最新データを取得するために毎回サーバからファイルを取得する必要がある。必要な分だけではなく、ファイル単位。どのような単位でファイルを区切るべきか難しい。
ファイルサイズ上限もある。たしか1リポジトリあたり1GBまでだったはず。上限を超えたらURLを変更する必要がある。上限超過したときの新規リポジトリ作成や、URL変更の通知は自動化できるのか。
そもそも、このような使い方はGitHub本来の使い方ではないと思う。
オンラインストレージにデータベースを配置する
第四候補。GoogleやGitHubでの問題に加え、リビジョン管理ができない。よって、前回のファイルを削除して追加することになるだろう。
- ダウンロードリンクが毎回変わる
- どうやってそれを共有したいマシンに通知するか
- ダウンロードできない可能性がある
- ダウンロードリンクの通知ができたとしても、通知のタイムラグによってダウンロードできないことがありうる
- WebAPIの形で利用できるオンラインストレージサービスはあるのか
- 自動化できなければ意味がない
所感
データの共有に難がある。とりあえずGoogleでの共有に挑戦してみるか。最悪、今回はデータ共有を諦めてもいい。