『データ構造』は、コンピュータサイエンス、及びプログラミングにおいて非常に重要な概念であり、これらの理解と適切な利用は、高性能でメンテナブルなソフトウェアの開発に欠かせないものです。
一言で『データ構造』と言っても、実にさまざまな種類があり、プログラムコードで言えば、ArrayやListなどの配列が該当しますし、データベースにおけるテーブル間のRelationshipも『データ構造』と呼ぶことができると思います。
SmartBeeもそうですが、今日のWebアプリケーション開発において『データ構造』、つまりデータベースと言い換えますが、これを利用しないアプリケーション開発は無い、と言っても過言ではないくらい、身近な存在になっています。
今回は、このデータベースの『データ構造』の重要性について、いくつかのポイントを挙げてみたいと思います。
1. データの組織化と効率的なアクセス
適切な『データ構造』を適用させると、データ自体が組織化され、整理されたデータにすることができます。
組織化(整理)されたデータにすることで、親テーブルの主キーとなる値が1つあれば、それに連なる子テーブル、孫テーブルに至るまでの全てのデータが一括で引き出せるようになることがメリット(※)かと思います。
このようにデータ自体への非常に効率的なアクセスを実現することができます。
※注意
テーブル内のレコード数などによっては処理速度が劣化するなどの
デメリットがありますが、ここでは考えないものとします。
2. アルゴリズムの効率
組織化されたデータは、アルゴリズムの実行速度やメモリ使用量などを最適化することができます。
特に検索などのアルゴリズムは『データ構造』によって性能が大きく変動します。
先の例に挙げた親テーブルの主キー1つで全てのデータを引き出すSQL文を実装する場合であれば、親テーブルを主軸に子テーブル、孫テーブルを結合させる条件を記述しますが、
関数などを駆使して結合させる必要がなく、シンプルに主キーで結合させることができますので実行速度を最適化させることができます。
3. プログラムの保守性
組織化されたデータはプログラム自体の保守性を向上させますので、シンプルなプログラムコードにすることができます。
メリットとしては言わずもがなですが、プログラムバグの発生を低減させる、機能改修の際のコスト低減などが挙げられます。
逆に適切な『データ構造』が適用できていない場合のデメリットとしては...
・『データ構造』の欠点をプログラムでカバーする必要がある。
・プログラムでカバー、つまり加工しているがゆえにデータ単体の視点で考えた時に使い物にならない。
・プログラムの中に特殊な処理(条件分岐やループ処理など)が多くなり、汎用性がなくなる。
・機能改修を行う際の影響調査、コスト算出が非常に大変になる。
・プログラムバグを作りこみやすい。
・プログラム内にある特殊処理の意図が実装したプログラム製作者にしか分からなくなる。
(いつしか誰も分からなくなる...)
...などが挙げられます。
最後に
いかがでしたでしょうか。
『データ構造』の重要性を挙げてみましたが、『データ構造』をしっかりと検討したか否かで、開発するWebアプリケーションの姿(結果)が大きく変わるものだと思っています。
個人的な偏見かも知れませんが、機能仕様などを考えるより、ずっと大事なことだと思っています。
また、データベースを利用する目的としては、格納されたデータを
・整理すること
・利用すること
・加工すること
の3点になりますが、これらを実現するためにも『データ構造』を意識すると今後の開発で幸せになれるかもしれません。
最後に1つ迷言を...。
システムの姿は『データ構造』以上の存在にはなり得ない。
SmartBee

作業項目や現場情報の一括管理を可能にするクラウドサービスです。
SmartBeeを導入すれば、管理業務の負担が減るばかりでなく、点検現場の状況をリアルタイムで把握でき、ミスやコスト削減につながります。