Use o Tablestore SDK for Java para criar um túnel do tipo BaseData, Stream ou BaseAndStream em uma tabela de dados.
Pré-requisitos
Descrição do recurso
Chame createTunnel para criar um túnel para uma tabela de dados. Você pode criar vários túneis para a mesma tabela de dados. O tipo de túnel determina os dados a serem consumidos: BaseData consome apenas dados completos; Stream consome apenas dados incrementais; e BaseAndStream consome dados completos e, em seguida, dados incrementais.
Se o Stream estiver desativado para uma tabela de dados, a criação de um túnel Stream ou BaseAndStream ativa automaticamente o Stream e define o período de retenção de logs incrementais como sete dias.
CreateTunnelResponse createTunnel(CreateTunnelRequest request)
throws TableStoreException, ClientException
O código de exemplo a seguir cria um túnel BaseData chamado example_tunnel para a tabela de dados 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 contém os seguintes parâmetros:
|
Nome |
Tipo |
Descrição |
|
tableName (obrigatório) |
|
Nome da tabela de dados. |
|
tunnelName (obrigatório) |
|
Nome do túnel. |
|
tunnelType (obrigatório) |
|
Tipo do túnel. |
|
streamTunnelConfig (opcional) |
|
Configuração do intervalo de dados incrementais para túneis |
|
streamRecordOptions (opcional) |
|
Configuração de registros incrementais para túneis |
Intervalo de dados incrementais
streamTunnelConfig é do tipo StreamTunnelConfig e contém os seguintes parâmetros:
|
Nome |
Tipo |
Descrição |
|
flag (opcional) |
|
Posição inicial usada quando |
|
startOffset (opcional) |
|
Timestamp inicial dos dados incrementais. Unidade: milissegundos. Intervalo válido: [Hora atual do sistema - Período de retenção do Stream + 5 minutos, hora atual do sistema). Se este parâmetro for especificado, |
|
endOffset (opcional) |
|
Timestamp final dos dados incrementais. Unidade: milissegundos. Se ambos os timestamps forem especificados, este parâmetro deve ser maior que |
O período de retenção do Stream é o período de retenção dos logs incrementais. O valor máximo é sete dias. Você pode definir o período ao ativar o Stream para uma tabela de dados. Não é possível modificar o período após a definição.
Conteúdo do registro incremental
streamRecordOptions é do tipo StreamRecordOptions e contém os seguintes parâmetros:
|
Nome |
Tipo |
Descrição |
|
getVersionGeneratorValue (opcional) |
|
Especifica se os registros incrementais contêm o valor gerado pelo version generator. Valor padrão: |
|
getSysColumns (opcional) |
|
Especifica se os registros incrementais contêm colunas de sistema. Valor padrão: |
|
getNewRowInfo (opcional) |
|
Especifica se os registros incrementais contêm as informações mais recentes da linha. Valor padrão: |
|
oldColumnsToGet (opcional) |
|
Colunas de atributo a retornar da linha original. |
|
newColumnsToGet (opcional) |
|
Colunas de atributo a retornar da linha mais recente. |
Colunas do registro incremental
streamRecordOptions.oldColumnsToGet e streamRecordOptions.newColumnsToGet são do tipo StreamColumn e contêm os seguintes parâmetros:
|
Nome |
Tipo |
Descrição |
|
columnType (obrigatório) |
|
Modo de seleção de colunas de atributo. |
|
columnNames (opcional) |
|
Nomes das colunas de atributo a retornar quando |
Resposta
CreateTunnelResponse contém o seguinte campo de resposta:
|
Campo |
Tipo |
Descrição |
|
tunnelId |
|
ID do túnel criado. Chame |
Cenários
Especifique um intervalo de dados incrementais
O código de exemplo a seguir cria um túnel Stream e especifica o intervalo de dados incrementais da ú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());
Configure o conteúdo do registro incremental
O código de exemplo a seguir cria um túnel Stream e configura registros incrementais para retornar o valor do version generator, colunas de sistema, informações da linha mais recente, a coluna de atributo value da linha original e todas as colunas de atributo da linha mais recente.
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());