Удаление выполняется на первичном ключе, так что атомная операция, потому что первичный ключ обеспечивает уникальность. Вторичный индекс может быть уникальным, но это может быть не так, поэтому вам нужно будет начать транзакцию, чтобы обеспечить атомарность в уникальном вторичном ключе индекса. Таким образом, это причина, по которой не существует удаления/обновления/вставки для вторичного индекса для Java. Это хороший вопрос, если tarantool позволяет транзакции запускаться удаленно, но я сомневаюсь, что это было бы полезно.
Так что вам нужно будет сделать следующее, чтобы это заработало:
- написать хранимую процедуру в Lua перебрать индекс/выберите значение, которое нужно
- поставить процедуру вы написали в ваш экземпляры Tarantool
- вызывать его из кода Java по имени, используя
public List call(String var1, Object... var2);
Eg
-- Lua function
function deleteFromSpaceByUniqueSecondaryIndex(secondaryId)
box.space.YourSpace.index.yourSecondaryIdx:delete(secondaryId)
end
.....
//call it from Java like that
tarantoolConn.call("deleteFromSpaceByUniqueSecondaryIndex", secondaryId);