すべてのプロダクト
Search
ドキュメントセンター

Tablestore:トンネルの作成

最終更新日:Dec 28, 2024

データテーブルのデータをリアルタイムで消費する場合は、CreateTunnel オペレーションを呼び出して、テーブルのトンネルを作成できます。1 つのデータテーブルに複数のトンネルを作成できます。トンネルを作成する際は、データテーブル名、トンネル名、およびトンネルタイプを指定する必要があります。

前提条件

  • TunnelClient インスタンスが初期化されている。

  • データテーブルが作成されている。詳細については、データテーブルの作成を参照してください。

パラメーター

リクエストパラメーター

パラメーター

説明

TableName

データテーブルの名前。

TunnelName

トンネルの名前。

TunnelType

トンネルのタイプ。有効な値:

  • BaseData: フルデータのみが消費および処理されます。

  • Stream: 増分データのみが消費および処理されます。

  • BaseAndStream: フルデータが消費および処理された後、増分データが消費および処理されます。

このパラメーターを Stream または BaseAndStream に設定すると、システムはトンネルの作成後にデータテーブルに書き込まれたデータを増分と見なします。特定の時点以降に生成された増分データを消費する場合は、増分データの startTime パラメーターを設定する必要があります。

  • startTime パラメーターの有効な値: [現在のシステム時刻 - ストリームの有効期間 + 5 分、現在のシステム時刻]。単位: ミリ秒

    説明

    ストリームの有効期間とは、増分ログの有効期間(ミリ秒単位)です。増分ログの最長有効期間は 7 日間です。データテーブルの Stream を有効にする際に、ストリームの有効期間を指定できます。ストリームの有効期間は、指定した後は変更できません。

  • 消費する増分データの endTime パラメーターも設定できます。 endTime パラメーターの値は、startTime パラメーターの値よりも大きい必要があります。

レスポンスパラメーター

パラメーター

説明

TunnelId

トンネルの ID。

ResponseInfo

リクエストで返されるその他のフィールド。

RequestId

リクエストの ID。

フルデータを消費するために使用するトンネルを作成する

次のサンプルコードは、BaseData タイプのトンネルを作成する方法の例を示しています。

// TunnelType.BaseData、TunnelType.Stream、または TunnelType.BaseAndStream タイプのトンネルを作成できます。
// この例では、BaseData タイプのトンネルが作成されます。他のタイプのトンネルを作成するには、CreateTunnelRequest の TunnelType パラメーターを必要なタイプに設定します。
private static void createTunnel(TunnelClient client, String tableName, String tunnelName) {
    CreateTunnelRequest request = new CreateTunnelRequest(tableName, tunnelName, TunnelType.BaseData);
    CreateTunnelResponse resp = client.createTunnel(request);
    System.out.println("RequestId: " + resp.getRequestId());
    System.out.println("TunnelId: " + resp.getTunnelId());
}

増分データまたは差分データを消費するために使用するトンネルを作成する

次のサンプルコードは、Stream または BaseAndStream タイプのトンネルを作成し、消費する増分データの時間範囲を指定する方法の例を示しています。

// 増分データまたは差分データを消費するために使用するトンネルを作成し、消費する増分データの時間範囲の開始タイムスタンプと終了タイムスタンプを指定します。StreamTunnelConfig で指定された設定は、BaseData タイプのトンネルには適用されません。
private static void createStreamTunnelByOffset(TunnelClient client,String tableName,String tunnelName, long startTime, long endTime){
    CreateTunnelRequest createTunnelRequest = new CreateTunnelRequest(tableName,tunnelName, TunnelType.Stream);// Stream タイプのトンネルを作成します。
    //CreateTunnelRequest createTunnelRequest = new CreateTunnelRequest(tableName,tunnelName, TunnelType.BaseAndStream);// BaseAndStream タイプのトンネルを作成します。
    StreamTunnelConfig streamTunnelConfig = new StreamTunnelConfig();  
    /*
        増分データを読み取る開始タイムスタンプと終了タイムスタンプを指定します。単位: ミリ秒。有効な値: [CurrentSystemTime - StreamExpiration + 5 分、CurrentSystemTime)。
        CurrentSystemTime は、ミリ秒単位で正確な現在のシステム時刻のタイムスタンプです。StreamExpiration は、ミリ秒単位で正確な増分ログの有効期間のタイムスタンプです。増分ログの最長有効期間は 7 日間です。データテーブルの Stream を有効にする際に、ストリームの有効期間を指定できます。
        endTime の値は、startTime の値よりも大きい必要があります。
     */
    streamTunnelConfig.setStartOffset(startTime);
    streamTunnelConfig.setEndOffset(endTime);
    createTunnelRequest.setStreamTunnelConfig(streamTunnelConfig);
    CreateTunnelResponse resp = client.createTunnel(createTunnelRequest);
    System.out.println("RequestId: " + resp.getRequestId());
    System.out.println("TunnelId: " + resp.getTunnelId());
}

FAQ

トンネルサービスを使用してデータを消費するときに「OTSTrimmedDataAccess 要求されたストリームデータは既に削除されているか、存在しません」というエラーメッセージが返された場合はどうすればよいですか?

関連情報