DBのインデックスを決めるフェーズについて

スポンサーリンク

Webシステムの構築を進めるうえで、いろんなことを検討して決めていかなければならないのですが、そのうちの一つとしてテーブル定義があります。

テーブルの定義を決めるためには、各カラムのデータ型や文字数、インデックスなどの要素を一つ一つ決めていかなければなりません。

それらの要素は、画面の入力仕様や表示仕様などを考慮して決めていくと思います。

入力仕様に関しては、不要なデータが入り込まないよう入り口で制御を行うと思いますので、その入力制御仕様と合わせるのも一つの考えです。

ただしインデックスに関しては、詳細設計レベルの仕様やデータの需要予測が決まらないとなかなか決めずらいと感じています。

もちろん、仕様検討(基本設計レベル)の段階でmodelでどんな処理を行うのかが想像できる場合で、その仕様が変更されない前提であればよいのですが、

アジャイルのようにスプリントごとに仕様が変化する前提で開発を進める場合だと難しいです。

また、データの需要予測に関しては、お客様から具体的な値が提供されるまで時間を要する場合があるため、どのカラムにインデックスを付与すればよいのかが判断つかないことがあります。

これは、やみくもにインデックスを付与してしまうと、処理が遅くなってしまう場合があるためです。

前置きが長くなってしまいましたが、インデックスを決定するフェーズに関しては、仕様の確定度とデータ需要予測と性能要件に依存してしまう話だと思います。

仕様が早い段階でFIXして、需要予測も確定すれば、比較的早い段階で決められると考えます。

一方で仕様の変化に対して柔軟に対応しなければならない場合や、需要予測が定まらない場合などは、暫定でDB定義を作成し、性能試験で性能要件を満たせない場合にインデックスの考慮を行えばよいのではないでしょうか?

ただし、開発の種類によると思います。あくまでも個人的な考えなので、これが正しいとは限らないです。

未分類
スポンサーリンク
エンジニアの日記