データベース コネクタのデプロイ

このガイドは、Google Cloud Search データベース コネクタの管理者、つまり、データベース コネクタの入手、デプロイ、構成、保守を担当するユーザーを対象としています。

このガイドでは、コネクタのデプロイに関連する主要なタスクの実施手順について説明します。

  • Cloud Search Connector for Databases ソフトウェアをダウンロードする
  • コネクタを特定の SQL データソースに合わせて構成する
  • コネクタを実行する

このドキュメントのコンセプトを理解するには、データベースのコンセプト、構造化クエリ言語(SQL)、アクセス制御リスト(ACL)の基礎、Windows または Linux オペレーティング システムに精通している必要があります。

G Suite 管理者が Google Cloud Search をデータベース コネクタにマッピングするために行う必要があるタスクについては、このガイドでは説明しません。これらのタスクについては、サードパーティのデータソースを管理するをご覧ください。

Google Cloud Search データベース コネクタの概要

Cloud Search はデフォルトで、ドキュメントやスプレッドシートなどの G Suite データからコンテンツを検出し、インデックスに登録して提供できます。さらに、Google Cloud Search データベース コネクタを使用すると、Cloud Search を拡張して独自のデータベース リポジトリからデータを検出し、インデックスに登録することもできます。

コネクタは、インデックス登録リクエストを Cloud Search Indexing API にアップロードし、データベース全体のインデックスを定期的に再登録することにより、Cloud Search インデックスとサードパーティのデータベース リポジトリとの同期を維持します。

Cloud Search データベース コネクタでは、ACL を使用した検索結果内のドキュメントへのユーザー アクセスの制御がサポートされています。このトピックについて詳しくは、アクセス制御リストのオプションをご覧ください。

コネクタの動作

コネクタ管理者は、Cloud Search データベース コネクタの構成ファイルを作成することにより、コネクタの動作を制御します。このファイルでは、コネクタの動作に関する次のような主要な側面を定義します。

  • ターゲット データベースへのアクセス
  • 検索可能なコンテンツの特定
  • 走査の実施
  • 走査スケジュールの監視
  • レコードを取得するためのデータベースへの SQL クエリの送信
  • アクセス制御リスト(ACL)の遵守

具体的なコネクタ動作を定義するには、カスタマイズする構成パラメータごとに Key-Value ペアを構成ファイルに入力します。このプロセスについて詳しくは、データベース コネクタを構成するをご覧ください。

構成ファイルを完全に設定すると、コネクタをデプロイするために必要な設定がそろいます。

データベース コンテンツのインデックス登録

Cloud Search データベース コネクタをデプロイすると、コネクタは G Suite アカウントに接続したデータソースと通信し、走査と呼ばれるプロセスによってそのコンテンツを検出します。走査中、コネクタは、ドキュメント データを取得するためにリポジトリに SQL select クエリを発行します。ドキュメント データを取得すると、Indexing API にアップロードし、そこでインデックスに登録され、最終的にユーザーに提供されます。

最初、データベース コネクタはフル走査を行って、その間にすべてのデータベース レコードを読み取り、インデックスに登録します。後続のフル走査を一定の時間間隔でスケジュールできます。フル走査に加えて、増分走査をスケジュールすることもできます(データベースでサポートされている場合)。増分走査では、変更されたデータベース レコードのみが読み取られ、インデックスに再登録されます。

コネクタの設定

Cloud Search データベース コネクタがインターネットとデータベースの両方にアクセスできる限り、Java アプリを実行できるほとんどの環境にコネクタをインストールして実行できます。データベース コネクタは、Google Cloud Search やデータ リポジトリとは別のホストにデプロイします。そのため、Google Cloud Search、コネクタ、データ リポジトリの間の関係を確立するために必要な G Suite 情報とデータベース情報があることを最初に確認する必要があります。コネクタがデータベースにアクセスできるようにするために、このドキュメントのコネクタの動作に記載されている構成手順を実行する際に、コネクタに渡す具体的な情報を指定します。

Cloud Search へのコネクタのアクセスを設定するには、サービス アカウント、サービス アカウント ID、データソース ID が必要です。構成ファイルの例に示されているように、ソース ID とサービス アカウントの秘密鍵ファイルへのパスをコネクタ構成に追加する必要があります。通常、これらの認証情報はドメインの G Suite 管理者から提供されます。

