やってみる

アウトプットすべく己を導くためのブログ。その試行錯誤すらたれ流す。

データの共有方法について考えてみた

ラズパイとPC間でデータ共有する方法について考えてみた。

対象環境

目標

ラズパイのCPU温度を定期的にロギングしてアップロードしたい

データ共有方法

  • ラズパイ
    • SSH接続してローカルファイルにアクセスする
    • ラズパイをデータベースサーバにする
  • 第三者サーバ
    • Google Fusion TablesをSQL文で操作する
    • Google SpreadSheetをGoogle Apps Scriptで操作する
    • GitHubSQLiteデータベースを配置する
    • オンラインストレージにデータベースを配置する

SSH接続してローカルファイルにアクセスする

ラズパイにSSH接続して共有する案。

データは以下のような形式を想定。

  • テキストファイル(csv,tsv)
  • SQLite3データベースファイル

自分の所有するデバイスだけで完結できる。第三者サーバを利用することもないため、余計なリスクやコストが不要。

ラズパイをデータベースサーバにする

ラズパイにMySQLなどのデータベースを導入する。知識がなくて追いつかない。大げさな気がする。もっと簡単にやりたい。

Google Fusion TablesをSQL文で操作する

これが最もよさそう。SQL文で制御できるのはすばらしい。

ただ、以下のようなリスクやコストがある。

  • 認証
    • キーの取得や管理
    • 認証方法の調査と実装
  • API学習
  • HTTPリクエスト
  • リクエスト上限
  • 仕様変更
    • 認証
    • API
    • 制限
  • サービス終了

触ったことがないから実装だけで難しそう。Webサービス全般に言えるが、長期安定稼動できるか不安が残る。とくにGoogleは躊躇せずサービス終了する印象がある。

Google SpreadSheetをGoogle Apps Scriptで操作する

第二候補。ただ、Fusion Tablesよりも手間が増える。Google Apps Scriptでコードを書かねばならない。

GitHubSQLiteデータベースを配置する

第三候補GitHubはすでに使っているため使用方法についての問題はなさそう。

ただ、共有する側は最新データを取得するために毎回サーバからファイルを取得する必要がある。必要な分だけではなく、ファイル単位。どのような単位でファイルを区切るべきか難しい。

ファイルサイズ上限もある。たしか1リポジトリあたり1GBまでだったはず。上限を超えたらURLを変更する必要がある。上限超過したときの新規リポジトリ作成や、URL変更の通知は自動化できるのか。

そもそも、このような使い方はGitHub本来の使い方ではないと思う。

オンラインストレージにデータベースを配置する

第四候補GoogleGitHubでの問題に加え、リビジョン管理ができない。よって、前回のファイルを削除して追加することになるだろう。

  • ダウンロードリンクが毎回変わる
    • どうやってそれを共有したいマシンに通知するか
  • ダウンロードできない可能性がある
    • ダウンロードリンクの通知ができたとしても、通知のタイムラグによってダウンロードできないことがありうる
  • WebAPIの形で利用できるオンラインストレージサービスはあるのか
    • 自動化できなければ意味がない

所感

データの共有に難がある。とりあえずGoogleでの共有に挑戦してみるか。最悪、今回はデータ共有を諦めてもいい。