アーキテクチャ決定記録: データベース技術の選択
状態
承認済み
コンテキスト
私たちは、スケーラブルで高性能な方法でデータを保存・取得する必要がある新しいアプリケーションを設計しています。一般的に使用される 3 種類のデータベース技術、すなわちリレーショナルデータベース、ドキュメントデータベース、イベントデータベースを特定しました。
リレーショナルデータベースは、固定スキーマのテーブルにデータを保存し、厳格なデータ整合性制約を適用します。複雑なデータ関係やトランザクションを必要とするアプリケーションに適しています。例として、MySQL、PostgreSQL、Oracle があります。
ドキュメントデータベースは、JSON のようなドキュメントにデータを保存し、スキーマレスです。柔軟なデータモデルや水平スケーリングを必要とするアプリケーションに適しています。例として、MongoDB、Couchbase、Amazon DynamoDB があります。
イベントデータベースは、データの変更をすべて記録する一連のイベントとしてデータを保存します。監査、イベントソーシング、複雑なデータ処理を必要とするアプリケーションに適しています。例として、Apache Kafka、Apache Pulsar、AWS Kinesis があります。 決定
アプリケーションの要件と制約を慎重に評価した結果、ドキュメントデータベースを使用することを決定しました。
根拠
ドキュメントデータベースを選択した理由は次のとおりです:
アプリケーションには、時間とともに進化できる柔軟なデータモデルが必要です。ドキュメントデータベースでは、スキーマレス形式でデータを保存できます。つまり、データベーススキーマを変更することなく、新しいフィールドを追加したり、既存のドキュメントの構造を変更したりできます。
アプリケーションは、大量のデータとトラフィックを処理するために水平方向にスケールする必要があります。ドキュメントデータベースはシャーディングとレプリケーションの組み込みサポートを提供しており、これにより複数のサーバーにデータを分散し、高い読み取りおよび書き込みスループットを処理できます。
アプリケーションは、高速で効率的なデータ取得を必要とします。ドキュメントデータベースは強力なインデックス作成とクエリ機能を提供しており、データを迅速かつ効率的に取得できます。
アプリケーションは、複雑なトランザクションやデータ関係を必要としません。リレーショナルデータベースはデータ整合性制約の適用や複雑なトランザクションの処理に優れていますが、私たちのアプリケーションにはそのような要件はありません。ドキュメントデータベースは、私たちのユースケースに十分な一貫性と耐久性の保証を提供できます。
結果
ドキュメントデータベースを選択することで、使用することにした特定の技術を学び、理解することに投資する必要があります。さらに、パフォーマンスとスケーラビリティを最大化するために、アプリケーションのデータモデルがドキュメントデータベースのデータモデルによく適合していることを確認する必要があります。
しかし、ドキュメントデータベースを使用する利点はコストを上回り、アプリケーションの要件と制約に最も適していると信じています。