環境が正しく設定されていることを確認したら、デプロイ手順を開始できます。

サポートされるデータベース

Cloud Search データベース コネクタは、JDBC 4.0 以降に準拠したドライバを使用する SQL データベースを処理します。これには、次のようなデータベースが含まれます。

  • MS SQL Server(2008、2012、2014、2016)
  • Oracle(11g、12c)
  • Google Cloud SQL
  • MySQL

コネクタの構成プロセスで、ターゲット データベースを識別する情報を指定します。詳しくは、データベース アクセスをご覧ください。

データベース コネクタをデプロイする前に

Cloud Search データベース コネクタをデプロイする前に、次に示す必要なコンポーネントすべてがお使いの環境にあることを確認してください。

  • G Suite の秘密鍵(サービス アカウント ID を含む)
  • G Suite データソースの ID
  • ホストマシンにインストールされたデータベース コネクタの .jar ファイル
  • サポートされているターゲット データベース
  • データベースへのアクセスに使用される JDBC ドライバ(別途ダウンロードおよびインストール)

デプロイ手順

Cloud Search データベース コネクタをデプロイする際の基本的な手順は、次のとおりです。

  1. Cloud Search データベース コネクタ ソフトウェアをダウンロードして保存する
  2. Cloud Search データベース コネクタを構成する
  3. Cloud Search データベース コネクタを実行する

手順 1. データベース コネクタ ソフトウェアをダウンロードして保存する

  1. GitHub からコネクタ リポジトリのクローンを作成します。
    $ git clone https://github.com/google-cloudsearch/database-connector.git
        $ cd database-connector
  2. 希望するバージョンのコネクタをチェックアウトします。
    $ git checkout tags/v1-0.0.3
  3. コネクタをビルドします。
    $ mvn package
    (コネクタのビルド時にテストをスキップするには、mvn package -DskipTests を使用します)。
  4. コネクタ zip ファイルをローカルのインストール ディレクトリにコピーして、解凍します。
    $ cp target/google-cloudsearch-database-connector-v1-0.0.3.zip installation-dir
        $ cd installation-dir
        $ unzip google-cloudsearch-database-connector-v1-0.0.3.zip
        $ cd google-cloudsearch-windows-filesystems-connector-v1-0.0.3

手順 2. データベース コネクタを構成する

コネクタが所定のデータベースにアクセスし、関連コンテンツをインデックスに登録できるようにするには、まず構成ファイルを作成する必要があります。

構成ファイルを作成するには:

  1. 任意のテキスト エディタを開きます。
  2. ファイルの内容に Key-Value ペアを追加します。詳しくは、構成ファイルの例をご覧ください。
  3. 構成ファイルの名前を指定します。

    構成ファイルには任意の名前を付けることができます(例: Mysql.properties)。構成ファイルの名前を指定する際には、.properties.config など、一貫性のある拡張子を使用することをおすすめします。

コマンドラインで構成ファイルのパスを指定できるので、ファイルは任意の場所に保存できますが、コネクタの管理や実行が簡単に行えるよう、常にコネクタと同じディレクトリに置いてください。

コマンドラインで構成ファイルのパスを指定すれば、コネクタは指定の構成ファイルを間違いなく認識します。指定しなかった場合、コネクタはローカル ディレクトリ内の connector-config.properties をデフォルトのファイル名として使用します。コマンドラインで構成パスを指定する方法については、データベース コネクタを実行するをご覧ください。

構成ファイルの例

次の構成ファイルの例は、コネクタの動作の例を定義するパラメータの Key-Value ペアを示しています。多くのパラメータには、パラメータ値がファイル内で定義されていない場合に使用されるデフォルト値があります。

#
    # data source access
    api.sourceId=1234567890abcdef
    api.identitySourceId=0987654321lmnopq
    api.serviceAccountPrivateKeyFile=./PrivateKey.json
    #
    # database access
    db.url=jdbc:mysql://localhost:3306/mysql_test
    db.user=root
    db.password=passw0rd
    #
    # traversal SQL statements
    db.allRecordsSql=select customer_id, first_name, last_name, phone, change_timestamp from address_book
    db.incrementalUpdateSql=select customer_id, first_name, last_name, phone, change_timestamp from address_book where change_timestamp > ?
    #
    # schedule traversals
    schedule.traversalIntervalSecs=36000
    schedule.performTraversalOnStart=true
    schedule.incrementalTraversalIntervalSecs=3600
    #
    # column definitions
    db.allColumns=customer_id, first_name, last_name, phone, change_timestamp
    db.uniqueKeyColumns=customer_id
    url.columns=customer_id
    #
    # content fields
    contentTemplate.db.title=customer_id
    db.contentColumns=customer_id, first_name, last_name, phone
    #
    # setting ACLs to "entire domain accessible"
    defaultAcl.mode=fallback
    defaultAcl.public=true
    

