LoginSignup
40
38

運動会で理解するデータベースのインデックス

Posted at

はじめに

データベースのインデックスについて運動会の玉入れで例えてみます。夢中で玉を投げた運動会を思い出しながらインデックスを理解しましょう。下記記事の第二弾です!

※本記事はインデックスをイメージできることを目的としています。詳細なニュアンスや意味が本来と異なる場合があります

インデックスとは

そもそもインデックスとはDBから欲しいデータをより早く取得するための技術です。
最低限これだけ覚えておけば大丈夫です!

登場人物

カゴ (テーブル,コレクション)
玉 (レコード、ドキュメント)
玉を数える先生 (クエリ)

スクリーンショット 2024-05-20 13.40.59.png

カゴ(テーブル、コレクション)は玉(レコード、ドキュメント)を集めておく場所です。
玉を数える先生(クエリ)によって取り出されます。

登場人物紹介

カゴ(テーブル、コレクション)
カゴの容量(ストレージサイズ)まで玉(レコード、ドキュメント)を入れることができます。あふれると大変です。

玉(レコード、ドキュメント)
固有の製造番号が割り振られ、重さや色、製造年月日など様々な情報が詰まっています。レコードのフィールドやドキュメントのパラメーターに該当します。

先生(クエリ)
皆が欲しい玉を取り出してくれます。指定玉メーカと一致や製造年月日順に取り出したりすることがあります。複雑な条件だと先生も人間なので時間がかかることもあります。

玉入れでインデックスを読み解く

インデックスを玉入れで解釈した場合、玉の色がインデックスに該当します。
無数の白い玉の中から指定したパラメータ(玉メーカーや製造年月日)の通りに取り出すのは大変です。そこで色(インデックス)があると見分けやすく、取り出しやすくなります。

先生も白い玉だけだと玉にあるパラメーターを一個一個読む必要がありますが色で判別できると素早く取れそうです。

赤って200色あんねん

同じ色に見えても実は200色あります。同じ色で取り出して製造年月日順に並べるときにグラデーションがあると並び替えやすいですよね。ソートも範囲指定もかんたんになると思います。

スクリーンショット 2024-05-22 6.48.06.png

スクリーンショット 2024-05-22 6.49.37.png

色って何色もあんねん

運動会にはありませんが、カラフル玉(複合インデックス)という概念を紹介します。これまでは赤か白の単色でしたが一つの玉で複数色つけることもできます。カラフル玉によって複数の玉情報が視覚的にわかり複雑な情報を持つ玉でも取り出しやすくなります。

スクリーンショット 2024-05-22 6.56.45.png

色(インデックス)のデメリット

玉の挿入・更新・削除の遅延
色の追加、カラフル玉の色の追加の作業によってCRUDのCUD(挿入、更新、削除)が遅くなります。ただしR(読み取り)の部分が早くなることで、ユーザー体験の向上に繋がるため、メリットの方が大きい場合が多いです。

既存の莫大な玉に色を付与するのは時間がかかる
すでにある莫大な玉に色をつけるのは大変そうですよね。

色をつけると玉が大きくなる
色をつければつけるほど玉が大きくなる現象が起きます。カゴのサイズに気をつける必要があります。インデックスにもデータがありストレージを使用します。

まとめ

新しいこと、知らないことを理解する時はイメージできることが大切だと思っています。この記事がそんなイメージの一助になれば幸いです。

この概念は玉入れでは「xxx だよ!」といった提案お待ちしております。

最後に

私の働いている会社で経験の有無を問わず採用を行っています。
興味のある方は是非カジュアル面談から応募してみてください!

40
38
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
38