category
データベース
18 件の記事
FIG-124 データウェアハウス — 川から直接汲むか、ダムに貯めてから配るか 各部署の分析を本番DBに直接つなぐか、ETLで集めてDWH(ダム)に貯めてから配るかを配管で切り替える。本番DBの負荷・お客さんの注文画面の応答・答えの鮮度がどう変わるかを比べる。 FIG-123 ベクトル検索と埋め込み — 「犬」と「猫」がお隣さんの、言葉の星屑マップ 言葉を3次元に置いた星屑の地図を回しながら、「わんちゃん」「麺類が食べたい」で探す。文字が一致しないキーワード検索は0件でも、座標の近い星を拾うベクトル検索なら意味の近い言葉が見つかる。 FIG-122 グラフデータベース — 友達の網を、引っ張ってたどる 友達関係のクモの巣をドラッグで引っ張り、起点から1人先・2人先・3人先へと線をたどる。表では1段ごとに JOIN が増え、グラフDBはたどった線の分だけで済む違いを、SQLとCypherを並べて見比べる。 FIG-121 WAL(先行書き込みログ) — 台帳を書き換える前に、裏紙にメモする 振込を1手ずつ進め、好きなところで停電させる。台帳を直接書き換えると1000円が消え、先にログへメモしておけば COMMIT 済みの振込だけを再生して、書きかけは捨てられる。 FIG-120 NoSQLとRDBMS — カチッとした表か、何でも入る段ボールか 形の違う5人分の会員データを、スキーマのある表とドキュメントDBに同時に入れる。表は入口で断り、段ボールは受け取る。年齢の平均や名前の一覧を出すと、検品の仕事が読む側に回ってくるのが分かる。 FIG-119 シャーディングとパーティショニング — 引き出しを仕切るか、タンスごと分けるか 48件の注文を、月別の棚に仕切る・会員番号で3台に分けるの2通りで並べ替える。「5月の注文」「会員#7の注文」を探して調べた件数と台数を比べ、注文の殺到に耐えられるのはどちらかも試す。 FIG-091 実行計画(EXPLAIN) — 索引が速いとは限らない 条件に当たる行の割合を動かすと、選ばれる道順がSeq ScanとIndex Scanでひっくり返る。実行して触った場所も見える。 FIG-088 コネクションプール — 受話器を上げたまま、使い回す 回線の本数を変えて6件を流すと、待ち行列が伸びたり消えたりする。毎回つなぎ直すと接続の固定費だけで時間が溶ける。 FIG-078 レプリケーション — 影武者が書き写すのを待つか、待たないか 同期/非同期を切り替えて書き込み、直後にレプリカを読むと古い残高が返ってくる様子を体験できる。 FIG-076 トランザクション分離レベル — 他人の途中経過は、どこまで見えるのか 2つのトランザクションを1ステップずつ動かし、ダーティリードやファントムが起きる瞬間とMVCCが防ぐ様子を見る。 FIG-070 楽観的ロックと悲観的ロック — 待たせるか、やり直させるか 2人が同じ行を同時に更新する様子をステップ実行し、ロック待ちとversion衝突検知の違いを掴む。 FIG-053 データベースのインデックス — 半分ずつ捨てて探す巻末索引 同じ検索を全表スキャンと索引で走らせ、比べた回数が桁違いになる様子を実測する。 FIG-049 コンシステントハッシング — ノードを足しても引っ越しは最小 リング上でノードを追加・削除し、引っ越すキーが「% 台数」方式よりずっと少ないことを実数で見比べる。 FIG-044 SQL JOIN — 2つの表を、どこまで残してくっつける? INNER/LEFT/RIGHT/FULLを切り替えると、残る行と結果表・NULLの出方が連動して変わる。 FIG-039 正規化 — 1つの事実は、1か所だけに書く 非正規形→1NF→2NF→3NFとステップを進め、重複セルがどこで消えるかをハイライトで追う。 FIG-036 トランザクションとACID — 振込の巻き戻しボタン 振込を途中で失敗させ、ロールバックで元に戻す。「全部成功か、全部なかったことか」を体感する。 FIG-023 ブルームフィルタ — 「絶対に無い」だけ即答する門番 単語を登録するとビットが立つ。問い合わせて「確実に無い」と偽陽性(あるかも)の違いを体験する。 FIG-013 N+1問題 — 職員室に10回も聞きに行かない 「1人ずつ聞く」と「名簿をまとめてもらう」を実際に走らせて、往復11回 vs 1回を体感する。