各パラメータの詳細な説明については、構成パラメータのリファレンスをご覧ください。

手順 3. データベース コネクタを実行する

次の例は、必要なコンポーネントが Linux システムのローカル ディレクトリにあることを前提としています。

コマンドラインからコネクタを実行するには、次のコマンドを入力します。

java \
       -cp "google-cloudsearch-database-connector-v1-0.0.3.jar:mysql-connector-java-5.1.41-bin.jar" \
       com.google.enterprise.cloudsearch.database.DatabaseFullTraversalConnector \
       -Dconfig=mysql.config
    

コマンドの詳細は次のとおりです。

  • google-cloud-search-database-connector-v1-0.0.3.jar は、データベース コネクタの .jar ファイルです。
  • mysql-connector-java-5.1.41-bin.jar は、データベースへのアクセスに使用される JDBC ドライバです。
  • mysql.config は、構成ファイルです。

コネクタは、可能な限り早い段階で構成エラーを検出しようとします。たとえば、データベース列がレコード コンテンツの一部として定義されているが、データベースの SQL クエリに含まれていない場合、コネクタが初期化されたときに、欠落している列がエラーとして示されます。

ただし、コネクタが最初の走査のためにデータベースにアクセスしようとしたときには、SQL ステートメントの無効な構文など、他のエラーのみを検出します。

構成パラメータのリファレンス

以降のセクションでは、構成パラメータについて詳しく説明します。各セクションでは、インラインの例を次の形式で示します。

key = value

key」(太字)は特定のパラメータのリテラル名で、「value」(斜体)はパラメータの特定の値です。

データソース アクセス

構成ファイルでは、Cloud Search データソースにアクセスするために必要なパラメータを最初に指定する必要があります。データソースを設定するために必要な手順については、サードパーティのデータソースを管理するをご覧ください。

設定 パラメータ
データソースの ID api.sourceId = 1234567890abcdef

必須。G Suite 管理者がセットアップした、Cloud Search ソースの ID。

ID ソースの ID api.identitySourceId = 0987654321lmnopq

外部のユーザーとグループを使用する場合は必須。G Suite 管理者がセットアップした、Cloud Search ID ソースの ID。

サービス アカウント api.serviceAccountPrivateKeyFile = ./PrivateKey.json

必須。G Suite 管理者が作成した、コネクタへのアクセスに必要な Cloud Search サービス アカウント キー ファイル。

データベース アクセス

コネクタがデータベースを走査できるようにするには、データベースのパスと、コネクタがそのデータベースにログインするための認証情報を指定する必要があります。次のデータベース アクセス パラメータを使用して、アクセス情報を構成ファイルに追加します。

設定 パラメータ
データベースの URL db.url = jdbc:mysql://127.0.0.1/dbname

必須。アクセス対象のデータベースのフルパス。

データベースのユーザー名とパスワード db.user = dbadmin
db.password = pas5w0rd

必須。コネクタがデータベースへのアクセスに使用する有効なユーザー名とパスワード。このデータベース ユーザーには、読み取り対象のデータベースの関連レコードに対する読み取りアクセス権が必要です。

JDBC ドライバ db.driverClass = oracle.jdbc.OracleDriver

JDBC 4.0 ドライバがクラスパスでまだ指定されていない場合にのみ、必須です。

走査の SQL ステートメントを構成する

コネクタは、走査を行うことにより、データベース レコードにアクセスしてインデックスに登録します。コネクタがデータベース レコードを走査できるようにするには、構成ファイルで SQL select クエリを指定する必要があります。コネクタでは、次の 2 種類の走査方法がサポートされています。

コネクタは、構成ファイルのスケジューリング オプションで定義したスケジュールに従って、これらの走査を行います(後述の走査をスケジュールするをご覧ください)。

フル走査

フル走査では、インデックス登録の対象として構成されているすべてのデータベース レコードが読み取られます。新しいレコードを Cloud Search のインデックスに登録し、既存のすべてのレコードをインデックスに再登録するには、フル走査が必要です。

