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

警告: Cloud Search リファレンス コネクタは「現状のまま」提供されますサンプルコードとして コネクタの作成に使用できます。このサンプルコードでは、 大規模なカスタマイズとテストを行ってから、概念実証または デプロイできます。本番環境で使用する場合は、Google Cloud で 検索することもできます適切な Cloud 検索パートナーの場合は、Google アカウント マネージャーにお問い合わせください。

Google Cloud Search を設定すると、組織のさまざまなソースからデータを検出してインデックスに登録できます。 Google Cloud Search データベース コネクタを使用します。

重要な考慮事項

Cloud Search データベース コネクタは、Java アプリを実行できるほぼすべての環境にインストールして実行できます。ただし、コネクタが両方にアクセスできる必要があります。 インターネットとデータベースです

システム要件

システム要件
オペレーティング システム Windows または Linux
SQL データベース JDBC 4.0 以降に準拠したドライバを使用する、以下を含む SQL データベース。
<ph type="x-smartling-placeholder">
    </ph>
  • MS SQL Server(2008、2012、2014、2016)
  • Oracle(11g、12c)
  • Google Cloud SQL
  • MySQL
ソフトウェア データベースへのアクセスに使用するコネクタの JDBC ドライバ(別途ダウンロード、インストール)

コネクタをデプロイする

次の手順では、コネクタをインストールして構成する方法について説明します。 指定したデータベースにインデックスを付けて、その結果を Cloud Search ユーザーに返します。

前提条件

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-database-connector-v1-0.0.3

ステップ 2. データベース コネクタを構成する

  1. テキスト ファイルを作成し、connector-config.properties(デフォルト)などの名前を付けます。Google が推奨 .properties を使用して構成ファイルに名前を付けることです。 または .config 拡張子を使用し、ファイルをコネクタと同じディレクトリに保持してください。 別の名前やパスを使用する場合は、コネクタの実行時にパスを指定する必要があります。
  2. パラメータを Key-Value ペアとしてファイルの内容に追加します。構成ファイルは、必ず データソース アクセス、データベース アクセス、データベースのフル走査 SQL ステートメントのパラメータ コンテンツフィールドのタイトル、列の定義 などがあります他のコネクタの動作も構成できます オプションのパラメータがあります。次に例を示します。
    # Required parameters for data source access
    api.sourceId=1234567890abcdef
    api.identitySourceId=0987654321lmnopq
    api.serviceAccountPrivateKeyFile=./PrivateKey.json
    #
    # Required parameters for database access
    db.url=jdbc:mysql://localhost:3306/mysql_test
    db.user=root
    db.password=passw0rd
    #
    # Required full traversal SQL statement parameter
    db.allRecordsSql=select customer_id, first_name, last_name, phone, change_timestamp from address_book
    #
    # Required parameters for column definitions and URL format
    db.allColumns=customer_id, first_name, last_name, phone, change_timestamp
    db.uniqueKeyColumns=customer_id
    url.columns=customer_id
    #
    # Required content field parameter
    contentTemplate.db.title=customer_id
    #
    # Optional parameters to set ACLs to "entire domain" access
    defaultAcl.mode=fallback
    defaultAcl.public=true
    #
    # Optional parameters for schedule traversals
    schedule.traversalIntervalSecs=36000
    schedule.performTraversalOnStart=true
    schedule.incrementalTraversalIntervalSecs=3600
    

    データベース固有のパラメータについて詳しくは、 構成パラメータのリファレンスをご覧ください。

    すべての Cloud Search に共通するパラメータについて学ぶには、 などのコネクタ(メタデータ構成、日時形式、ACL オプションなど)については、 <ph type="x-smartling-placeholder"></ph> Google 提供のコネクタ パラメータ

    該当する場合は、走査 SQL でスキーマ オブジェクトのプロパティを指定します。 クエリ パラメータを指定します。通常は、SQL にエイリアスを追加できます。 ステートメントです。たとえば映画や データソース スキーマに "ActorName" の場合、SQL ステートメントは SELECT …, last_name AS ActorName, … FROM … の形式になります。

