Utilice Tablestore SDK for Java para crear un túnel de tipo BaseData, Stream o BaseAndStream en una tabla de datos.
Requisitos previos
Descripción de la función
Llame a createTunnel para crear un túnel en una tabla de datos. Es posible crear varios túneles para la misma tabla. El tipo de túnel determina los datos que se consumirán: BaseData consume únicamente datos completos, Stream consume solo datos incrementales y BaseAndStream consume primero los datos completos y después los incrementales.
Si Stream está deshabilitado en una tabla de datos, al crear un túnel de tipo Stream o BaseAndStream se habilita automáticamente Stream y se establece el periodo de retención de los registros incrementales en siete días.
CreateTunnelResponse createTunnel(CreateTunnelRequest request)
throws TableStoreException, ClientException
El siguiente código de ejemplo crea un túnel de tipo BaseData llamado example_tunnel para la tabla de datos example_table.
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());
Parámetros
CreateTunnelRequest contiene los siguientes parámetros:
|
Nombre |
Tipo |
Descripción |
|
tableName (obligatorio) |
|
El nombre de la tabla de datos. |
|
tunnelName (obligatorio) |
|
El nombre del túnel. |
|
tunnelType (obligatorio) |
|
El tipo de túnel. |
|
streamTunnelConfig (opcional) |
|
La configuración del rango de datos incrementales para túneles de tipo |
|
streamRecordOptions (opcional) |
|
La configuración de registros incrementales para túneles de tipo |
Rango de datos incrementales
streamTunnelConfig es de tipo StreamTunnelConfig y contiene los siguientes parámetros:
|
Nombre |
Tipo |
Descripción |
|
flag (opcional) |
|
La posición inicial que se utiliza cuando no se especifica |
|
startOffset (opcional) |
|
La marca de tiempo inicial de los datos incrementales. Unidad: milisegundos. Rango válido: [Hora actual del sistema - Periodo de retención de Stream + 5 minutos, hora actual del sistema). Si se especifica este parámetro, |
|
endOffset (opcional) |
|
La marca de tiempo final de los datos incrementales. Unidad: milisegundos. Si se especifican ambas marcas de tiempo, este valor debe ser mayor que |
El periodo de retención de Stream corresponde al periodo de retención de los registros incrementales. El valor máximo es de siete días. Este periodo se puede establecer al habilitar Stream en una tabla de datos, pero no se puede modificar una vez configurado.
Contenido de registros incrementales
streamRecordOptions es de tipo StreamRecordOptions y contiene los siguientes parámetros:
|
Nombre |
Tipo |
Descripción |
|
getVersionGeneratorValue (opcional) |
|
Indica si los registros incrementales incluyen el valor generado por el generador de versiones. Valor predeterminado: |
|
getSysColumns (opcional) |
|
Indica si los registros incrementales incluyen columnas del sistema. Valor predeterminado: |
|
getNewRowInfo (opcional) |
|
Indica si los registros incrementales incluyen la información más reciente de la fila. Valor predeterminado: |
|
oldColumnsToGet (opcional) |
|
Las columnas de atributos que se devolverán de la fila original. |
|
newColumnsToGet (opcional) |
|
Las columnas de atributos que se devolverán de la fila más reciente. |
Columnas de registros incrementales
streamRecordOptions.oldColumnsToGet y streamRecordOptions.newColumnsToGet son de tipo StreamColumn y contienen los siguientes parámetros:
|
Nombre |
Tipo |
Descripción |
|
columnType (obligatorio) |
|
El modo de selección de columnas de atributos. |
|
columnNames (opcional) |
|
Los nombres de las columnas de atributos que se devolverán cuando |
Respuesta
CreateTunnelResponse contiene el siguiente campo de respuesta:
|
Campo |
Tipo |
Descripción |
|
tunnelId |
|
El ID del túnel creado. Llame a |
Escenarios
Especificar un rango de datos incrementales
El siguiente código de ejemplo crea un túnel de tipo Stream y especifica un rango de datos incrementales correspondiente a la última hora.
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());
Configurar el contenido de registros incrementales
El siguiente código de ejemplo crea un túnel de tipo Stream y configura los registros incrementales para que devuelvan el valor del generador de versiones, las columnas del sistema, la información más reciente de la fila, la columna de atributo value de la fila original y todas las columnas de atributos de la fila más reciente.
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());