Utilisez le SDK Tablestore pour Java afin de créer un tunnel BaseData, Stream ou BaseAndStream pour une table de données.
Prérequis
Description de la fonctionnalité
Appelez createTunnel pour créer un tunnel pour une table de données. Vous pouvez créer plusieurs tunnels pour la même table de données. Le type de tunnel détermine les données à consommer : BaseData consomme uniquement les données complètes, Stream consomme uniquement les données incrémentielles, et BaseAndStream consomme les données complètes puis les données incrémentielles.
Si Stream est désactivé pour une table de données, la création d'un tunnel Stream ou BaseAndStream active automatiquement Stream et définit la période de rétention des journaux incrémentiels à sept jours.
CreateTunnelResponse createTunnel(CreateTunnelRequest request)
throws TableStoreException, ClientException
L'exemple de code suivant crée un tunnel BaseData nommé example_tunnel pour la table de données 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());
Paramètres
CreateTunnelRequest contient les paramètres suivants :
|
Nom |
Type |
Description |
|
tableName (obligatoire) |
|
Le nom de la table de données. |
|
tunnelName (obligatoire) |
|
Le nom du tunnel. |
|
tunnelType (obligatoire) |
|
Le type de tunnel. |
|
streamTunnelConfig (facultatif) |
|
La configuration de la plage de données incrémentielles pour les tunnels |
|
streamRecordOptions (facultatif) |
|
La configuration des enregistrements incrémentiels pour les tunnels |
Plage de données incrémentielles
streamTunnelConfig est de type StreamTunnelConfig et contient les paramètres suivants :
|
Nom |
Type |
Description |
|
flag (facultatif) |
|
La position de départ utilisée lorsque |
|
startOffset (facultatif) |
|
L'horodatage de début des données incrémentielles. Unité : millisecondes. Plage valide : [Heure système actuelle - Période de rétention Stream + 5 minutes, heure système actuelle). Si ce paramètre est spécifié, |
|
endOffset (facultatif) |
|
L'horodatage de fin des données incrémentielles. Unité : millisecondes. Si les deux horodatages sont spécifiés, ce paramètre doit être supérieur à |
La période de rétention Stream correspond à la période de rétention des journaux incrémentiels. La valeur maximale est de sept jours. Vous pouvez définir cette période lors de l'activation de Stream pour une table de données. La période ne peut pas être modifiée après sa définition.
Contenu des enregistrements incrémentiels
streamRecordOptions est de type StreamRecordOptions et contient les paramètres suivants :
|
Nom |
Type |
Description |
|
getVersionGeneratorValue (facultatif) |
|
Indique si les enregistrements incrémentiels contiennent la valeur générée par le générateur de version. Valeur par défaut : |
|
getSysColumns (facultatif) |
|
Indique si les enregistrements incrémentiels contiennent les colonnes système. Valeur par défaut : |
|
getNewRowInfo (facultatif) |
|
Indique si les enregistrements incrémentiels contiennent les dernières informations de ligne. Valeur par défaut : |
|
oldColumnsToGet (facultatif) |
|
Les colonnes d'attribut à renvoyer depuis la ligne d'origine. |
|
newColumnsToGet (facultatif) |
|
Les colonnes d'attribut à renvoyer depuis la dernière ligne. |
Colonnes des enregistrements incrémentiels
streamRecordOptions.oldColumnsToGet et streamRecordOptions.newColumnsToGet sont de type StreamColumn et contiennent les paramètres suivants :
|
Nom |
Type |
Description |
|
columnType (obligatoire) |
|
Le mode de sélection des colonnes d'attribut. |
|
columnNames (facultatif) |
|
Les noms des colonnes d'attribut à renvoyer lorsque |
Réponse
CreateTunnelResponse contient le champ de réponse suivant :
|
Champ |
Type |
Description |
|
tunnelId |
|
L'ID du tunnel créé. Appelez |
Scénarios
Spécifier une plage de données incrémentielles
L'exemple de code suivant crée un tunnel Stream et spécifie la plage de données incrémentielles de la dernière heure.
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());
Configurer le contenu des enregistrements incrémentiels
L'exemple de code suivant crée un tunnel Stream et configure les enregistrements incrémentiels pour renvoyer la valeur du générateur de version, les colonnes système, les dernières informations de ligne, la colonne d'attribut value de la ligne d'origine et toutes les colonnes d'attribut de la dernière ligne.
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());