設定 パラメータ
フル走査 db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field FROM employee

または

db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field FROM employee ORDER BY key OFFSET ? ROWS FETCH FIRST 1000 ROWS ONLY

必須。この例には、インデックス登録の対象となる、従業員データベース内のすべてのレコードを読み取る SQL select クエリが含まれています。

オフセットによるページ分割を使用する場合、SQL クエリには、ゼロから始まる行オフセットのプレースホルダ(「?」)が必要です。返される結果がなくなるまで、各フル走査でクエリが複数回実行されます。

db.allRecordsSql.pagination = offset

有効なページ分割オプションは次のとおりです。

  • none: ページ分割を使用しません。
  • offset: 行オフセットによるページ分割を使用します。

コネクタが任意の範囲(コンテンツ、一意の ID、ACL)で使用するすべての列名がこのクエリに存在する必要があります。コネクタは、起動時に予備検証を行ってエラーや欠落を検出します。このため、一般的な「SELECT * FROM …」クエリは使用しないでください。

ページ分割の例

オフセットによるページ分割を指定し、フル走査を複数のクエリに分割するには、次のようにします。
# For SQL Server 2012 or Oracle 12c (standard SQL 2008 syntax)
    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee \
        ORDER BY key OFFSET ? ROWS FETCH FIRST 1000 ROWS ONLY
    db.allRecordsSql.pagination = offset
    

または

# For MySQL or Google Cloud SQL
    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee \
        ORDER BY key LIMIT 1000 OFFSET ?
    db.allRecordsSql.pagination = offset
    

増分走査

デフォルトでは、コネクタは増分走査を行いません。ただし、変更されたレコードを示すタイムスタンプ項目がデータベースに含まれている場合は、新しく変更されたデータベース レコードとデータベースへの最近のエントリのみを読み取り、インデックスに再登録する増分走査を行うようにコネクタを構成できます。増分走査で読み取られるデータセットの方が小さいので、フル走査よりも効率的な場合があります。

増分走査のパラメータでは、走査の範囲を定義し、新しいレコードの追加や新しく変更されたデータベース レコードを識別するために使用するデータベース タイムスタンプを指定します。

設定 パラメータ
増分走査 db.incrementalUpdateSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time from employee where last_update_time > ?

または

db.incrementalUpdateSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time as timestamp_column from employee where last_update_time > ?

増分走査を使用する場合は必須。最終更新時刻のデータベース タイムスタンプ列を追跡するには、timestamp_column を SQL ステートメントに追加します。それ以外の場合は、コネクタ走査の現在のタイムスタンプを使用します。

この SQL select クエリの例では、変更されて、インデックスに再登録する必要があるすべてのレコードが読み取られます。

クエリ内の必須の「?」は、コネクタが増分走査の SQL クエリ間で追跡して保持するタイムスタンプ値のプレースホルダです。

コネクタはデフォルトで、次の増分走査で使用する増分クエリの開始時刻を保存します。それまでに増分走査が行われていない場合は、コネクタ実行の開始時刻が使用されます。

最初の増分走査の後、Cloud Search は、コネクタの再起動時に前の増分走査のタイムスタンプにアクセスできるようにタイムスタンプを保存します。

データベースのタイムゾーン db.timestamp.timezone = America/Los_Angeles

データベースのタイムスタンプに使用するタイムゾーンを指定します。デフォルトは、コネクタが実行されている地域のタイムゾーンです。

走査をスケジュールする

スケジュール関連のパラメータでは、コネクタの走査間隔(頻度)を指定します。

設定 パラメータ
指定した時間が経過した後にフル走査 schedule.traversalIntervalSecs = 7200

走査間隔を秒単位で指定します。デフォルト値は 86,400 秒(1 日)です。

コネクタの起動時にフル走査 schedule.performTraversalOnStart = false

コネクタを起動するたびにすぐに最初のフル走査を行うように指定するか(true)、行わないように指定します(false)。デフォルト値は true です。

指定した時間が経過した後に増分走査 schedule.incrementalTraversalIntervalSecs = 900

走査間隔を秒単位で指定します。デフォルト値は 300 秒(5 分)です。増分走査の SQL が定義されていない場合、このパラメータは使用されません。

列の定義

