如何使用java客户端通过tarantool的辅助键删除记录?

时间:2016-09-15 10:35:00

标签: 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 个答案:

答案 0 :(得分:1)

删除是在主键上执行的,因此它是一个原子操作,因为主键强制执行唯一性。辅助索引可能是唯一的,但可能不是很好,因此您需要启动事务以确保非唯一辅助索引键中的原子性。这就是为什么Java的二级索引上没有删除/更新/插入的原因。如果tarantool允许远程启动交易,这是一个很好的问题,但我怀疑它是否有用。

因此,您需要执行以下操作才能使其正常运行:

  1. 在Lua中编写存储过程以迭代索引/选择所需的值
  2. 将您编写的程序放入Tarantool实例
  3. 使用public List call(String var1, Object... var2);
  4. 按名称从您的Java代码中调用它

    E.g。

        -- Lua function
        function deleteFromSpaceByUniqueSecondaryIndex(secondaryId)
            box.space.YourSpace.index.yourSecondaryIdx:delete(secondaryId)
        end
    

    .....

        //call it from Java like that
        tarantoolConn.call("deleteFromSpaceByUniqueSecondaryIndex", secondaryId);