バックエンド・API・データ · 中級
データベース:選んで後悔しない
一行でいうと: ほとんどの場合、リレーショナルデータベースが正しい答えであり、他の選択はすべて一文で述べられる理由が必要だ。
デフォルトでリレーショナルな理由
一貫性、柔軟なクエリ、壊れたデータを防ぐ制約、成熟したツール。「リレーショナルの制限」と見なされるほとんどのことは、正しいスキーマとインデックスで解決される。
ドキュメントストアはレコード間で構造が本当に異なるときに適している;キーバリューはキャッシュと一時的な状態に;時系列は指標に。これらは追加であり代替ではない。
未来を決定する意思決定
キー。安定していて不変;ビジネス情報をキーとして使うな。
制約。外部キー、一意性、非NULL。ストア内の制約はコードのチェックに勝る——考えていなかったパスも捉える。
時間。一貫した明示的なタイムゾーンで、レコードごとに作成時刻と更新時刻を持って保存する。
実際にシステムを壊すもの
一つの代わりに何百もの呼び出しを生成するループ内のクエリ、フィルタリングするカラムの欠落したインデックス、ロックする長いトランザクション。三つとも実際のボリュームでのみ現れる。
さらに深く
最初の日から遅いクエリのロギングを有効にし、毎週確認する。インデックスを追加するとき、測定する——不要なインデックスは書き込みを遅くしてスペースを占有し、すべてのクエリプランがそれで改善するわけではない。