コネクタがデータベース レコードにアクセスし、インデックスに登録できるようにするには、構成ファイルで列の定義に関する情報を指定する必要があります。また、コネクタは、これらの列の定義を使用して、コネクタの起動時に構成エラーを検出します。

設定 パラメータ
すべての列 db.allColumns = customer_id, first_name, last_name, employee_id, interesting_field, last_update_time, linked_url

必須。データベースにアクセスするときに SQL クエリで必要なすべての列を指定します。このパラメータで定義した列は、クエリで明示的に参照する必要があります。他のすべての列定義パラメータが、この列セットと照合されます。

一意キーの列 db.uniqueKeyColumns = customer_id
db.uniqueKeyColumns = last_name, first_name

必須。一意の値を含む単一のデータベース列を指定するか、各値を結合して一意の ID を定義する列の組み合わせを指定します。

Cloud Search では、すべての検索可能なドキュメントにデータソース内で一意の識別子があることが必要です。このため、各データベース レコードは、その列値を使用して一意の ID を定義できる必要があります。別個のデータベースで複数のコネクタを実行するが、共通のデータセットにインデックス登録する場合は、すべてのドキュメント間で一意の ID を指定するよう十分に注意してください。

URL の列 url.format = https://www.example.com/{0}

表示 URL の形式を定義します。番号付きのパラメータは、db.columns で指定された列をゼロから順に参照します。

指定しない場合、デフォルトは「{0}」です。

url.columns = customer_id

必須。クリック可能な検索結果に使用される URL に使用する列の有効な定義済みの名前を指定します。関連する URL が各データベース レコードに関連付けられていないデータベースについては、静的リンクを各レコードに使用できます。

ただし、列の値が各レコードの有効なリンクを定義する場合は、表示 URL の列と形式の構成値を指定する必要があります。

url.columnsToEscape = customer_id

形式が設定された URL 文字列に挿入する前に値がパーセントでエンコードされる、db.columns の列を指定します。

URL の列の例

表示 URL に使用する列と URL の形式を指定するには、次のようにします。

# static URL not using any database record values
    url.format = https://www.example.com
    url.columns = customer_id
    

または

# single column value that is the view URL
    url.format = {0}
    url.columns = customer_url
    

または

# single column value that will be substituted into the view URL at position {0}
    url.format = https://www.example.com/customer/id={0}
    url.columns = customer_id
    url.columnsToEscape = customer_id
    

または

# multiple column values used to build the view URL (columns are order dependent)
    url.format = {1}/customer={0}
    url.columns = customer_id, linked_url
    url.columnsToEscape = customer_id
    

メタデータ構成パラメータ

メタデータ構成パラメータでは、アイテム メタデータを設定するために使用されるデータベース列を記述します。構成ファイルにこれらのパラメータが含まれていない場合は、デフォルト値が用いられます。次の表に、これらのパラメータを示します。
設定 パラメータ
タイトル itemMetadata.title.field=movieTitle
itemMetadata.title.defaultValue=Gone with the Wind
ドキュメント タイトルに対応する値を含むメタデータ属性。デフォルト値は空文字列です。
URL itemMetadata.sourceRepositoryUrl.field=url
itemMetadata.sourceRepositoryUrl.defaultValue=https://www.imdb.com/title/tt0031381/
検索結果のドキュメント URL の値を含むメタデータ属性。
作成タイムスタンプ itemMetadata.createTime.field=releaseDate
itemMetadata.createTime.defaultValue=1940-01-17
ドキュメント作成タイムスタンプの値を含むメタデータ属性。
最終更新時刻 itemMetadata.updateTime.field=releaseDate
itemMetadata.updateTime.defaultValue=1940-01-17
ドキュメントの最終変更タイムスタンプの値を含むメタデータ属性。
ドキュメント言語 itemMetadata.contentLanguage.field=languageCode
itemMetadata.contentLanguage.defaultValue=en-US
インデックス登録するドキュメントのコンテンツ言語。
スキーマ オブジェクト タイプ itemMetadata.objectType=movie
コネクタで使用されるオブジェクト タイプ(スキーマを作成して登録するときに定義したもの)。このプロパティを指定しないと、コネクタは構造化データをインデックス登録しません。

該当する場合、構成で定義する SQL クエリでこのスキーマ オブジェクトのプロパティを指定する必要があります。これはほとんどの場合、SQL ステートメントにエイリアスを追加することで指定できます。たとえば、映画のデータベースについて、データソース スキーマに「ActorName」というプロパティ定義が含まれているとすると、SQL ステートメントの形式は select …, last_name as ActorName, … from … のようになります。

