時間ベースの一貫性の使用
時間ベースの一貫性ポリシーでは、レプリカ・ノードに許されるマスター・ノードからの遅れの時間を示します。レプリカのデータが、マスターと比べて指定された時間以上に古い場合、ConsistencyException
がスローされます。その場合、操作を中止するか、すぐに再試行するか、間をおいてから再試行します。
この種の一貫性ポリシーが機能するには、ストア内のすべてのノードの時計が、NTPなどのプロトコルを使用して同期している必要があります。
時間ベースの一貫性ポリシーを指定するには、Types.TimeConsistency()
関数を使用します。この関数には、次の情報が必要です。
-
permissibleLag
レプリカに許されるマスター・ノードからの遅れの時間(ミリ秒)。
-
timeoutMs
permissibleLag制限を満たすためにレプリカが待機できる時間(ミリ秒)。つまり、レプリカがpermissibleLag要件をすぐには満たさない場合、マスターからの必要なデータで更新されるかどうかをこの時間の間待ちます。レプリカがtimeout期間内にpermissibleLag要件を満たさない場合、
ConsistencyException
がスローされます。
次の例では、2秒のデフォルト時間ベース一貫性ポリシーを設定します。タイムアウトは4秒です。
var nosqldb = require('nosqldb-oraclejs');
// Create a configuration object
var configuration = new nosqldb.Configuration();
configuration.proxy.startProxy = false;
configuration.proxy.host = 'localhost:7010';
configuration.storeHelperHosts = ['localhost:5000'];
configuration.storeName = 'kvstore';
configuration.defaultConsistency =
new Types.TimeConsistency(2000, 4000);
// Open the store with the specified configuration
var store = nosqldb.createStore(configuration);