永続性

Oracle NoSQL Databaseでは幅広い永続性ポリシーが提供されますが、これによりクラッシュの後にシステムで何が保証されるかが指定されます。広範なポリシーの一端では、アプリケーションは、すべてのコピーにおいてレコードが永続的なストレージに書き込まれるまで書込み要求をブロックするように、要求することができます。これによってパフォーマンスや可用性が影響を受けるのは明らかですが、アプリケーションがデータを正常に書き込むと、データが永続化され、複数の障害が同時に発生したためにすべてのコピーが一時的に使用不可能になった場合でも、リカバリできることが保証されます。もう一方では、書込み操作はシステムが書込みの存在を記録した時点で(データがまったく永続化されていなくても)すぐに戻るようにアプリケーションが要求できます。このようなポリシーでは書込みのパフォーマンスは最高ですが、永続性は保証されません。

次の図に、Oracle NoSQL Databaseを利用するアプリケーションで使用される永続性ポリシーの範囲を示します。

永続性ポリシー

データベースがレコードをディスクにいつ書き込むかや、レコードのコピーのどの部分を永続化する必要があるか(なし、すべて、単純多数)を指定することで、アプリケーションは広範な永続性ポリシーを適用できます。

定数

Oracle NoSQL Databaseのデータを変更する操作では、指定キーを格納するシャードの定数を形成するために、プライマリ・ノードの単純多数以上が使用可能であることが必要です。

定数は、書込み操作をサポートするマスターの選択を許可するために、シャードまたは一連の管理ノード内で必要なプライマリ・ノードの最小数です。定数を形成するには、最小プライマリ・ノード数がグループの過半数を表している必要があります。

注意:

定数を計算するときセカンダリ・ノードはカウントされません。

4つのゾーンを含むストアを使用する次の例を考えてみてください。ゾーン1、2および3はレプリケーション係数1のプライマリ・ゾーン、ゾーン4はレプリケーション係数1のセカンダリ・ゾーンです。各シャードのプライマリ・ノード数は3(プライマリ・ゾーンのレプリケーション係数の合計)です。3ノードのグループにおいて、2は過半数を表す最小ノード数であり、定数は2になります。ゾーン4のセカンダリ・ノードは定数には影響しません。

一般的に、定数を計算するには、まずプライマリ・レプリケーション係数(すべてのプライマリ・ゾーンのレプリケーション係数の合計)を決定します。定数の値は、プライマリ・レプリケーション係数の2分の1に1を加えた値にする必要があります(2分の1を計算するときは切捨てます)。

たとえば、プライマリ・レプリケーション係数が1の場合、定数は1です。プライマリ・レプリケーション係数が5の場合、定数は3です。プライマリ・レプリケーション係数が6の場合、定数は4です。