データベース開発のBASEモデル
リレーショナルデータベースは、信頼性と一貫性を中核として設計されています。 それらを開発したエンジニアは、トランザクションモデルに焦点を当てました。 ACIDモデル 常に保存されます。 ただし、新しい非構造化データベースモデルの出現により、ACIDが頭を悩ませています。 NoSQLデータベースモデルは、高度に構造化されたリレーショナルモデルを避け、柔軟なキー/値ストアアプローチを採用しています。 データに対するこの非構造化アプローチには、ACIDモデルの代替手段であるBASEモデルが必要です。
ACIDモデルの基本原則
ACIDモデルには4つの基本的な信条があります。
- NS 原子性 トランザクションの数により、各データベーストランザクションは、実行に「オールオアナッシング」アプローチを採用する単一のユニットであることが保証されます。 トランザクション内のいずれかのステートメントが失敗した場合、トランザクション全体がロールバックされます。
- リレーショナルデータベースはまた、 一貫性 データベースのビジネスルールを使用した各トランザクションの アトミックトランザクションのいずれかの要素がデータベースの一貫性を損なう場合、トランザクション全体が失敗します。
- データベースエンジンは強制します 隔離 同時にまたはほぼ同時に発生する複数のトランザクション間。 各トランザクションは、他のすべてのトランザクションの前または後に発生し、データベースのビュー トランザクションが最初に見ることは、その前のトランザクション自体によってのみ変更されます 結論。 トランザクションは、別のトランザクションの中間生成物を見ることはありません。
- 最終的なACIDの原則、 耐久性、トランザクションがデータベースにコミットされると、バックアップとトランザクションログを使用して永続的に保持されるようにします。 障害が発生した場合、これらのメカニズムを使用して、コミットされたトランザクションを復元できます。
BASEのコア原則
NoSQLデータベース一方、ACIDモデルが過剰であるか、実際にはデータベースの操作を妨げる状況を受け入れます。 代わりに、NoSQLは、BASEモデルとして適切に知られているよりソフトなモデルに依存しています。 このモデルは、NoSQLが提供する柔軟性と、非構造化データの管理とキュレーションに対する同様のアプローチに対応しています。 BASEは、次の3つの原則で構成されています。
- 基本的な可用性. NoSQLデータベースのアプローチは、複数の障害が発生した場合でもデータの可用性に重点を置いています。 これは、データベース管理に高度に分散されたアプローチを使用することによって実現されます。 NoSQLデータベースは、単一の大規模なデータストアを維持し、そのストアのフォールトトレランスに重点を置く代わりに、高度なレプリケーションを備えた多くのストレージシステムにデータを分散します。 万が一、障害が発生してデータセグメントへのアクセスが中断された場合でも、必ずしもデータベースが完全に停止するわけではありません。
- ソフト状態. BASEデータベースは、ACIDモデルの整合性要件をほぼ完全に放棄します。 BASEの背後にある基本的な概念の1つは、データの一貫性は開発者の問題であり、データベースで処理すべきではないということです。
- 結果整合性. NoSQLデータベースが一貫性に関して持っている唯一の要件は、将来のある時点で、データが一貫性のある状態に収束することを要求することです。 ただし、これがいつ発生するかについては保証されません。 これは、トランザクションを禁止するACIDの即時の整合性要件からの完全な逸脱です。 実行から前のトランザクションが完了し、データベースが一貫性のある状態に収束するまで 州。
BASEでは、基本的な可用性は、データソースを制御することさえできないことを意味する場合があります。 たとえば、作業の一部として公開データセットにリンクする場合があります。
相対的なユースケース
BASEモデルはすべての状況に適しているわけではありませんが、リレーショナルモデルへの厳密な準拠を必要としないデータベースのACIDモデルの柔軟な代替手段であることは確かです。
ACIDを使用するデータベースの最適なユースケースは、予測可能な入力と出力を備えた高度に構造化されたデータに依存します。 したがって、人材データベース、小売データベース、および電子医療記録は、ACIDが提供する堅牢な内部整合性チェックの恩恵を受けます。
ただし、BASEソリューションは、感情分析などのあいまいな対象に適しています。 たとえば、BASE構造のプロジェクトでは、Twitterフィードをスキャンして、特定のハッシュタグに基づいて感情を暗示する単語を探すことができます。 Twitterフィードは適切に構造化されておらず、ローカルでインスタンス化されていませんが、データストリームは データの範囲と性質が明確でなくても、クエリにプログラムされた情報 跳ねる。