cartridge-java
cartridge-java copied to clipboard
Perform batch update/delete operations using cursor
Problem statement
- Operations on spaces that involve full scan complexity must be avoided and are not supported in tarantool/crud (except for the select operations).
- Customers still need a convenient way of performing batch updates/deletes with conditions like in the relational databases.
- It is possible to implement such operations using the cursor interface, making batch operations asynchronous and not blocking the Tarantool instance operations.
Proposed solution
- Implement cursor interface (#18)
- 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
This task may be generalized as support for batch operation calls.