cartridge-java icon indicating copy to clipboard operation
cartridge-java copied to clipboard

Perform batch update/delete operations using cursor

Open akudiyar opened this issue 4 years ago • 1 comments

Problem statement

  1. Operations on spaces that involve full scan complexity must be avoided and are not supported in tarantool/crud (except for the select operations).
  2. Customers still need a convenient way of performing batch updates/deletes with conditions like in the relational databases.
  3. It is possible to implement such operations using the cursor interface, making batch operations asynchronous and not blocking the Tarantool instance operations.

Proposed solution

  1. Implement cursor interface (#18)
  2. Support batch operations using cursor using background tasks and returning the result asynchronously

ACID

A -- these operations cannot be atomic since they have "select for update" semantics with on-by-one tuple update. But each tuple update is atomic internally C -- consistency cannot be guaranteed on this level I -- isolation cannot be guaranteed, but each batch update task must be fault-tolerant to the specific kind of errors (update of a non-existing value, delete of a non-existing value) D -- user must be able to specify the retry and recovery policies for the batch tasks

akudiyar avatar Oct 30 '20 08:10 akudiyar

This task may be generalized as support for batch operation calls.

akudiyar avatar May 12 '21 14:05 akudiyar