はじめに
こんにちは。株式会社インプルの小林です。インプルに入社して、2年が経過しました。ReactやNext.js、Laravel、Java Spring Bootなど、フロントエンドからバックエンドまで広く経験し、直近では膨大なテーブルを取り扱う現場で開発を行っています。DBの設計やSQLの実装を担当させていただく機会が増えて来たことから、DB設計について学習いたしました。今回は、DB設計の中でも「データ中心アプローチ」という考え方について学んだことをアウトプットしていきたいと思います。
データ中心アプローチとプロセス中心アプローチ
データ中心アプローチとは
データ中心アプローチ(Data Oriented Approach: DOA)とは、まずシステムで使用するデータを洗い出し、その構造や流れを整理してからシステムの機能や処理の開発を進めていく手法です。要するに、処理よりも先にデータから考えていく手法です。
データ中心アプローチと対比されるプロセス中心アプローチとは
DOAと対比される考え方として、プロセス中心アプローチ(Process Oriented Approach: POA)があります。「プロセス」とは「処理」を指し、業務プロセスに合わせてシステムの機能や処理を中心に設計し、設計過程で必要なデータを洗い出します。
なぜプロセス中心アプローチではなく、データ中心アプローチなのか
かつてのシステム開発の主流はPOAでした。しかし、現在ではこの考え方は時代遅れとみなされています。現在のシステムの処理機能や業務内容は頻繁に変更されるため、POAで開発されたシステムは、業務内容の変更に伴いシステムの見直しやデータの見直しを都度行う必要があり、改修の影響範囲が非常に大きくなります。また、処理単位で必要なデータを洗い出すため、重複するデータが存在することもあります。
例えば、部署Aと部署Bの業務システムを開発する場合、POAでは各部署の業務内容に応じた独立したシステムとなりがちです。業務内容に応じてデータ構造を設計するため、共通するデータが存在しても業務ごとに独立したデータ体系となり、冗長性が生じやすく、システム間の連携が複雑になるデメリットがあります。
対してDOAは、変化しにくいデータを中心にシステム設計を行います。複数のプロセスに応じてデータ設計を行う必要がないため、冗長性が生じにくいデータ構成となります。業務内容に変更が生じても、データの取り扱い方は変更されないため、仕様変更に柔軟に対応できるメリットがあります。よって、現在ではDOAによるシステム開発が主流となっています。
プロセス中心アプローチの例と問題点
POAでは、それぞれのプロセスにおいて必要なデータを洗い出し、それに基づいてシステムを設計します。このアプローチの問題点として、以下の点が挙げられます。
- データの重複:同じ顧客情報(仕入先情報)や商品情報が受注プロセスと発注プロセスで重複して保持される可能性が高くなります。
- 一貫性の欠如:各プロセスごとに独立したデータ構造となりがちで、データの一貫性が保たれにくくなります。
- メンテナンスの複雑化:システム変更が必要な際に、各プロセスごとにデータ構造や処理を見直す必要があり、影響範囲が広がります。
- データ冗長性:同じデータが複数箇所に存在することで、データの冗長性が高くなり、管理が難しくなります。
データ中心アプローチの例とメリット
これに対して、DOA(データ中心アプローチ)では、まず一貫したデータモデルを設計し、その上で各プロセスに対応する機能を設計します。
これにより、データの重複や一貫性の問題を回避し、システム全体の整合性を保つことができます。また、業務プロセスの変更に対しても柔軟に対応できるようになります。
DOAのメリット
- 一貫性の確保:顧客情報や商品情報は一箇所で管理されるため、データの一貫性が保たれます。
- データの再利用:一度定義されたデータモデルを複数のプロセスで再利用でき、冗長性を排除します。
- 変更に対する柔軟性:業務プロセスの変更があった場合でも、データモデルが一貫しているため、影響範囲が限定され、変更対応が容易になります。
- メンテナンスの効率化:中心となるデータモデルが一元管理されているため、メンテナンスが効率的に行えます。
このように、DOAにおけるデータ構成では、中心となるデータモデルを設計することで、システム全体の整合性と効率性を高めることができます。
中心となるデータモデルの特徴
DOA(データ中心アプローチ)における「中心となるデータモデル」とは、システム内で複数のプロセスや機能にわたって共通して利用されるデータを指します。具体的には、顧客情報や商品情報などが該当します。
- 共通性:異なるプロセスや機能で共通して必要とされるデータです。たとえば、受注と発注の両方で使用される商品情報や、顧客管理のために共通して使われる顧客情報などがこれに当たります。
- 一貫性の確保:この共通データを一元的に管理することで、データの一貫性を保ち、重複や矛盾を避けます。これにより、システム全体でデータの整合性が維持されます。
- 再利用性:中心データモデルを各プロセスが再利用するため、重複したデータ構造を設計する必要がなく、設計や開発が効率的になります。
まとめ
さて、今回はDB設計の中でも「データ中心アプローチ」という考え方について発信させていただきました。
今回はデータ中心アプローチのメリットについて触れましたが、システム開発の内容によってはプロセス中心アプローチの方が選ばれる可能性もあります。
大切なのは、顧客の求めるシステム開発のために適切な手法を選択するということです。システム開発においては、デザインパターンやアプローチの方法が多数存在し、何が正解かというものはありません。顧客の求める仕様に柔軟に対応していくためにも、システム開発手法のインプットを欠かさず続けていく必要があります。