第10章 永続性保証

目次

受信確認ベースの永続性ポリシーの設定
同期ベースの永続性ポリシーの設定
永続性保証の設定

KVストアでの書込みは、マスター・ノードでの書込み操作(作成、更新、削除操作)の実行によって行われます。書込み操作の一環として、マスター・ノードは通常、操作が永続的ストレージに行われたことを確認した後、操作の完了とみなします。

マスター・ノードは、シャード内のレプリカ・ノードへの書込みの伝送も行います。レプリカからの受信確認を待ってから操作の完了とみなすようマスター・ノードに求めることもできます。

注意

セカンダリ・ゾーンが使用中としてストアが構成されている場合、セカンダリ・ゾーン内のレプリカに書込み受信確認が要求されることはありません。つまり、書込み受信確認を返すのは、プライマリ・ゾーン内のレプリカのみです。ゾーンの詳細は、『Oracle NoSQL Database管理者ガイド』を参照してください。

レプリカは、データベースに操作を適用してから書込み操作を受信確認します。

つまり、永続性保証は、ストア内で突発的に障害が発生した場合のデータの永続性の程度を示すポリシーです。(突発的な障害の例には、停電、ディスク・クラッシュ、物理的なメモリーの破損、アプリケーションの致命的なプログラミング・エラーなどがあります。)

永続性保証が高い場合、突発的な障害が起きた場合に書込み操作が保持される可能性が非常に高くなります。永続性保証が低い場合、突発的な障害が起きた場合に書込みが保持される可能性が非常に低くなります。

永続性保証が高いほど、ストア内の書込みスループットが低下します。これは、永続性保証が高い場合、非常に多くのディスクとネットワークのアクティビティが必要になるためです。

実行ごとに変わる非常に一時的なデータの場合、そのデータの永続性保証は最も低いレベルに設定しますが、通常は、一定程度の永続性保証を使用します。

永続性保証には、受信確認保証と同期保証という2種類の情報があります。これらの2種類の保証については、次の各項で説明します。その後、永続性保証の設定方法を示します。

受信確認ベースの永続性ポリシーの設定

マスター・ノードが書込み操作(作成、更新、削除)を行う場合、その操作を各レプリカ・ノードに送信する必要があります。レプリカ・ノードは書込み操作をローカル・データベースに適用し、レプリカとマスター・ノードとの整合性がとられます。

書込み操作のローカル・データベースへの適用に成功すると、プライマリ・ゾーン内のレプリカは受信確認メッセージをマスター・ノードに返します。このメッセージは、書込み操作が受信され、レプリカのローカル・データベースに正常に適用されたことを単に示します。セカンダリ・ゾーン内のレプリケーションかはこれらの受信確認メッセージを送信しません。

注意

この例外は、書込み操作を受信確認しないセカンダリ・ゾーン内のレプリカです。ゾーンの詳細は、『Oracle NoSQL Database管理者ガイド』を参照してください。

受信確認ベースの永続性ポリシーは、マスター・ノードがこの受信確認を待って、書込み操作が正常に完了したとみなすかどうかを示します。受信確認を待たない、過半数のプライマリ・ゾーン内のレプリカ・ノードからの受信確認を待つ、プライマリ・ゾーン内のすべてのレプリカ・ノードからの受信確認を待つのいずれかをマスター・ノードに求めることがでます。

マスターが必要とする受信確認が増えるほど、書込み操作のパフォーマンスは低下します。受信確認を待つということは、書込みメッセージがマスターからレプリカへ伝送され、レプリカで書込み操作が実行されて(これはディスクI/Oを意味します)、受信確認メッセージがレプリカからマスターへ返されるのを待つということです。コンピュータ・アプリケーションの観点からは、これには時間がかかります。

受信確認ベースの永続性ポリシーを設定する場合、次のものからの受信確認を求めることができます。

  • すべてのレプリカ。つまり、プライマリ・ゾーンに存在するシャード内のすべてのレプリカ・ノードです。ストアには複数のシャードがある場合があることに注意してください。つまり、マスター・ノードは、ストア内のすべてのマシンからの受信確認を待つわけではありません。

  • ゼロ(0)レプリカ。この場合、同期ベースの永続性ポリシーを満たすとすぐに、マスターは正常ステータスで書込み操作から復帰します。これは、次の項で説明します。

  • プライマリ・ゾーン内のレプリカの過半数。つまり、プライマリ・ゾーンに存在する5つのレプリカ・ノードがシャードにある場合、マスターは、3つのノードからの受信確認を待ちます。