0

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)
4

1 に答える 1

1

削除は主キーに対して実行されるため、主キーによって一意性が強制されるため、これはアトミック操作です。セカンダリ インデックスは一意である場合もありますが、そうではない場合もあるため、トランザクションを開始して、一意でないセカンダリ インデックス キーの原子性を確保する必要があります。これが、Java のセカンダリ インデックスに削除/更新/挿入がまだない理由です。tarantool がリモートで開始されたトランザクションを許可するかどうかは良い質問ですが、それが役立つとは思えません。

したがって、それを機能させるには、次のことを行う必要があります。

  1. Lua でストアド プロシージャを記述して、インデックスを反復処理し、必要な値を選択します
  2. 書いた手順を Tarantool インスタンスに入れます
  3. を使用して、Java コードから名前で呼び出します。public List call(String var1, Object... var2);

例えば

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

.....

    //call it from Java like that
    tarantoolConn.call("deleteFromSpaceByUniqueSecondaryIndex", secondaryId);
于 2016-09-23T13:09:27.360 に答える