Modification de tables mono-ton à l'aide d'API
Voyez comment modifier une table singleton à l'aide des API.
- Ajouter de nouveaux champs à une table existante
- Supprimer des champs existants dans une table
- Modifier la valeur de durée de vie par défaut
- Modifier les limites de la table
Utilisation de l'API TableRequest pour modifier une table
Vous pouvez utiliser l'API TableRequest pour modifier la définition d'une table NoSQL.
La classe TableRequest
est utilisée pour modifier les tables. L'exécution des opérations spécifiées par cette demande est asynchrone. Il s'agit d'opérations potentiellement de longue durée. TableResult
est retourné par les opérations TableRequest
et encapsule l'état de la table. Voir Informations de référence sur l'API de la trousse SDK Java pour Oracle NoSQL pour plus de détails sur la classe TableRequest
et ses méthodes.
/**
* Alter the table stream_acct and add a column
*/
private static void alterTab(NoSQLHandle handle) throws Exception {
String alterTableDDL = "ALTER TABLE " + tableName +"(ADD acctname STRING)";
TableRequest treq = new TableRequest().setStatement(alterTableDDL);
System.out.println("Altering table " + tableName);
TableResult tres = handle.tableRequest(treq);
tres.waitForCompletion(handle, 60000, /* wait 60 sec */
1000); /* delay ms for poll */
System.out.println("Table " + tableName + " is altered");
}
La classe borneo.TableRequest
est utilisée pour modifier les tables. Tous les appels à borneo.NoSQLHandle.table_request()
sont asynchrones, il est donc nécessaire de vérifier le résultat et d'appeler borneo.TableResult.wait_for_completion()
pour attendre la fin de l'opération. Voir Informations de référence sur l'API de la trousse SDK Python pour Oracle NoSQL pour plus de détails sur table_request
et ses méthodes.
def alter_table(handle):
statement = '''ALTER TABLE stream_acct(ADD acctname STRING)'''
request = TableRequest().set_statement(statement)
table_result = handle.do_table_request(request, 40000, 3000)
table_result.wait_for_completion(handle, 40000, 3000)
print('Table stream_acct is altered')
La classe TableRequest
est utilisée pour modifier les tables. L'exécution des opérations spécifiées par TableRequest
est asynchrone. Il s'agit d'opérations potentiellement de longue durée. Cette demande est utilisée en tant qu'entrée d'une opération Client.DoTableRequest()
, qui retourne une valeur TableResult
qui peut être utilisée pour scruter jusqu'à ce que la table atteigne l'état souhaité. Voir Informations de référence sur l'API de la trousse SDK Go pour Oracle NoSQL pour plus de détails sur les différentes méthodes de la classe TableRequest
.
//alter an existing table and add a column
func alterTable(client *nosqldb.Client, err error, tableName string)(){
stmt := fmt.Sprintf("ALTER TABLE %s (ADD acctName STRING)",tableName)
tableReq := &nosqldb.TableRequest{
Statement: stmt,
}
tableRes, err := client.DoTableRequest(tableReq)
if err != nil {
fmt.Printf("cannot initiate ALTER TABLE request: %v\n", err)
return
}
// The alter table request is asynchronous, wait for table alteration to complete.
_, err = tableRes.WaitForCompletion(client, 60*time.Second, time.Second)
if err != nil {
fmt.Printf("Error finishing ALTER TABLE request: %v\n", err)
return
}
fmt.Println("Altered table ", tableName)
return
}
Vous pouvez utiliser la méthode tableDDL
pour modifier une table. Cette méthode est asynchrone et retourne une promesse de TableResult
. TableResult
est un objet JavaScript brut qui encapsule l'état de la table après l'opération LDD. Pour plus de détails sur la méthode, voir la classe NoSQLClient.
//alter a table and add a column
async function alterTable(handle) {
const alterDDL = `ALTER TABLE ${TABLE_NAME} (ADD acctname STRING)`;
let res = await handle.tableDDL(alterDDL);
console.log('Table altered: ' + TABLE_NAME);
}
Vous pouvez utiliser l'une des deux méthodes ExecuteTableDDLAsync
et ExecuteTableDDLWithCompletionAsync
pour modifier une table. Les deux méthodes retournent Task<TableResult>
. L'instance TableResult
encapsule l'état de la table après l'opération LDD. Pour plus de détails sur ces méthodes, voir Informations de référence sur l'API de la trousse SDK Dotnet pour Oracle NoSQL.
private static async Task alterTable(NoSQLClient client){
var sql = $@"ALTER TABLE {TableName}(ADD acctname STRING)";
var tableResult = await client.ExecuteTableDDLAsync(sql);
// Wait for the operation completion
await tableResult.WaitForCompletionAsync();
Console.WriteLine(" Table {0} is altered", tableResult.TableName);
}
Modification de tables mono-ton à l'aide d'API