スキーマ オブジェクトのプロパティ名と一致するすべての列が、インデックス登録されたデータベース レコードとともに自動的に渡され、データソースで構造化データとして使用されます。

: この構成プロパティは、メタデータ属性ではなく値そのものを指します。接尾辞 .field.defaultValue には対応していません。

日時書式

日時書式は、期待される書式をメタデータ属性で指定するものです。構成ファイルにこのパラメータが含まれていないと、デフォルト値が用いられます。次の表に、このパラメータを示します。
設定 パラメータ
追加の日時書式 structuredData.dateTimePatterns=MM/dd/uuuu HH:mm:ssXXX
セミコロンで区切った追加の java.time.format.DateTimeFormatter パターンを指定したリスト。これらのパターンは、メタデータまたはスキーマ内の日付や日時の項目の文字列値を解析するときに使用されます。デフォルト値は空のリストですが、RFC 3339 と RFC 1123 の書式は常にサポートされています。

コンテンツの項目

データベース レコードの値を Cloud Search にインデックス登録する利点は、それらの値を検索できるようになることです。コンテンツ オプションを使用して、検索可能なコンテンツの一部にするレコード値を定義します。

設定 パラメータ
コンテンツ データの列 db.contentColumns = customer_id, first_name, last_name

データベース内のコンテンツ列を指定します。コンテンツ列として指定したすべての列が書式設定され、検索可能なドキュメント コンテンツとして Cloud Search にアップロードされます。

値を指定しない場合、デフォルトは「*」で、すべての列がコンテンツに使用されることを示します。

コンテンツ テンプレートの列 contentTemplate.db.title = customer_id

必須。コンテンツ データの列は、コンテンツ テンプレートに基づいてインデックス登録のために書式設定されます。テンプレートでは、検索における各データ列値の優先度を定義します。最高品質の列定義は、必須の「タイトル」列です。

contentTemplate.db.quality.high = first_name, last_name
contentTemplate.db.quality.medium = interesting_field
contentTemplate.db.quality.low = employee_id

その他のコンテンツ列はすべて、「高」、「中」、「低」の検索品質項目として指定できます。特定のカテゴリに定義されていないコンテンツ列は、デフォルトで「低」に設定されます。

blob 列 db.blobColumn = blob_data

コンテンツ列の組み合わせの代わりにドキュメント コンテンツに使用する単一の blob 列の名前を示します。

blob 列が指定されている場合、コンテンツ列も定義されていると、エラーとみなされます。ただし、メタデータと構造化データの列定義は blob 列とともに使用できます。

アクセス制御リストのオプション

ACL を使用して、インデックスに登録されたレコードへのユーザー アクセスを保護するためのさまざまなオプションが用意されています。

設定 パラメータ
ドメイン全体 defaultAcl.mode = override
defaultAcl.public = true

有効なモードは次のとおりです。

  • none: デフォルトの ACL を使用しません。
  • fallback: ACL が存在しない場合に限り、デフォルトの ACL を使用します。
  • append: デフォルトの ACL を既存の ACL に追加します。
  • override: 既存の ACL をデフォルトの ACL に置き換えます。

defaultAcl.modeoverride に設定され、defaultAcl.publictrue に設定されている場合、これらのパラメータは「ドメイン全体」のアクセスを指定します。この場合、インデックス登録されたすべてのデータベース レコードが一般公開され、ドメイン内のすべてのユーザーがアクセスできるようになります。モード値によって、パブリック ACL をいつ適用するかが決まります。

defaultAcl.mode の設定が none の場合、ACL を個別に設定すると、レコードが検索可能になります。

共通定義 ACL defaultAcl.mode = fallback
defaultAcl.public = false
defaultAcl.readers.users = user1, user2,
google:user3
defaultAcl.readers.groups = google:group1, group2
defaultAcl.denied.users = user4, user5
defaultAcl.denied.groups = group3

これらのパラメータをすべて設定すると、データベース レコードに個別の ACL 定義がない場合にデータベースの各レコードに使用する「共通定義」ACL がセット全体で指定されます。この共通 ACL は、選択したモードに応じてデータベース全体のアクセスを制御するために使用されます。

google:」(リテラル定数)が先頭に付いていない限り、すべてのユーザーとグループは、ローカル ドメインで定義されたユーザー / グループとみなされます。

