APIの使用による複数行の削除
MultiDeleteRequest
APIを使用し、NoSQL表から複数の行を削除できます。
MultiDeleteRequest
を使用すると、アトミック操作で表から複数の行を削除できます。使用されるキーは一部ですが、それには、シャード・キーに含まれるすべてのフィールドが含まれている必要があります。範囲を指定して、特定の範囲のキーを削除できます。この操作では単一操作で変更できるデータの最大量を超える可能性があるため、操作を続行するために継続キーを使用できます。
表の主キーが<YYYYMM, timestamp>であり、そのシャード・キーがYYYYMMである場合、同じ月にヒットしたすべてのレコードは、同じシャード内にあります。MultiDeleteRequest
クラスを使用して、特定の月について、ある範囲のタイムスタンプ値を削除できます。
様々なクラスおよびメソッドの詳細は、Oracle NoSQL Java SDK APIリファレンスを参照してください。
//Delete multiple rows from the table
private static void delMulRows(NoSQLHandle handle,int pinval) throws Exception {
MapValue key = new MapValue().put("pin", 1234567);
MultiDeleteRequest multiDelRequest = new MultiDeleteRequest()
.setKey(key)
.setTableName(tableName);
MultiDeleteResult mRes = handle.multiDelete(multiDelRequest);
System.out.println("MultiDelete result = " + mRes);
}
/*delete multiple rows using shard key*/
delMulRows(handle,1234567);
borneo.MultiDeleteRequest
クラスを使用すると、1つのアトミック操作で複数の削除を実行できます。
様々なクラスおよびメソッドの詳細は、Oracle NoSQL Python SDK APIリファレンスを参照してください。
#delete multiple rows
def multirow_delete(handle,table_name,pinval):
request = MultiDeleteRequest().set_table_name(table_name).set_key({'pin': pinval})
result = handle.multi_delete(request)
)
/*delete multiple rows using shard key*/
multirow_delete(handle,'examplesAddress',1234567)
MultiDelete
メソッドを使用すると、1つのアトミック操作で表から複数の行を削除できます。
様々なクラスおよびメソッドの詳細は、Oracle NoSQL Go SDK APIリファレンスを参照してください。
//delete multiple rows
func delMulRows(client *nosqldb.Client, err error, tableName string,pinval int)(){
shardKey := &types.MapValue{}
shardKey.Put("pin", pinval)
multiDelReq := &nosqldb.MultiDeleteRequest{
TableName: tableName,
Key: shardKey,
}
multiDelRes, err := client.MultiDelete(multiDelReq)
if err != nil {
fmt.Printf("failed to delete multiple rows: %v", err)
return
}
fmt.Printf("MultiDelete result=%v\n", multiDelRes)
}
/*delete multiple rows using shard key*/
delMulRows(client, err,tableName,1234567)
deleteRange
メソッドを使用して、単一のアトミック操作で、シャード・キーが同一の複数の行を削除できます。
//deletes multiple rows
async function mulRowDel(handle,pinval){
try {
/* Unconditional delete, should succeed.*/
var result = await handle.deleteRange(TABLE_NAME, { pin: pinval });
/* Expected output: delete succeeded*/
console.log('delete ' + result.success ? 'succeeded' : 'failed');
} catch(error) {
console.error(' Error: ' + error.message);
}
}
/*delete multiple rows using shard key*/
await mulRowDel(handle,1234567);
interface StreamInt {
acct_Id: Integer;
profile_name: String;
account_expiry: TIMESTAMP;
acct_data: JSON;
}
//deletes multiple rows
async function mulRowDel(handle: NoSQLClient,pinVal: Integer){
try {
/* Unconditional delete, should succeed.*/
var result = await handle.deleteRange<StreamInt>(TABLE_NAME, { pin: pinval });
/* Expected output: delete succeeded*/
console.log('delete ' + result.success ? 'succeeded' : 'failed');
} catch(error) {
console.error(' Error: ' + error.message);
}
}
/*delete multiple rows using shard key*/
await mulRowDel(handle,1234567);
DeleteRangeAsync
メソッドを使用して、単一のアトミック操作で同じシャード・キーを持つ複数の行を削除できます。
//delete multiple rows
private static async Task mulDelRows(NoSQLClient client,int pinval){
var parKey = new MapValue {["pin"] = pinval};
var options = new DeleteRangeOptions();
do
{
var result = await client.DeleteRangeAsync(TableName,parKey,options);
Console.WriteLine($"Deleted {result.DeletedCount} row(s)");
options.ContinuationKey = result.ContinuationKey;
} while(options.ContinuationKey != null);
}
/*delete multiple rows using shard key*/
await mulDelRows(client,1234567);