機械翻訳について

オブジェクト・ストレージのドキュメントでのJSON検索の使用

オブジェクト・ストレージに格納されたファイルにあるドキュメントにJSON検索索引を構築できます。これにより、ワイルドカードを使用した検索など、JSON_TEXTCONTAINSを使用してJSONドキュメントのフィールドを検索できます。

オブジェクト・ストレージのドキュメントでのJSON検索の使用

オブジェクト・ストレージに格納されているファイルのドキュメントにJSON検索索引を作成できます。 JSON検索索引は、JSONドキュメント用に特別に設計されており、JSON_TEXTCONTAINSを使用して、ドキュメントのドキュメントまたはフラグメントに対して、通常および全文検索を実行できます。

詳細については、「JSON_TEXTCONTAINS条件」を参照してください。

DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXを使用して、オブジェクト・ストレージのファイルにJSON検索索引を作成します。 新しいアップロードまたは削除に対して索引がリフレッシュされる頻度(分)を示すリフレッシュ・レートを構成できます。 詳細については、「ファイル内のJSONドキュメントに対するJSON検索索引の作成」を参照してください。

JSON検索索引を作成すると、次のオブジェクトが作成されます:

  • オブジェクト・ストレージJSONファイルのJSON検索索引index_name

  • ローカル表INDEX_NAME$TXTIDX この表は、オブジェクト・ストレージ内のファイルのドキュメントと、データベースに作成されたJSON検索索引との間のマッピング表です。 詳細については、「JSON検索索引参照表」を参照してください。

  • 標準名がINDEX_NAMEのビュー。 ビューを使用して、JSON_TEXTCONTAINSを使用して検索を実行できます。 このビューは、INDEX_NAME$TXTIDX表の上に作成されます。 詳細については、「JSON検索インデックス参照ビュー」を参照してください。

  • 標準サフィクスがindex_name$txtidx_errのエラー・ログ表。 詳細については、「エラー・ログ表」を参照してください。

JSON検索索引の作成操作は、ALL_SCHEDULER_JOB_RUN_DETAILSビューに記録されます。 詳細については、「テキスト索引作成のモニター」を参照してください。

Autonomous Databaseは、JSONドキュメントを含む様々なテキスト・ファイルに対するJSON検索索引の作成をサポートしています。 たとえば、JSONファイルを圧縮形式と非圧縮形式の両方で索引付けしたり、別のJSONドキュメント・デリミタを選択できます。 ファイル処理オプションの詳細は、「DBMS_CLOUDパッケージ」を参照してください。

詳細については、「Oracle Textを使用した索引付け」を参照してください。

ファイル内のJSONドキュメントに対するJSON検索索引の作成

DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXを使用して、オブジェクト・ストレージに格納されているJSONファイルにJSON検索索引を作成します。

Oracle Textのストップ・ワードの詳細は、「Oracle Textを使用した索引付け」を参照してください。

  1. ソースのロケーションにアクセスするための資格証明オブジェクトを作成します。

    詳細については、「CREATE_CREDENTIALプロシージャ」を参照してください。

  2. DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXプロシージャを実行して、オブジェクト・ストレージ・ファイルにJSON検索索引を作成します。
    
    BEGIN 
     DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEX (
            credential_name => 'OBJ_STORE_CRED',
            location_uri    => 'https://objectstorage.us-phoenix-1.oraclecloud.com/n/namespace-string/b/bucketname/o/vcnlogs/',
            index_name      => 'VNCLOGS',
            format          =>  JSON_OBJECT ('json_index' value 'true', 'json_index_doc_len' value 12000, 'file_compression' value 'gzip')
    );
    END;
    /
    この例では、次のものを作成します:
    • location_uriパラメータで指定されたURIにあるオブジェクト・ストレージ・ファイルのJSON検索索引VNCLOGS

    • ローカル表VNCLOGS$TXTIDX 詳細については、「JSON検索索引参照表」を参照してください。

    • VNCLOGSという名前のビュー。 このビューは、VNCLOGS$TXTIDX表の上に作成されます。 ビューを使用して、JSON_TEXTCONTAINSを使用して検索を実行できます。 詳細については、「JSON検索インデックス参照ビュー」を参照してください。

    • VNC$TXTIDX_ERRという名前のエラー・ログ表。 表には、ファイル内の無効なJSONドキュメントのリストが含まれています。 詳細については、「エラー・ログ表」を参照してください。

    JSON検索索引を作成した後、VNCLOGSビューを問い合せることができます。 たとえば:

    SELECT JSON_QUERY (data, '$' returning CLOB pretty) AS RECORD 
     FROM vnclogs WHERE JSON_TEXTCONTAINS(file_line_json, '$.tuples', '{XXX.XXX.0.1.10.10.10.10.null.XXX_345}');
    

    この問合せは、指定されたIPアドレスのログ詳細をJSON_TEXTCONTAINS条件で返します。 JSON検索索引基準は、file_line_json列(データベース内のJSON検索索引表の索引付き列)に指定され、JSONドキュメントは、data列を介して表されるオブジェクト・ストレージから直接ストリーミングされます。 data列には、オブジェクト・ストレージ・ファイルの内容が含まれます。

    詳細については、「CREATE_EXTERNAL_TEXT_INDEXプロシージャ」を参照してください。

JSON検索索引の削除

DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEXプロシージャを使用して、オブジェクト・ストレージに格納されているJSONファイルにJSON検索索引を削除します。

たとえば:

BEGIN 
 DBMS_CLOUD.DROP_EXTERNAL_TEXT_INDEX (
  index_name => 'VCNLOGS',
);
END;
/

この例では、VCNLOGS JSON検索索引を削除します。

