2016-09-15 5 views
0

источники клиента JavaКак удалить запись с помощью вторичного ключа для tarantool с помощью java-клиента?

Выбор функции имеет индекс:

public java.util.List select(int space, int index, java.lang.Object key, int offset, int limit, int iterator) 

Но заменить, обновление и удаление дается только пространство & ключ:

public java.util.List delete(int space, java.lang.Object key) 

ответ

1

Удаление выполняется на первичном ключе, так что атомная операция, потому что первичный ключ обеспечивает уникальность. Вторичный индекс может быть уникальным, но это может быть не так, поэтому вам нужно будет начать транзакцию, чтобы обеспечить атомарность в уникальном вторичном ключе индекса. Таким образом, это причина, по которой не существует удаления/обновления/вставки для вторичного индекса для Java. Это хороший вопрос, если tarantool позволяет транзакции запускаться удаленно, но я сомневаюсь, что это было бы полезно.

Так что вам нужно будет сделать следующее, чтобы это заработало:

  1. написать хранимую процедуру в Lua перебрать индекс/выберите значение, которое нужно
  2. поставить процедуру вы написали в ваш экземпляры Tarantool
  3. вызывать его из кода 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); 

 Смежные вопросы

  • Нет связанных вопросов^_^