最新のデータベースは、ネットワークで接続された複数のノード間でデータを複製する分散データストアです。これにより、ユーザーは 1 回のトランザクションで読み取りや書き込みなどの複数のデータ操作を実行できます。ユーザーは、トランザクションの終了時にすべてのノードでデータの一貫性が保たれることを期待しています。しかし、理論的なコンピュータサイエンスでは、ブリューワーの定理 (CAP 定理とも呼ばれる) では、どの分散データストアでも次の 3 つの保証のうちの 2 つしか提供できないとされています。
一貫性:すべての読み取り操作は、最新の更新データまたはエラーを受け取ります。
可用性:すべてのデータベースリクエストは、最新の更新データが含まれていることを保証することなく、正常な応答を受け取ります。
分断耐性:分散ノード間でメッセージがドロップまたは遅延しても、システムは動作し続けます。
たとえば、ある顧客が E コマース Web サイトのカートに商品を追加した場合、他のすべての顧客にはその商品の在庫レベルが低下するはずです。お客様が最後の商品をカートに追加した場合、他のすべてのユーザーはその商品が在庫切れと表示されるはずです。トランザクション内で何らかの操作が失敗した場合、データベース設計者は選択を行う必要があります。データベースは次のいずれかを実行できます。
トランザクションをキャンセルしてエラーを返すため、可用性は低下しますが、一貫性は確保されます。カートへの追加が成功するまで、お客様は商品をカートに追加できません。また、他のお客様はすべての商品の詳細を読み込むことができません。
操作を続行すると可用性が確保されますが、一貫性が失われる可能性があります。お客様はカートに商品を追加しましたが、他のお客様には少なくとも一時的に誤った在庫レベルが表示されています。
ユースケースによっては、一貫性が重要であり、ACID データベースが好まれる場合があります。ただし、重要ではないユースケースは他にもあります。たとえば、ソーシャルメディアで友達リクエストを承諾したときに、あなたのソーシャルメディアのプロフィールで他のユーザーに表示される友達の数が一時的に間違っていても問題ありません。ただし、データがソートされている間、ソーシャルメディアフィードにアクセスできなくなることは避けたいものです。このようなシナリオでは、BASE が重要になります。