詳細については、「DROP_EXTERNAL_TEXT_INDEXプロシージャ」を参照してください。

JSON検索索引作成のモニター

DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXを実行すると、JSON検索索引作成操作がALL_SCHEDULER_JOB_RUN_DETAILSビューに記録されます。

ALL_SCHEDULER_JOB_RUN_DETAILSビューを問い合せると、索引作成ジョブによって報告されたステータスおよびエラーを取得できます。

DBMS_SCHEDULERジョブの名前は、DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXをコールするときに指定したINDEX_NAMEパラメータから導出されます。

ALL_SCHEDULER_JOB_RUN_DETAILSビューを問い合せるには、ADMINユーザーとしてログインしているか、ALL_SCHEDULER_JOB_RUN_DETAILSビューに対するREAD権限を持っている必要があります。

たとえば、job_nameWHERE句がある次のSELECT文は、ジョブの実行の詳細を示しています:

SELECT status, additional_info 
   FROM all_scheduler_job_run_details WHERE LOWER(job_name) = LOWER('index_name$JOB');

索引作成スケジューラ・ジョブの存在を問い合せることもできます。

たとえば:
SELECT status 
    FROM all_scheduler_jobs where LOWER(job_name) = LOWER('index_name$JOB');

詳細については、「CREATE_EXTERNAL_TEXT_INDEXプロシージャ」を参照してください。

JSON検索索引参照表

ローカル表は、標準のサフィクスINDEX_NAME$TXTIDXを使用してデータベース内に作成されます。 この表は、DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXの実行時に内部的に作成されます。

INDEX_NAME$TXTIDX表を問い合せると、JSON_TEXTCONTAINSキーワードを使用して文字列を検索できます。 たとえば、INDEX_NAME値をVNCLOGSとしてDBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXプロシージャをコールすると、VNCLOGS$TXTIDX JSON検索索引参照表が作成されます。

JSON検索索引参照表には次の列があります:
  • object_name: 検索されたテキスト文字列を含むオブジェクト・ストレージのファイル名です。

  • object_path: オブジェクト・ストレージ・ファイルを含むオブジェクト・ストレージ・バケットまたはフォルダURIです。

  • length: JSONドキュメントの長さです。

  • offset: 、ファイルの先頭のバイト・オフセットです。

  • mtime: オブジェクト・ストレージ・ファイルの最終変更タイムスタンプです。 これは、ファイルがDBMS_CLOUDによって最後にアクセスされた時間です。

次の問合せを実行して、JSON検索索引参照表からオブジェクト名、オブジェクト・パス、オフセットおよび長さを取得します:
SELECT * FROM (SELECT object_name, object_path, length, offset 
 FROM vnclogs$txtidx 
 WHERE JSON_TEXTCONTAINS (file_line_json, '$.tuples', '{XXX.XXX.0.1.10.10.10.10.null.XXX_345}') 
 ORDER BY mtime DESC) 
 WHERE rownum < 3;
 

この問合せは、オブジェクト・ストレージ内のファイル内の関連ドキュメントの場所に関する内部情報を提供します。 問合せでは実際のドキュメントは提供されません。

ドキュメントを直接取得するには、次の問合せを使用します:

SELECT * FROM (SELECT object_name, object_path, data
 FROM vnclogs
 WHERE JSON_TEXTCONTAINS (file_line_json, '$.tuples', '{XXX.XXX.0.1.10.10.10.10.null.XXX_345}')
 ORDER BY mtime DESC)
 WHERE rownum < 3;
 

JSON検索インデックス参照ビュー

INDEX_NAMEという名前のビューは、 DBMS_CLOUD.CREATE_EXTERNAL_TEXT_INDEXを実行してJSON索引を作成すると作成されます。

ビュー自体にデータが含まれていません。 SQL条件JSON_TEXTCONTAINSを使用してINDEX_NAMEビューを問い合せると、ビューにデータがフェッチされます。

説明
OBJECT_NAME

検索されたテキスト文字列を含むオブジェクト・ストレージのファイル名。

OBJECT_PATH

オブジェクト・ストレージ・ファイルを含むオブジェクト・ストレージ・バケットまたはフォルダURI。

LENGTH

JSONドキュメントの長さ。

OFFSET

ファイルの先頭のバイト・オフセット。

DATA

オブジェクト・ストレージ・ファイルのコンテンツ。

FILE_LINE_JSON

JSON_TEXTCONTAINSが実行される列。

MTIME

オブジェクト・ストレージ・ファイルの最終変更タイムスタンプ。 ファイルが最後にDBMS_CLOUDによってアクセスされた時間です。

エラー・ログ表

オブジェクト・ストレージに格納されたJSONファイルにJSON検索索引を作成すると、エラー・ログ表index_name$txtidx_errが作成されます。

表には、ファイル内の無効なJSONドキュメントのリストが含まれています。 索引付けされるソース・ファイルの長さがデフォルト値または指定された値を超えると、JSONドキュメントが無効としてマークされます。 デフォルト値は32767バイトで、json_index_doc_len formatオプションを使用して指定できる最大値は200000バイトです。 詳細については、「ファイル内のJSONドキュメントに対するJSON検索索引の作成」を参照してください。

index_name$txtidx_errを問い合せると、索引の作成時にレポートされた無効なJSONファイルのリストを取得できます。

説明
OBJECT_NAME 検索されたテキスト文字列を含むオブジェクト・ストレージのファイル名。
OBJECT_PATH オブジェクト・ストレージ・ファイルを含むオブジェクト・ストレージ・バケットまたはフォルダURI。
OFFSET 行の先頭のバイト・オフセット。
LENGTH JSONドキュメントの長さ。
LINE_NUMBER オブジェクト・ストアにあるファイルの行番号。