ステップ 3. データベース コネクタを実行する

次の例は、必要なコンポーネントがローカルに配置されていることを前提としています。 このディレクトリに配置されます。

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

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 はカスタム名を持つ構成ファイルです。コネクタが コマンドラインでそのパスを指定します。それ以外の場合、コネクタは connector-config.properties(お住まいの地域) ディレクトリを指定します。

コネクタは、検出すると構成エラーを報告します。一部のエラーは データベース列がレコード コンテンツの一部として定義されている場合など、コネクタが初期化する (db.allColumns 内)であるものの、その列は データベース(db.allRecordsSql 内)。その他のエラーは、次の場合にのみ検出、報告されます。 コネクタは最初の走査(SQL ステートメント構文が無効など)でデータベースにアクセスしようとします。

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

データソースのアクセス パラメータ

設定 パラメータ
データソース ID api.sourceId = source-ID

必須。Cloud Search ソース ID。

ID ソースの ID api.identitySourceId = identity-source-ID

ACL に外部のユーザーとグループを使用する場合に必要です。Cloud Search ID ソースの ID です。

サービス アカウント api.serviceAccountPrivateKeyFile = path-to-private-key

必須。Cloud Search へのパス サービス アカウント キー ファイル。

データベース アクセス パラメータ

設定 パラメータ
データベースの URL db.url = database-URL

