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

Tablestore:トンネルの作成

最終更新日:Aug 02, 2026

Tablestore SDK for Java を使用して、データテーブル用の BaseData、ストリーム、または BaseAndStream トンネルを作成します。

前提条件

機能の説明

createTunnel を呼び出して、データテーブル用のトンネルを作成します。同一のデータテーブルに対して複数のトンネルを作成できます。トンネルタイプによって消費するデータが決まります。BaseData は全量データのみを消費し、Stream は増分データのみを消費し、BaseAndStream は全量データを消費した後に増分データを消費します。

説明

データテーブルでストリームが無効になっている場合、Stream または BaseAndStream トンネルを作成すると、ストリームが自動的に有効になり、増分ログの保持期間が 7 日に設定されます。

CreateTunnelResponse createTunnel(CreateTunnelRequest request)
        throws TableStoreException, ClientException

次のサンプルコードは、example_table データテーブルに、example_tunnel という名前の BaseData トンネルを作成します。

String tableName = "example_table";
String tunnelName = "example_tunnel";

CreateTunnelRequest request =
        new CreateTunnelRequest(
                tableName, tunnelName, TunnelType.BaseData);
CreateTunnelResponse response = tunnelClient.createTunnel(request);

System.out.println("TunnelId: " + response.getTunnelId());

パラメーター

CreateTunnelRequest には、次のパラメーターが含まれます:

名前

タイプ

説明

tableName (必須)

String

データテーブルの名前。

tunnelName (必須)

String

トンネル名。

tunnelType (必須)

TunnelType

トンネルタイプ。BaseData は全量データのみを消費します。Stream は増分データのみを消費します。BaseAndStream は全量データを消費した後に増分データを消費します。

streamTunnelConfig (オプション)

StreamTunnelConfig

Stream および BaseAndStream トンネルの増分データの範囲設定。このパラメーターを設定する場合は、有効な時間範囲を指定してください。

streamRecordOptions (オプション)

StreamRecordOptions

Stream および BaseAndStream トンネルの増分レコード設定。このパラメーターを使用するには、Tablestore SDK for Java 5.17.11 以降が必要です。

増分データ範囲

streamTunnelConfigStreamTunnelConfig 型で、次のパラメーターが含まれます:

名前

タイプ

説明

flag (オプション)

StartOffsetFlag

startOffset が指定されていない場合に使用する開始位置。LATEST はトンネル作成時刻から開始します。EARLIEST は利用可能な最も古い増分ログから開始します。デフォルト値:LATEST

startOffset (オプション)

long

増分データの開始タイムスタンプ。単位:ミリ秒。有効範囲:[現在のシステム時刻 - ストリームの保持期間 + 5 分, 現在のシステム時刻)。このパラメーターを指定した場合、flag は有効になりません。

endOffset (オプション)

long

増分データの終了タイムスタンプ。単位:ミリ秒。両方のタイムスタンプを指定する場合、このパラメーターは startOffset より大きい必要があります。このパラメーターを指定しない場合、増分データの消費が継続されます。

説明

ストリームの保持期間とは、増分ログの保持期間です。最大値は 7 日です。データテーブルでストリームを有効にする際に保持期間を設定できます。設定後は変更できません。

増分レコードの内容

streamRecordOptionsStreamRecordOptions 型で、次のパラメーターが含まれます:

名前

タイプ

説明

getVersionGeneratorValue (オプション)

boolean

増分レコードに、バージョンジェネレーターによって生成された値を含めるかどうかを指定します。デフォルト値:false

getSysColumns (オプション)

boolean

増分レコードにシステム列を含めるかどうかを指定します。デフォルト値:false

getNewRowInfo (オプション)

boolean

増分レコードに最新の行情報を含めるかどうかを指定します。デフォルト値:false

oldColumnsToGet (オプション)

StreamColumn

元の行から返す属性列。

newColumnsToGet (オプション)

StreamColumn

最新の行から返す属性列。

増分レコード列

streamRecordOptions.oldColumnsToGetstreamRecordOptions.newColumnsToGetStreamColumn 型で、次のパラメーターが含まれます:

名前

タイプ

説明

columnType (必須)

StreamColumnType

属性列の選択モード。SPECIFIED_COLUMN は名前付きの属性列を指定します。INPUT_COLUMNS は、操作によって書き込みまたは更新された属性列を指定します。ALL_COLUMNS はすべての属性列を指定します。

columnNames (オプション)

List<String>

columnTypeSPECIFIED_COLUMN に設定されている場合に返す属性列の名前。

レスポンス

CreateTunnelResponse には、次のレスポンスフィールドが含まれます:

フィールド

タイプ

説明

tunnelId

String

作成されたトンネルの ID。ID を取得するには getTunnelId() を呼び出します。トンネルデータを消費するには、この ID が必要です。

シナリオ

増分データ範囲の指定

次のサンプルコードは、ストリームトンネルを作成し、増分データの範囲に直近 1 時間を指定します。

long endTime = System.currentTimeMillis() - 1_000L;
long startTime = endTime - 60 * 60 * 1000L;
StreamTunnelConfig streamConfig =
        new StreamTunnelConfig(startTime, endTime);

CreateTunnelRequest request =
        new CreateTunnelRequest(
                "example_table",
                "example_stream_tunnel",
                TunnelType.Stream);
request.setStreamTunnelConfig(streamConfig);

CreateTunnelResponse response = tunnelClient.createTunnel(request);
System.out.println("TunnelId: " + response.getTunnelId());

増分レコード内容の設定

次のサンプルコードは、ストリームトンネルを作成し、増分レコードにバージョンジェネレーターの値、システム列、最新の行情報、元の行の value 属性列、および最新の行のすべての属性列を返すように設定します。

StreamColumn oldColumns =
        new StreamColumn(StreamColumnType.SPECIFIED_COLUMN);
oldColumns.addColumnName("value");

StreamRecordOptions recordOptions = new StreamRecordOptions();
recordOptions.setGetVersionGeneratorValue(true);
recordOptions.setGetSysColumns(true);
recordOptions.setGetNewRowInfo(true);
recordOptions.setOldColumnsToGet(oldColumns);
recordOptions.setNewColumnsToGet(
        new StreamColumn(StreamColumnType.ALL_COLUMNS));

CreateTunnelRequest request =
        new CreateTunnelRequest(
                "example_table", "example_stream_tunnel", TunnelType.Stream);
request.setStreamRecordOptions(recordOptions);

CreateTunnelResponse response = tunnelClient.createTunnel(request);
System.out.println("TunnelId: " + response.getTunnelId());