FEでランタイムはnodejsを使用。Spanner概要Googleが作成し、もともとGoogle社内で使用されてきたRDB。水平スケールが可能で、CAP定理の3つを(ほぼ)選択できる唯一のエンタープライズDB。メンテナンスウィンドウが無いため、マイクロサービスのコアな部分に必要なRDBとして扱うことができそう水平スケール例えば従来のMySQLやPostgreSQLなどは読み込みはリードレプリカを横に増やすことで水平スケール(インスタンス台数を増やす。書き込みはその限りではなく、垂直スケール(インスタンスサイズを上げる。)でのみしか対応ができない。Spannerは従来のマスター・スレーブ形式とは異なり、全てのノードがReadとWriteを行うことが可能、これにより水平スケールが可能に。分散システムにおいて、3つの要素のうち2つしか同時に満たすことができないというもの。大事なのが「分散システム」という文脈。Consistency一貫性ストレージ内で共有されているデータが一貫していること。AWSのNoSQLサービスのDynamoDBであれば、トランザクションは存在せずAとPを重視されたシステム。Spannerはこの3つを、業務遂行上要求されるであろう非機能要件レベルで満たすことが可能。31dayクラスター化されてるとはいえ3台がベストプラクティスらしいので。隣の席の人月より安い!!DBの設計時に気をつける点PKをサロゲートキーにすることがアンチパターン要するにオートインクリメントがアンチパターンDATETIMEなどもXuuidが推奨v4が良い?PKの値を元にパーティションを作成するため、連続した値だと同一のパーティションに格納されてしまう同一のパーティションに値が集中してしまうとホットスポットの原因になる。インターリーブというSpanner独自のFKを用いるテーブルの親子関係を作り、同一のパーティション内に親子を共に配置させることで、JOINを最適化させる記述には独自のDDLを用いるインターリーブとサロゲートキーの2つの要素で今までのDB設計がそのまま通用しない。インターリーブの設定。})INSERTデータの挿入にはSQL文(INSERT文)は使用不可。SDKを介してリクエストを送信することでのみ挿入が行える(ここらへんNoSQLっぽい)。仰せのままにcustomにしたら動いた。Docker上でgcloudコマンド叩く必要が出てきたためDockerを途中で切り捨てた。GAEへ渡す環境変数をリポジトリ上から隠す基本、app.yamlに環境変数をベタベタと書いていくのだが、それだとパブリックリポジトリに置けないapp.yaml内から別ファイルを呼び出せるため、機微情報だけ別ファイルで管理可能https://github.com/y-ohgi/gcp-practice/blob/master/app.yaml#L5SpannerSpannerはローカルで起動できないローカルからSpanner(クラウド上の。)を叩くとレスポンスが著しく遅い。体感2秒ほど待つと帰ってくる。