minato128 blog

minato128の公開メモ帳です。

読書習慣作り

積読がなかなか消化できない問題、いろいろ試した結果、習慣ができて消化できるようになった。

  • 寝る1-2時間前にTVでインストの曲を流す
    • これがトリガーになって本を読み始めることができる
    • Youtube を Fire TV Stick で再生
      • ボーカルがないほうが集中できる
    • PCで再生しない
      • 他のことがすぐできてしまうので本に集中しづらい
  • ソファーを買う
    • IKEAのアームチェアは気に入っていたが処分した
      • 座り心地は最高な分、立ち上がるコストが高い
      • 本は読めるが中断コストが高い
  • 常に複数の本を並行して読む
    • ジャンルの違う本のほうがより楽しく読み続けられる

膨大なログを低頻度だけど検索したいみたいな需要のソリューションについて考える

※特に答えはないので注意

例えば、監査ログのような類のもの。

  • 日次で少なくとも n GB 収集する
  • クエリを書いてraw logを見たい
    • 頻度は月に1回あるかないか

コスパを考えるとファイルを圧縮して Cloud Storage に放り込んでおいて、好きなときにクエリ毎課金で参照する系のソリューションで、 BigQuery や Amazon Athena になる。 Azure だとそれにあたるものがなく*1代わりに Azure Databricks (Manged Spark) を使うとよいらしいとのことだったので少し触ってみた。

azure.microsoft.com

  • 課金はVM+DBU(VMクラスタ種類毎の追加料金)
    • クラスタを立ち上げているときだけ、分単位で課金
  • notebook でクエリが書ける
    • 基本的に Azure blob に放り込んでおいてアタッチすればクエリできる
    • サンプルの400MB程度のcsvでもそこそこ速く結果が返ってくる
    • 実際のログ量で現実的な速度でクエリが返ってくるかどうかはわからない(クラスタのノード数次第)
  • dashboard で軽く可視化もできる
  • Streamを扱ったりアグリゲートして何かをすることもできる

結論として、UXや費用的には問題なさそう。一方で、別にデータ分析や複雑な変換処理がしたいわけではないので、こんなに高機能である必要もないし関心事も増えるので、要件に対してはオーバーな感はある。

Cloud Storage に入れておくログは、圧縮しつつクエリも速いため Parquet がよさそう。 列指向ファイルフォーマットの仕組みはこの記事がわかりやすかった。(概要だけ引用)

カラムナフォーマットとは、データベースの分析用途に利用されるファイルフォーマットの種類の一つです。大量のデータを扱う際に効率的に圧縮してストレージコストを下げたり、計算時に必要なデータだけを取り出して計算コストを小さくできる設計がされています。

engineer.retty.me

ちなみに BigQuery や Athena も Parquet サポートしているのであとで引っ越すこともできる。

*1:Buildでチラ見せされたAthena風の機能が年末リリースされるという噂があるがどうなんだろう?