必須。「 アクセスするデータベースのフルパス(jdbc:mysql://127.0.0.1/dbname など)。

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

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

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

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

走査 SQL クエリ パラメータ

コネクタが SQL SELECT を使用してデータベース レコードを走査する クエリを記述できます。フル走査クエリを構成する必要があります。検索語句 増分走査は省略可能です

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

増分走査では、新しく変更されたデータベースのみを読み取り、インデックスを再登録します。 最近のエントリをデータベースに保存しています。増分走査は、 実現できます。増分走査を使用するには、データベースにタイムスタンプ フィールドが含まれている必要があります 示されます。

コネクタは、コネクタが定義したスケジュールに従って走査を実行します。 走査スケジュール パラメータ

設定 パラメータ
フル走査クエリ db.allRecordsSql = SELECT column-1[, column-2,...] FROM database-name

必須。このクエリはフル走査ごとに実行されます。

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

フル走査のページネーション db.allRecordsSql.pagination = {none | offset}

値は次のいずれかです。

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

    オフセットによるページ分割を使用するには、SQL クエリにプレースホルダの疑問符(?)が必要です 使用します。各フル走査でクエリは繰り返し実行されます 結果が返されなくなるまで待機します。

増分走査のクエリ db.incrementalUpdateSql = SELECT column-1[, column-2,...] FROM database-name WHERE last_update_time > ?

増分走査をスケジュールする場合に必要です。

「?」タイムスタンプ値の必須のプレースホルダです。「 コネクタはタイムスタンプを使用して、増分走査の SQL クエリ間の変更を追跡します。

最終更新時刻のデータベースのタイムスタンプ列を追跡するには、 SQL ステートメントの timestamp_column エイリアス。それ以外の場合は、現在のタイムスタンプを コネクタ走査の 3 つです

最初の増分走査では、コネクタの開始時間が使用されます。 最初の増分走査が行われると、Cloud Search は コネクタの再起動時に以前の増分走査にアクセスできる あります。

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

データベースのタイムスタンプに使用するタイムゾーンを指定します。新規レコードの追加または新規レコードの識別に使用されるデータベースのタイムスタンプ 含まれるようになりました。デフォルトは、コネクタが実行されているローカル タイムゾーンです。

走査 SQL クエリの例

  • 従業員データベース内のすべての対象レコードを読み取り、インデックス作成を行う基本的なフル走査クエリ:
    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee
  • オフセットでページ分割を指定し、フル走査を複数のクエリに分割します。

    SQL Server 2012 または Oracle 12c の場合(標準 SQL 2008 構文):

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

    MySQL または Google Cloud SQL の場合:

    db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \
        FROM employee \
        ORDER BY customer_id LIMIT 1000 OFFSET ?
    db.allRecordsSql.pagination = offset
  • エイリアスを使用して個々の ACL を適用するフル走査クエリ:
    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 \
         FROM employee \
         WHERE last_update_time > ?
  • エイリアスを使用して個々の ACL を適用する増分走査のクエリ:
    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.incrementalUpdateSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field, \
         last_update_time AS timestamp_column \
         FROM employee \
         WHERE last_update_time > ?

列定義パラメータ

次のパラメータでは、走査ステートメントで使用する列を指定し、 一意に識別できるからです

設定 パラメータ
すべての列 db.allColumns = column-1, column-2, ...column-N

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

例:

db.allColumns = customer_id, first_name, last_name, phone, change_timestamp
一意キーの列 db.uniqueKeyColumns = column-1[, column-2]

必須。次のいずれかをリストします。 一意の値、または次の組み合わせで構成された単一のデータベース列 複数の列の値をまとめて一意の ID を定義します。

Cloud Search では、すべての検索可能なドキュメントにデータソース内で一意の識別子があることが必要です。データベース レコードごとに一意の ID を定義できる 取得できます。別々のデータベースで複数のコネクタを実行するが、 共通データセットに対するインデックスを作成するには、そのデータセットに一意の ID を すべてのドキュメントに対して適用されます。

例:

db.uniqueKeyColumns = customer_id
# or
db.uniqueKeyColumns = last_name, first_name
[URL リンク] 列 url.columns = column-1[, column-2]

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

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

URL 形式 url.format = https://www.example.com/{0}

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

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

次の表に例を示します。

URL のパーセントでエンコードされた列 url.columnsToEscape = column-1[, column-2]

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

URL の列の例

走査クエリで使用する列と表示 URL の形式を指定するには:

  • データベース レコードの値を使用せずに静的 URL を使用するには:
    url.format = https://www.example.com
  • ビューの URL である単一の列値を使用するには:
    url.format = {0}
    url.columns = customer_id
  • 単一の列値を位置 {0} で表示 URL に代入するには、次のようにします。
    url.format = https://www.example.com/customer/id={0}
    url.columns = customer_id
    url.columnsToEscape = customer_id
  • 複数の列の値を使用して表示 URL を構築するには(列は順序に依存します):
    url.format = {1}/customer={0}
    url.columns = customer_id, linked_url
    url.columnsToEscape = customer_id

コンテンツの項目

コンテンツ オプションを使用して、検索可能なコンテンツの一部にするレコード値を定義します。

設定 パラメータ
最高品質の検索列 contentTemplate.db.title = column-name

必須。検索インデックスと結果の優先順位付けのための最高品質の列。

検索用の列の優先順位付け contentTemplate.db.quality.high = column-1[, column-2...]
contentTemplate.db.quality.medium = column-1[, column-2...]
contentTemplate.db.quality.low = column-1[, column-2...]

コンテンツ列を指定(contentTemplate.db.title 用の列セットを除く) 検索品質を高、中、低に分類します指定されていない列はデフォルトで「低」に設定されます。

コンテンツ データ列 db.contentColumns = column-1[, column-2...]

データベースのコンテンツ列を指定します。これらは形式化された 検索可能なドキュメント コンテンツとして Cloud Search にアップロードされます。

値を指定しない場合、デフォルトは「*」です。すべての Pod が 列を使用する必要があることを示しています。

blob 列 db.blobColumn = column-name

単一の blob の名前を指定する 列の組み合わせではなく、ドキュメントのコンテンツに使用する列を指定します。

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