時間ベースの一貫性の使用

時間ベースの一貫性ポリシーでは、レプリカ・ノードに許されるマスター・ノードからの遅れの時間を示します。レプリカのデータが、マスターと比べて指定された時間以上に古い場合、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);