個別 ACL 構成パラメータで個別 ACL を指定すると、各レコードの列値に独自の ACL 情報が含まれます。

独自のアクセス許可を目的とした個別の ACL 情報が各データベース レコードに含まれている場合は、「閲覧者」や「拒否」ユーザーを取得する方法をコネクタが認識できるように、予約済みのリテラル定数の列エイリアスが SQL クエリに含まれている必要があります。次に示す予約済みのリテラルが SQL クエリに存在する場合、追加の構成は必要ありません。

readers_users

readers_groups

denied_users

denied_groups

個別 ACL の SQL クエリの例

次の例は、「個別」ACL を使用する SQL select クエリを示しています。

db.allRecordsSql = select customer_id, first_name, last_name,  employee_id, interesting_field, last_update_time, permitted_readers as readers_users, denied_readers as denied_users, permitted_groups as readers_groups, denied_groups as denied_groups from employee

    db.incrementalUpdateSql = select customer_id, first_name, last_name,  employee_id, interesting_field, last_update_time, permitted_readers as readers_users, denied_readers as denied_users, permitted_groups as readers_groups, denied_groups as denied_groups from employee where last_update_time > ?
    

クイック リファレンス

次の表に、データベース コネクタに関連する重要な必須パラメータとオプションのパラメータ、それらのデフォルト値を示します。

パラメータ 説明
db.driverClass デフォルト: 空の文字列

コネクタの JDBC ドライバ。

db.driverClass = oracle.jdbc.OracleDriver

db.url 必須

データベースの URL を設定します。

db.url = jdbc:mysql://localhost:3306/dbname
db.user デフォルト: 空の文字列

コネクタがデータベースのクエリに使用するデータベース ユーザー。

db.user = dbadmin

db.password デフォルト: 空の文字列

コネクタがデータベースのクエリに使用するデータベース ユーザーのパスワード。

db.password = pas5w0rd
db.allRecordsSql 必須

データベース内のレコードの関連する列をすべて取得するための SQL クエリを定義します。

db.allRecordsSql = select customer_id, first_name, last_name, employee_id, interesting_field from employee
db.allRecordsSql.pagination デフォルト: none

次のいずれかのページ分割オプションを指定します。

  • none: ページ分割を使用しません。
  • offset: 行オフセットによるページ分割を使用します。

db.allRecordsSql.pagination = offset

db.incrementalUpdateSql デフォルト: 無効(空の文字列)

通常はタイムスタンプに基づいて、最近変更されたドキュメントを取得するための増分走査のクエリ。

db.incrementalUpdateSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time from employee where last_update_time > ?

db.timestamp.timezone デフォルト: 同じタイムゾーンを使用(空の文字列)

データベース サーバーとコネクタのタイムゾーンが異なる場合に DB サーバーのタイムゾーンを指定します。

db.timestamp.timezone = America/Los_Angeles
schedule.
traversalIntervalSecs
デフォルト: 86400(1 日の秒数)

フル走査の間隔 - コネクタの traversal() メソッドが次のスケジュールで呼び出されます。

schedule.traversalIntervalSecs = 7200
schedule.
performTraversalOnStart
デフォルト: true

起動時にフル走査を呼び出します。

schedule.performTraversalOnStart = false
schedule.
incrementalTraversalIntervalSecs
デフォルト: 300

変更されたレコードの増分走査を呼び出す間隔を示す秒数(db.updataSql が必要)。

schedule.incrementalTraversalIntervalSecs = 900
db.allColumns 必須

他の列定義で使用されるメイン SQL クエリ内のすべての列名とエイリアス。

db.allColumns = customer_id, first_name, last_name, employee_id, interesting_field, last_update_time, linked_url
db.uniqueKeyColumns 必須

データベース クエリの結果に一意の識別子を提供する、カンマで区切られた(name:type 形式の)1 つ以上の列見出し名。

db.uniqueKeyColumns = customer_id
url.format デフォルト: {0}

URL の列の形式を指定します。

url.format = https://www.example.com/employee/id={0}
url.columns 必須

検索結果に視認可能な URL を作成するために使用する SQL クエリの列を指定します。

url.columns = customer_id
url.columnsToEscape デフォルト: 空の文字列

形式が設定された URL 文字列に挿入する前に値がパーセントでエンコードされる、db.columns の列を指定します。

