書込み操作での行メタデータの使用

次のAPIを使用すると、表内の行に対して書込み操作を実行するときに、独自のメタデータを指定できます。詳細は、「ユーザー定義の行メタデータの使用」を参照してください

この行メタデータは、操作のコンテキストを理解するために変更ストリームに含められます。詳細は、行メタデータのストリーミングを参照してください。

ノート:

この機能は、早期にアクセスしてフィードバックを提供できるように、「プレビュー」ベースで使用可能になりました。これはデモおよび暫定使用のみを目的としています。Oracle Corporationおよびその関連会社は、この機能に関して一切の責任を負わず、いかなる保証もいたしません。また、この機能を使用したことによって損失、費用、あるいは損害が発生しても、一切の責任を負いかねます。
  • PutRequest APIの使用: PutRequestを使用すると、表のメイン行データとともに、行メタデータと呼ばれる追加情報を付加できます。この行メタデータは、変更を行ったユーザーや更新のソースなど、実際の行コンテンツに関するコンテキストを説明または提供できる追加情報の格納に役立ちます。PutRequestクラスのsetRowMetadata()メソッドを使用して、行メタデータをJSON文字列として渡す必要があります。

    このメタデータは、変更ストリーム・イベントに含められ、変更ストリーム・サブスクライバが参照できます。

    例を使用してこれを理解するには、ManageMetadata.javawriteRowWithMetadata()ここの例を参照してください。

    /* Row Metadata inputs */
    final static String rm1="{\"modified_by\" : \"John Doe\",\"reviewed_in\" : \"Q1\",\"update_reason\" : \"Account details updated\"}";
     
    /*Calling the method from the main function*/
    writeRowWithMetadata(handle, (MapValue)newvalue, rm1);
     
    /* Method to add row with associated row metadata*/
    private static void writeRowWithMetadata(NoSQLHandle handle, MapValue value, String rowMetadata) throws Exception {
       PutRequest putRequest = new PutRequest()
           .setValue(value)
           .setTableName(tableName)
           .setRowMetadata(rowMetadata);
     
       PutResult putResult = handle.put(putRequest);
       if (putResult.getVersion() != null) {
           System.out.println("Wrote: " + value);
       } else {
           System.out.println("Put failed");
          }
       }
  • QueryRequest API: QueryRequest APIを使用してSQL DML文を実行する場合、setRowMetadata()を適用して、影響を受ける行にユーザー定義メタデータをアタッチできます。詳細は、ManageMetadata.javaupdateRowViaQuery()ここの例を参照してください。
  • DeleteRequest API: 主キーを使用して単一行を削除する場合は、setRowMetadata()を使用してメタデータをアタッチして、削除の理由を説明できます。詳細は、ManageMetadata.javadeleteRowWithMetadata()ここの例を参照してください。
  • MultiWrite API: 同じシャード・キーを共有する複数の行のアトミック書込みを実行する場合は、バッチ内の各PutRequestsetRowMetadata()を個別にアタッチできます。これは、各行が別のユーザー、ソース・システムまたはインポート操作から発生している可能性がある場合のバッチ挿入または更新に最適です。詳細は、MutiMetadataOps.javawriteMultipleRows()ここの例を参照してください。
  • MultiDelete API: 同じシャード・キーを共有する複数の行を削除するために単一のアトミック操作を使用する場合、MultiDeleteRequestクラスのsetRowMetadata()を使用してメタデータをアタッチできます。たとえば、メタデータを使用して、それらの行を削除する理由を記録できます。詳細は、MutiMetadataOps.javadelMulRows()ここの例を参照してください。