技術記事以外

技術記事以外の振り返りやその日学んだことのちょっとしたメモなどを置く予定です

今日の学習メモ

GCPUG Spanner Day

  • Spannerの新機能であるバックアップ、もともとexport/importを使えばできたといえばできたけどより手軽にできるようになった。ひっくり返すと、あくまでバックアップ/復元なので、export/importみたいに別のインスタンスに中身移したりには使えない。
  • Spannerは色々制約があるので、既存のRDBMSをそっくりそのまま置き換えられるものではないが長所を活かして活用しよう
  • SLA対象が最低3ノードだったのが1からになったので気軽に使い始めやすくなった。スケールアウトだけでなくインもできる。
  • QueryはパースされてALTになった後、ルートサーバーに配置されてそこからリーフサーバーに振り分けで実行され、その戻ってきた結果をルートでaggregateして返す形になる。QueryExecutionPlanはこれを具体的に示したもの。
  • indexも要は普通のテーブルなので、テーブル設計時に気をつけるようなホットスポットなどには同様に気を配ろう。
  • indexに関しては、生成速度が一番早いのがテーブル作成時なので最初から見通しつけて設定するのがいいという反面、例えばゲームなどもプレイヤーレベルのように時間が経たないとデータにばらつきが生じないものはホットスポットなどの問題が起きやすいのである程度置いてからの方がいいという場合もある。

Recoli

  • Reduxだと大きなグローバルステートを1つ持ってそこに全てのステートを突っ込んでいく形になるけど、これは個々のステートを別に持ってそれぞれ必要なコンポーネントから呼び出せるようになっている。これにより、Reduxであった1つのstateを更新するとreduxからstateを読み込んでいるコンポーネント全てが再描画される問題が解決されている。
  • ReducerやActionに相当するものがなく、シンプルなライブラリ。
  • useStateと似たようなインターフェイスで使える。
  • 更新専用のAPIで呼び出し元の描画に一切影響なくステートを更新できたり、逆にuseCallbackに近いインターフェイスで値をストリーミングしてビューを更新したりできる。
  • selectorを使って、ステートを使ったcomputed valueの管理もできる。これを使うと、例えばあるステートが更新されてもそれを元にした計算値が変わらない場合はビューを描画し直さないようにできる。