url.columnsToEscape = customer_id
itemMetadata.title.field デフォルト: 空の文字列

メタデータ「タイトル」に使用するレコードの列を指定します。

itemMetadata.title.field = customer_id
itemMetadata.createTime.field デフォルト: 空の文字列

メタデータ「作成日」に使用するレコードの列を指定します。

itemMetadata.createTime.field = created_timestamp
itemMetadata.updatetime.field デフォルト: 空の文字列

メタデータ「変更日」に使用するレコードの列を指定します。

itemMetadata.updatetime.field = last_update_time
itemMetadata.contentLanguage.field デフォルト: 空の文字列

メタデータ「言語」に使用するレコードの列を指定します。

itemMetadata.contentLanguage.field = language_used
itemMetadata.objectType デフォルト: 空の文字列

スキーマ「オブジェクト」に使用するレコードの列を指定します。注: これはリテラル名であり、列の値ではありません。

itemMetadata.objectType = schema_object_name
db.contentColumns デフォルト: *(db.allRecords.Sql のすべての列)

データベース レコード コンテンツを取得するために使用する SQL クエリの列を定義します。

db.contentColumns = customer_id, first_name, last_name
contentTemplate.db.title 必須

コンテンツの HTML タイトルと検索品質が「最高」の項目を指定します。

contentTemplate.db.title = id
contentTemplate.db.quality.high デフォルト: 空の文字列

検索品質の値を「高」に設定するコンテンツの項目を指定します。

contentTemplate.db.quality.high = first_name, last_name
contentTemplate.db.quality.medium デフォルト: 空の文字列

検索品質の値を「中」に設定するコンテンツの項目を指定します。

contentTemplate.db.quality.medium = interesting_field
contentTemplate.db.quality.low デフォルト: 指定されていないすべての項目の検索品質の値は、デフォルトで「低」に設定されます

検索品質の値を「低」に設定するコンテンツの項目を指定します。

contentTemplate.db.quality.low = employee_id
db.blobColumn デフォルト: 空の文字列

データベースがレコード コンテンツに単一の BLOB 列を使用することを指定します。

db.blobColumn=blob_data
defaultAcl.mode デフォルト: none

次のいずれかの ACL モードを指定します。

  • none: デフォルトの ACL を使用しません。
  • fallback: ACL が存在しない場合に限り、デフォルトの ACL を使用します。
  • append: デフォルトの ACL を既存の ACL に追加します。
  • override: 既存の ACL をデフォルトの ACL に置き換えます。

defaultAcl.mode = override

defaultAcl.public デフォルト: false

リポジトリ全体で使用されるデフォルトの ACL がパブリックであることを指定します。

defaultAcl.public=true
defaultAcl.readers.users defaultAcl.modefallback に設定され、defaultAcl.publicfalse に設定されている場合にのみ使用されます。

共通 ACL の閲覧者をカンマ区切りリストで指定します。

defaultAcl.readers.users=user1,user2,user3
defaultAcl.readers.groups defaultAcl.modefallback に設定され、defaultAcl.publicfalse に設定されている場合にのみ使用されます。

共通 ACL のグループ閲覧者をカンマ区切りリストで指定します。

defaultAcl.readers.groups=group1,group2
defaultAcl.denied.users defaultAcl.modefallback に設定され、defaultAcl.publicfalse に設定されている場合にのみ使用されます。

リポジトリ全体の拒否ユーザーを指定します。

defaultAcl.denied.users=user4,user5
defaultAcl.denied.groups defaultAcl.modefallback に設定され、defaultAcl.publicfalse に設定されている場合にのみ使用されます。

リポジトリ全体の許可グループを指定します。

defaultAcl.denied.groups=group3
defaultAcl.name デフォルト: DEFAULT_ACL_VIRTUAL_CONTAINER

デフォルトの ACL が適用される仮想コンテナの名前を指定します。

defaultAcl.name = employee-db-default-acl
api.defaultRequestMode デフォルト: SYNCHRONOUS

走査で(非同期更新ではなく)同期更新モードを使用することを指定します。

api.defaultRequestMode = ASYNCHRONOUS
traverse.exceptionHandler デフォルト: 0

走査で例外を無視するか(「ignore」)、例外が検出されたら常に中断するか(「0」)、特定の数の例外が検出されたら中断するか(「10」)を指定します。

traverse.exceptionHandler = ignore