特定のアプリケーションが何をするのかを詳しく知らなければ、データベースが正しい選択であるかどうかを(私たちにとって)言うのは難しいです。ただし、決定を導くために使用できる経験則がいくつかあります。
データベースは、次の場合に適しています。
- データは複数のユーザーによって使用される場合があります。
- 同時アクティビティが可能な場合は、正しく保存する必要があります。
- 収集されたデータすべてを一度にメモリにロードする必要がない場合。
- 複雑な方法でデータを照会またはレポートできるようにしたい場合。
- 標準ツールを使用して保存されているデータに透明性を持たせたい場合。
- データストア全体を再構築する必要はなく、変更の大部分がローカライズされている場合。
- データが(階層表現ではなく)リレーショナルに適している場合。
次の場合、データベースは最良の選択ではない可能性があります。
- 1人のユーザーにのみサービスを提供します。
- 同時アクティビティはほとんどなく、変更を保存するときにデータモデル全体を再作成する必要があります。
- データが非常に少なく、一度にメモリにロードされる場合。
- データが階層的であるか、関係的にモデル化するのが難しい場合。
- アプリケーションがドキュメント指向であり、ドキュメント(ファイル)が他のユーザーに送信される場合。
- 保存するデータに大量のバイナリデータが散在している場合。
- サードパーティのツールやサービスへの依存を避けたい場合。
- データモデルの構造が頻繁に変更される可能性がある場合。
これらはすべて経験則です...データベースを使用するかどうかを決定する単一の条件はありません。すべての考慮事項を検討し、データベースを使用することで十分なメリットが得られるかどうかを判断する必要があります。
多くの環境(iPhoneなど)では、プラットフォーム上で直接利用できる組み込みのデータベースレイヤーがあります。オブジェクトリレーショナルモデリング(ORM)のインピーダンスの不一致を克服するのに役立つツール(NSCoreDataなど)もあります。このような場合、非常に単純なデータストレージにデータベースを使用することは非常に理にかなっています。
データベースを永続ストアとして使用することを簡素化するのに役立つオープンソースのデータ永続レイヤー(NHiberante、DB4Oなど)も多数あります。これらを使用できる場合は、データベースの使用を優先して方程式をシフトできます。 。
データベースを使用すると、クエリや検索機能をサポートする必要がある場合に、アプリケーションの開発を大幅に簡素化できます。リレーショナルデータベースはクエリ言語(SQL)をサポートしているため、データベースから結果を識別して取得する作業がはるかに簡単になります。データベースはクエリ操作を正しく効率的に実行するように特別に設計されているため、データベースに手間のかかる作業を任せることで、時間を大幅に節約できます。ただし、これには、適切に設計されたリレーショナルデータ構造が犠牲になります。これを作成する必要があります。
重要な考慮事項の1つは、ユーザーがアプリケーションを使用して作成/消費するデータを共有するかどうかです。アプリケーションがよりドキュメント指向である場合(Word、Excel、Powerpointなど)、ファイルベースのシリアル化モデルの方が適切な場合があります。アプリケーションのデータが共有されない場合は、データベースが理にかなっている可能性があります。
もう1つの重要な要素は、データをどれだけオープンにするかです。データベースは、明確に定義された構造(テーブル)に情報を格納します。これにより、ユーザー(およびユーザー)がデータに直接アクセスして検査することが容易になります。XMLのようなストレージ形式でもこれが可能ですが、程度はやや劣ります。