Déployer un connecteur de base de données

Ce guide est destiné aux administrateurs du connecteur de base de données Google Cloud Search, c'est-à-dire à toute personne chargée de l'obtention, du déploiement, de la configuration et de la maintenance de ce connecteur.

Ce guide contient des instructions permettant de réaliser les principales tâches associées au déploiement d'un connecteur :

  • Télécharger le logiciel Cloud Search Connector for Databases
  • Configurer le connecteur pour une source de données SQL spécifique
  • Exécuter le connecteur

Pour comprendre les concepts présentés dans ce document, vous devez connaître les concepts liés aux bases de données, le langage SQL (Structured Query Language), les principes de base des listes de contrôle d'accès (LCA) et les systèmes d'exploitation Windows ou Linux.

Ce guide ne fournit pas d'informations sur les tâches que l'administrateur G Suite doit effectuer pour mapper Google Cloud Search sur le connecteur de base de données. Pour plus d'informations sur ces tâches, reportez-vous à la page relative à la gestion de sources de données tierces.

Présentation du connecteur de base de données Google Cloud Search

Par défaut, Cloud Search peut explorer, indexer et diffuser du contenu extrait de données G Suite telles que des documents et des feuilles de calcul. Toutefois, vous pouvez étendre les fonctionnalités de Cloud Search aux données de vos propres dépôts de base de données grâce au connecteur de base de données Google Cloud Search.

Le connecteur importe les requêtes d'indexation dans l'API Cloud Search Indexing et synchronise l'index Cloud Search avec le dépôt de la base de données tierce en réindexant celle-ci intégralement de façon périodique.

Le connecteur de base de données Cloud Search permet de contrôler l'accès des utilisateurs aux documents répertoriés dans les résultats de recherche à l'aide de listes de contrôle d'accès. Pour plus d'informations à ce sujet, reportez-vous à la section Options de la liste de contrôle d'accès.

Comportement du connecteur

En tant qu'administrateur du connecteur de base de données Cloud Search, il vous appartient de créer le fichier de configuration qui détermine le comportement de ce connecteur. Dans ce fichier, vous définissez les principaux aspects suivants relatifs au comportement du connecteur :

  • Accès à la base de données cible
  • Identification du contenu à inclure dans l'index de recherche
  • Exécution des balayages
  • Observation du planning de balayage
  • Envoi des requêtes SQL à la base de données pour récupérer les enregistrements
  • Mise en œuvre des listes de contrôle d'accès (LCA)

Pour attribuer un comportement particulier au connecteur, définissez les paires clé/valeur des paramètres que vous souhaitez personnaliser dans le fichier de configuration. Pour plus d'informations sur ce processus, reportez-vous à la section Configurer le connecteur de base de données.

Une fois que vous avez défini tous les paramètres voulus dans le fichier de configuration, vous disposez des éléments nécessaires pour déployer le connecteur.

Indexation du contenu de la base de données

Une fois déployé, le connecteur de base de données Cloud Search communique avec la source de données que vous avez connectée à votre compte G Suite et explore son contenu par le biais d'un processus appelé balayage. Au cours de ce balayage, le connecteur envoie des requêtes SQL SELECT au dépôt pour extraire les données des documents. Le connecteur récupère ces données et les importe dans l'API Indexing, qui les indexe et les diffuse à vos utilisateurs.

Le connecteur commence par effectuer un balayage complet qui consiste à lire et indexer tous les enregistrements de la base de données. Vous pouvez planifier les balayages complets suivants à intervalle régulier. Vous pouvez également planifier des balayages incrémentiels si votre base de données le permet. Lors d'un balayage incrémentiel, seuls les enregistrements qui ont été modifiés dans la base de données sont lus et indexés.

Configuration du connecteur

Vous pouvez installer et exécuter le connecteur de base de données Cloud Search dans pratiquement tous les environnements permettant d'exécuter des applications Java, à condition que le connecteur ait accès à Internet et à la base de données. Sachant que vous déployez le connecteur sur un hôte distinct de Google Cloud Search et du dépôt de données, vous devez d'abord vous assurer que vous disposez des informations nécessaires concernant G Suite et la base de données pour établir des liens entre Google Cloud Search, le connecteur et le dépôt de données. Pour permettre au connecteur d'accéder à la base de données, vous devez lui fournir des informations spécifiques lors des étapes de configuration décrites dans la section Comportement du connecteur de ce document.

Pour configurer l'accès du connecteur à Cloud Search, vous devez disposer d'un compte de service, d'un ID de compte de service et d'un ID de source de données. Vous devez ajouter l'ID de la source et le chemin d'accès au fichier contenant la clé privée du compte de service à la configuration du connecteur, comme indiqué dans l'exemple de fichier de configuration. En règle générale, l'administrateur G Suite du domaine peut vous fournir ces identifiants.

Après vous être assuré que votre environnement est correctement configuré, vous pouvez commencer la procédure de déploiement.

Bases de données compatibles

Le connecteur de base de données Cloud Search est compatible avec toutes les bases de données SQL associées à un pilote JDBC, version 4.0 ou ultérieure, y compris les suivantes :

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

Les informations permettant d'identifier la base de données cible doivent être fournies durant le processus de configuration du connecteur. Pour en savoir plus, reportez-vous à la section Accès à la base de données.

Avant de déployer le connecteur de base de données

Avant de procéder au déploiement du connecteur de base de données Cloud Search, vérifiez que votre environnement possède tous les composants requis suivants :

  • Clé privée G Suite (qui contient l'ID du compte de service)
  • ID de la source de données G Suite
  • Fichier JAR du connecteur de base de données, installé sur une machine hôte
  • Base de données cible compatible
  • Pilote SQL permettant d'accéder à la base de données

Procédure de déploiement

Le déploiement du connecteur de base de données Cloud Search se déroule en trois étapes :

  1. Télécharger et enregistrer le logiciel du connecteur de base de données Cloud Search
  2. Configurer le connecteur de base de données Cloud Search
  3. Exécuter le connecteur de base de données Cloud Search

Étape 1. Télécharger et enregistrer le logiciel du connecteur de base de données

Google fournit le logiciel d'installation du connecteur dans le fichier suivant :

    google-cloudsearch-database-connector-v1-0.0.2.zip

Téléchargez le connecteur de base de données et extrayez-le dans le répertoire de travail local où il s'exécutera. Ce répertoire peut également contenir tous les fichiers nécessaires à l'exécution du connecteur, y compris le fichier de configuration, le fichier contenant la clé du compte de service et éventuellement le fichier JAR du pilote JDBC.

Étape 2. Configurer le connecteur de base de données

Pour que le connecteur puisse accéder à une base de données et indexer des contenus pertinents, vous devez créer son fichier de configuration.

Pour créer un fichier de configuration :

  1. Ouvrez l'éditeur de texte de votre choix.
  2. Ajoutez des paires clé/valeur au fichier. Pour ce faire, référez-vous à l'exemple de fichier de configuration.
  3. Nommez le fichier de configuration.

    Vous pouvez lui donner le nom de votre choix, Mysql.properties, par exemple. Par souci de cohérence, Google recommande d'attribuer l'une des extensions suivantes au fichier de configuration : .properties ou .config .

Il n'y a pas d'emplacement standard dans lequel enregistrer le fichier de configuration, car vous pouvez spécifier son chemin d'accès dans la ligne de commande. Cependant, nous vous invitons à l'enregistrer dans le même répertoire que le connecteur afin de simplifier le suivi et l'exécution de ce dernier.

Pour vous assurer que le connecteur reconnaît votre fichier de configuration, indiquez son chemin d'accès dans la ligne de commande. Sinon, le connecteur utilisera le nom de fichier par défaut connector-config.properties dans votre répertoire local. Pour plus d'informations sur la spécification du chemin d'accès au fichier de configuration dans la ligne de commande, reportez-vous à la section Exécuter le connecteur de base de données.

Exemple de fichier de configuration

L'exemple de fichier de configuration suivant indique des paires clé/valeur définissant les paramètres de comportement d'un connecteur. De nombreux paramètres ont des valeurs par défaut que le connecteur utilise lorsque la valeur du paramètre n'est pas définie dans le fichier.

#
# 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

Pour une description détaillée de chaque paramètre, reportez-vous au guide de référence des paramètres de configuration.

Étape 3. Exécuter le connecteur de base de données

L'exemple suivant suppose que les composants requis se trouvent dans le répertoire local d'un système Linux.

Pour exécuter le connecteur à partir de la ligne de commande, saisissez la commande suivante :

java -cp "google-cloud-search-database-connector-[version number]:mysql-connector-java-5.1.41-bin.jar"
com.google.enterprise.cloudsearch.database.DatabaseFullTraversalConnector -Dconfig=mysql.config

Détails de la commande :

  • google-cloud-search-database-connector-[version number].jar est le fichier JAR du connecteur de base de données.
  • mysql-connector-java-5.1.41-bin.jar est le pilote SQL permettant d'accéder à la base de données.
  • mysql.config est le fichier de configuration.

Le connecteur tente de détecter les erreurs de configuration le plus tôt possible. Par exemple, si une colonne de la base de données est définie en tant que contenu de l'enregistrement, mais est absente de la requête SQL adressée à la base de données, elle est signalée comme une erreur à l'initialisation du connecteur.

Cependant, le connecteur détecte les autres erreurs, telles que les syntaxes incorrectes dans les instructions SQL, uniquement lorsqu'il tente d'accéder à la base de données pour effectuer le premier balayage.

Guide de référence des paramètres de configuration

Les sections suivantes décrivent les paramètres de configuration de manière détaillée. Les exemples qui y sont présentés ont le format suivant :

clé = valeur

"clé" (en gras) représente ici le nom littéral du paramètre et "valeur" (en italique) la valeur de ce dernier.

Accès à la source de données

Les premiers paramètres à définir dans le fichier de configuration sont ceux qui permettent d'accéder à la source de données Cloud Search. La procédure à suivre pour configurer une source de données est présentée sur la page relative à la gestion de sources de données tierces.

Élément Paramètre
ID de la source de données api.sourceId = 1234567890abcdef

Obligatoire. ID de la source Cloud Search créée par l'administrateur G Suite.

ID de la source d'identité api.identitySourceId = 0987654321lmnopq

Obligatoire en présence d'utilisateurs et de groupes externes. ID de la source d'identité Cloud Search créée par l'administrateur G Suite.

Compte de service api.serviceAccountPrivateKeyFile = ./PrivateKey.json

Obligatoire. Fichier contenant la clé du compte de service Cloud Search créé par l'administrateur G Suite pour assurer l'accessibilité du connecteur.

Accès à la base de données

Pour que le connecteur puisse balayer une base de données, vous devez lui indiquer le chemin d'accès à celle-ci et les identifiants qui lui permettront de s'y connecter. Les paramètres suivants vous permettent de spécifier les informations d'accès à la base de données dans le fichier de configuration.

Élément Paramètre
URL de la base de données db.url = jdbc:mysql://127.0.0.1/dbname

Obligatoire. Chemin d'accès complet à la base de données concernée.

Nom d'utilisateur et mot de passe de la base de données db.user = dbadmin
db.password = pas5w0rd

Obligatoire. Nom d'utilisateur et mot de passe valides qui permettront au connecteur d'accéder à la base de données. Cet utilisateur de la base de données doit disposer d'un droit d'accès en lecture aux enregistrements pertinents de la base de données à lire.

Pilote JDBC db.driverClass = oracle.jdbc.OracleDriver

Obligatoire uniquement si le pilote JDBC 4.0 n'est pas déjà spécifié dans le chemin d'accès de la classe.

Configurer les instructions SQL de balayage

Le connecteur consulte et indexe les enregistrements de la base de données en réalisant des balayages. Pour que le connecteur puisse balayer les enregistrements de la base de données, vous devez définir des requêtes SQL SELECT dans le fichier de configuration. Le connecteur peut mettre en œuvre deux méthodes de balayage :

Le connecteur exécute ces balayages selon le planning que vous avez défini dans les options de planification du fichier de configuration, lesquelles sont décrites dans la section Planifier les balayages ci-dessous.

Balayage complet

Le balayage complet consiste à lire tous les enregistrements de la base de données qui sont configurés pour l'indexation. Ce type de balayage est nécessaire pour indexer les nouveaux enregistrements destinés à Cloud Search et pour réindexer tous les enregistrements existants.

Élément Paramètre
Balayage complet db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field FROM employee

OU

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

Obligatoire. Cet exemple présente une requête SQL SELECT qui lit tous les enregistrements intéressants dans une base de données de collaborateurs à indexer.

Si vous utilisez la pagination par décalage (offset), la requête SQL doit comprendre un espace réservé ("?") représentant le décalage de lignes, à partir de zéro. La requête sera exécutée plusieurs fois lors de chaque balayage complet, jusqu'à ce qu'aucun résultat ne soit obtenu.

db.allRecordsSql.pagination = offset

Les options de pagination valides sont les suivantes :

  • none : aucune pagination
  • offset : utilise la pagination par décalage de lignes

Tous les noms de colonne que le connecteur utilisera, dans quelque contexte que ce soit (contenu, identifiant unique, LCA) doivent être indiqués dans cette requête. Le connecteur effectue certaines vérifications préliminaires au démarrage pour détecter les erreurs et les omissions. Pour cette raison, veillez à ne pas utiliser une requête générale "SELECT * FROM …".

Exemples de paginations

Pour spécifier la pagination par décalage et diviser ainsi un balayage complet en plusieurs requêtes :
# 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

ou

# 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

Balayage incrémentiel

Par défaut, le connecteur n'effectue pas de balayages incrémentiels. Toutefois, si votre base de données contient des champs d'horodatage signalant les enregistrements modifiés, vous pouvez configurer le connecteur de sorte qu'il effectue des balayages incrémentiels permettant de lire et de réindexer uniquement les enregistrements récemment modifiés et les entrées récentes de la base de données. Dans la mesure où le balayage incrémentiel lit un ensemble de données plus petit, il peut s'avérer beaucoup plus efficace qu'un balayage complet.

Les paramètres du balayage incrémentiel définissent la portée du balayage, ainsi que l'horodatage permettant d'identifier les nouveaux enregistrements ou les enregistrements modifiés dans la base de données.

Élément Paramètre
Balayage incrémentiel db.incrementalUpdateSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time from employee where last_update_time > ?

OU

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 > ?

Obligatoire pour les balayages incrémentiels. Pour effectuer le suivi de la colonne d'horodatage indiquant la date de dernière modification, ajoutez timestamp_column à l'instruction SQL. Sinon, utilisez l'horodatage actuel du balayage effectué par le connecteur.

L'exemple de requête SQL SELECT présenté ici permet de lire tous les enregistrements modifiés qui doivent être réindexés.

L'espace réservé obligatoire "?" représente une valeur d'horodatage que le connecteur suit et conserve entre les requêtes SQL de balayage incrémentiel.

Par défaut, le connecteur stocke l'heure de début de la requête incrémentielle afin de l'utiliser lors du balayage incrémentiel suivant. Si aucun balayage incrémentiel n'a encore été réalisé, l'heure de début utilisée est celle de l'exécution du connecteur.

Après le premier balayage incrémentiel, Cloud Search stocke l'horodatage de celui-ci, de sorte que, à son redémarrage, le connecteur puisse accéder à l'horodatage du précédent balayage incrémentiel.

Fuseau horaire de la base de données db.timestamp.timezone = America/Los_Angeles

Spécifie le fuseau horaire à utiliser pour les horodatages de la base de données. La valeur par défaut est le fuseau horaire de la région où le connecteur s'exécute.

Planifier les balayages

Les paramètres de planification déterminent la fréquence des balayages effectués par le connecteur.

Élément Paramètre
Balayage complet à intervalle régulier schedule.traversalIntervalSecs = 7200

Spécifie l'intervalle entre les balayages, exprimé en secondes. La valeur par défaut est 86400 (soit le nombre de secondes dans une journée).

Balayage complet au démarrage du connecteur schedule.performTraversalOnStart = false

Spécifie que le premier balayage complet doit (true) ou ne doit pas (false) être effectué à chaque démarrage du connecteur. La valeur par défaut est true.

Balayage incrémentiel à un intervalle régulier schedule.incrementalTraversalIntervalSecs = 900

Spécifie l'intervalle entre les balayages, exprimé en secondes. La valeur par défaut est 300 (soit le nombre de secondes dans 5 minutes). Ce paramètre n'est pas utilisé si la requête SQL de balayage incrémentiel n'est pas définie.

Définitions des colonnes

Pour que le connecteur puisse consulter et indexer les enregistrements de la base de données, vous devez lui fournir les définitions des colonnes spécifiées dans le fichier de configuration. Ces définitions permettent également au connecteur de détecter les erreurs de configuration lors de son démarrage.

Élément Paramètre
Toutes les colonnes db.allColumns = customer_id, first_name, last_name, employee_id, interesting_field, last_update_time, linked_url

Obligatoire. Identifie toutes les colonnes requises dans une requête SQL lors de l'accès à la base de données. Les colonnes définies avec ce paramètre doivent être explicitement référencées dans les requêtes. Tous les autres paramètres de définition des colonnes sont vérifiés par rapport à cet ensemble de colonnes.

Colonnes à clé unique db.uniqueKeyColumns = customer_id
db.uniqueKeyColumns = last_name, first_name

Obligatoire. Répertorie soit une colonne de la base de données contenant des valeurs uniques, soit une combinaison de colonnes dont les valeurs réunies représentent un identifiant unique.

Cloud Search requiert que chaque document inclus dans l'index de recherche soit associé à un identifiant unique dans une source de données. C'est la raison pour laquelle chaque enregistrement doit pouvoir être associé à un identifiant unique grâce à ses valeurs de colonne. Veillez à fournir un identifiant unique pour chaque document si vous exécutez plusieurs connecteurs sur des bases de données distinctes que vous indexez dans un jeu de données commun.

Colonnes à URL url.format = https://www.example.com/{0}

Définit le format de l'URL d'affichage. Les paramètres numérotés font référence aux colonnes spécifiées dans le paramètre db.columns, dans l'ordre (à partir de zéro).

Lorsque ce paramètre n'est pas spécifié, sa valeur par défaut est "{0}."

url.columns = customer_id

Obligatoire. Spécifie le ou les noms valides définis pour les colonnes contenant l'URL associée à un résultat de recherche cliquable. Pour les bases de données n'ayant pas d'URL pertinente associée à chaque enregistrement, un lien statique peut être utilisé.

Toutefois, si les valeurs des colonnes définissent un lien valide pour chaque enregistrement, les colonnes à URL d'affichage et les valeurs de configuration du format doivent être spécifiées.

url.columnsToEscape = customer_id

Spécifie les colonnes du paramètre db.columns dont les valeurs seront encodées en pourcentage avant d'être incluses dans la chaîne formatée de l'URL.

Exemples de colonnes à URL

Pour spécifier la ou les colonnes utilisées et le format de l'URL d'affichage :

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

ou

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

ou

# 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

ou

# 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

Paramètres de configuration des métadonnées

Les paramètres de configuration des métadonnées décrivent les colonnes de la base de données qui serviront à renseigner les métadonnées des éléments. Si le fichier de configuration ne contient pas ces paramètres, des valeurs par défaut sont utilisées. Ces paramètres sont présentés dans le tableau suivant.
Élément Paramètre
Titre itemMetadata.title.field=movieTitle
itemMetadata.title.defaultValue=Gone with the Wind
Attribut de métadonnées qui contient la valeur correspondant au titre du document. La valeur par défaut de cet attribut est une chaîne vide.
Date et heure de création itemMetadata.createTime.field=releaseDate
itemMetadata.createTime.defaultValue=1940-01-17
Attribut de métadonnées qui contient la valeur d'horodatage de la création du document.
Date et heure de dernière modification itemMetadata.updatetime.field=releaseDate
itemMetadata.updatetime.defaultValue=1940-01-17
Attribut de métadonnées qui contient la valeur d'horodatage de la dernière modification du document.
Langue du document itemMetadata.contentLanguage.field=languageCode
itemMetadata.contentLanguage.defaultValue=en-US
Langue du contenu des documents indexés.
Type d'objet du schéma itemMetadata.objectType=movie
Type d'objet utilisé par le connecteur, tel que défini sur la page Créer et enregistrer un schéma. Lorsque cette propriété n'est pas définie, le connecteur n'indexe aucune donnée structurée.

Le cas échéant, les propriétés de cet objet de schéma doivent être spécifiées dans les requêtes SQL définies dans la configuration. Le plus souvent, cela consiste à ajouter des alias aux instructions SQL. Supposons, par exemple, que dans une base de données cinématographique, le schéma de source de données contienne une définition de propriété nommée "ActorName" (nom de l'acteur), une instruction SQL pourrait prendre la forme suivante : select …, last_name as ActorName, … from … .

Chaque colonne correspondant à un nom de propriété dans l'objet du schéma est automatiquement transmise avec l'enregistrement de base de données indexé, et utilisée comme donnée structurée dans la source de données.

Remarque : Cette propriété de configuration renvoie à une valeur plutôt qu'à un attribut de métadonnées, et les suffixes .field et .defaultValue ne sont pas compatibles.

Formats de date et d'heure

Les formats de date et d'heure spécifient les formats attendus dans les attributs de métadonnées. Si le fichier de configuration ne contient pas ce paramètre, des valeurs par défaut sont utilisées. Le tableau suivant présente ce paramètre.
Élément Paramètre
Formats de date et d'heure supplémentaires structuredData.dateTimePatterns=MM/dd/uuuu HH:mm:ssXXX
Liste de formats séparés par un point-virgule répertoriant les formats supplémentaires java.time.format.DateTimeFormatter. Ces formats permettront d'analyser les valeurs de chaîne de tous les champs de date ou de date et d'heure contenus dans les métadonnées ou dans le schéma. La valeur par défaut est une liste vide, mais les formats RFC 3339 et RFC 1123 sont toujours acceptés.

Champs de contenu

L'intérêt de l'indexation des valeurs des enregistrements de base de données dans Cloud Search est qu'elle permet d'effectuer des recherches dans leurs contenus. À l'aide des options de contenu, définissez les valeurs d'enregistrement à inclure dans le contenu interrogeable.

Élément Paramètre
Colonnes de données de contenu db.contentColumns = customer_id, first_name, last_name

Spécifie les colonnes de contenu de la base de données. Toutes les colonnes que vous désignez en tant que colonnes de contenu sont formatées et importées dans Cloud Search sous forme de contenu de document interrogeable.

Si vous ne spécifiez aucune valeur, la valeur par défaut est "*", indiquant que toutes les colonnes doivent être utilisées comme du contenu.

Colonnes de modèles de contenu contentTemplate.db.title = customer_id

Obligatoire. Les colonnes de données de contenu sont formatées en vue d'être indexées par rapport à un modèle de contenu. Le modèle attribue à chaque valeur de colonne de données une priorité dans le cadre de la recherche. La définition de colonne ayant la plus forte qualité est la colonne "title" obligatoire.

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

Vous pouvez attribuer à toutes les autres colonnes de contenu une qualité de champ de recherche élevée, moyenne ou faible. Toute colonne de contenu non définie dans une catégorie spécifique est associée par défaut à une qualité faible.

Colonne de blob db.blobColumn = blob_data

Indique le nom d'une colonne d'objet blob unique à utiliser pour le contenu du document, à la place d'une combinaison de colonnes de contenu.

Une colonne d'objet blob spécifiée sera considérée comme une erreur si des colonnes de contenu sont également définies. Toutefois, les définitions de colonnes de métadonnées et de données structurées sont autorisées, même en présence de colonnes d'objet blob.

Options de la liste de contrôle d'accès

Les listes de contrôle d'accès (LCA) offrent de nombreuses options permettant de protéger l'accès des utilisateurs aux enregistrements indexés.

Élément Paramètre
Totalité du domaine defaultAcl.mode = override
defaultAcl.public = true

Les modes valides sont les suivants :

  • none : ne pas utiliser la LCA par défaut
  • fallback : utiliser la LCA par défaut uniquement si aucune autre LCA n'est présente
  • append : ajouter la LCA par défaut à la LCA existante
  • override : remplacer la LCA existante par la LCA par défaut

Si defaultAcl.mode est défini sur override et que defaultAcl.public est défini sur true, ces paramètres spécifient un accès à la "totalité du domaine", où chaque enregistrement de base de données indexé est accessible en mode public à tous les utilisateurs du domaine. La valeur du mode détermine quand la LCA publique doit être appliquée.

Si defaultAcl.mode est défini sur none, les enregistrements ne peuvent pas faire l'objet d'une recherche sans LCA individuelle définie.

LCA commune définie 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

Ensemble, tous ces paramètres spécifient une LCA "commune définie" applicable à tous les enregistrements de la base de données qui ne sont associés à aucune LCA individuelle. Cette LCA commune permet de contrôler l'accès à l'ensemble de la base de données en fonction du mode sélectionné.

Chaque utilisateur et groupe est considéré comme un utilisateur/groupe défini par le domaine local, à moins qu'il porte le préfixe "google:" (constante littérale).

LCA individuelle Si les paramètres de configuration spécifient des LCA individuelles, chaque enregistrement contient ses propres informations de LCA dans une colonne de valeurs.

Si chaque enregistrement de la base de données est associé à une LCA individuelle déterminant sa propre accessibilité, la requête SQL doit contenir des alias de colonne de constante littérale réservés de sorte que le connecteur puisse identifier les utilisateurs "lecteurs" et les utilisateurs "refusés". Si les constantes littérales réservées suivantes sont présentes dans la ou les requêtes SQL, aucune configuration supplémentaire n'est requise.

readers_users

readers_groups

denied_users

denied_groups

Exemples de requêtes SQL avec des LCA individuelles

Les exemples suivants montrent des requêtes SQL SELECT utilisant des listes de contrôle d'accès "individuelles" :

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 > ?

Légende

Le tableau suivant répertorie les principaux paramètres obligatoires et facultatifs relatifs au connecteur de base de données, ainsi que leurs valeurs par défaut.

Paramètre Description
db.driverClass Valeur par défaut : chaîne vide

Pilote JDBC pour le connecteur :

db.driverClass = oracle.jdbc.OracleDriver

db.url Obligatoire

Définit l'URL de la base de données :

db.url = jdbc:mysql://localhost:3306/dbname
db.user Valeur par défaut : chaîne vide

Utilisateur de la base de données dont le connecteur se sert pour interroger la base de données :

db.user = dbadmin

db.password Valeur par défaut : chaîne vide

Mot de passe de l'utilisateur de la base de données dont le connecteur se sert pour interroger la base de données :

db.password = pas5w0rd
db.allRecordsSql Obligatoire

Définit une requête SQL permettant d'extraire toutes les colonnes pertinentes des enregistrements dans la base de données :

db.allRecordsSql = select customer_id, first_name, last_name, employee_id, interesting_field from employee
db.allRecordsSql.pagination Valeur par défaut = none

Spécifie l'une des options de pagination suivantes :

  • none : aucune pagination
  • offset : utilise la pagination par décalage de lignes

db.allRecordsSql.pagination = offset

db.incrementalUpdateSql Valeur par défaut : désactivée (chaîne vide)

Requête de balayage incrémentiel visant à récupérer les documents récemment modifiés, généralement en fonction de leur horodatage :

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 Valeur par défaut : utilise le même fuseau horaire (chaîne vide)

Spécifie le fuseau horaire du serveur de base de données, s'il est différent du connecteur :

db.timestamp.timezone = America/Los_Angeles
schedule.
traversalIntervalSecs
Valeur par défaut : 86400 (secondes dans une journée)

Intervalle de balayage complet : la méthode traversal() du connecteur est appelée selon l'intervalle suivant :

schedule.traversalIntervalSecs = 7200
schedule.
performTraversalOnStart
Valeur par défaut : true

Invoque un balayage complet au démarrage :

schedule.performTraversalOnStart = false
schedule.
incrementalTraversalIntervalSecs
Valeur par défaut : 300

Nombre de secondes entre chaque invocation du balayage incrémentiel des enregistrements modifiés (requiert db.updataSql) :

schedule.incrementalTraversalIntervalSecs = 900
db.allColumns Obligatoire

Ensemble des noms de colonne et alias de la requête SQL principale qui seront utilisés dans les autres définitions de colonnes :

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

Un ou plusieurs noms d'en-tête de colonne (au format nom:type) séparés par une virgule, fournissant un identificateur unique à un résultat de requête de base de données :

db.uniqueKeyColumns = customer_id
url.format Valeur par défaut : {0}

Spécifie le format des colonnes d'URL :

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

Spécifie la ou les colonnes d'une requête SQL qui permettront de créer les URL consultables associées aux résultats de recherche :

url.columns = customer_id
url.columnsToEscape Valeur par défaut : chaîne vide

Spécifie les colonnes de db.columns dont les valeurs seront codées en pourcentage avant d'être incluses dans la chaîne d'URL formatée :

url.columnsToEscape = customer_id
itemMetadata.title.field Valeur par défaut : chaîne vide

Spécifie la colonne de métadonnées de l'enregistrement à utiliser pour le "titre" :

itemMetadata.title.field = customer_id
itemMetadata.createTime.field Valeur par défaut : chaîne vide

Spécifie la colonne de métadonnées de l'enregistrement à utiliser pour la "date de création" :

itemMetadata.createTime.field = created_timestamp
itemMetadata.updatetime.field Valeur par défaut : chaîne vide

Spécifie la colonne de métadonnées de l'enregistrement à utiliser pour la "date de modification" :

itemMetadata.updatetime.field = last_update_time
itemMetadata.contentLanguage.field Valeur par défaut : chaîne vide

Spécifie la colonne de métadonnées de l'enregistrement à utiliser pour la "langue" :

itemMetadata.contentLanguage.field = language_used
itemMetadata.objectType Valeur par défaut : chaîne vide

Spécifie la colonne de l'enregistrement à utiliser pour le schéma "objet". Remarque : il s'agit d'un nom littéral et non d'une valeur de colonne :

itemMetadata.objectType = schema_object_name
db.contentColumns Valeur par défaut : * (toutes les colonnes de db.allRecords.Sql)

Définit les colonnes d'une requête SQL desquelles extraire le contenu de l'enregistrement de la base de données :

db.contentColumns = customer_id, first_name, last_name
contentTemplate.db.title Obligatoire

Spécifie le titre HTML du contenu et le champ de recherche associé à la qualité la plus élevée :

contentTemplate.db.title = id
contentTemplate.db.quality.high Valeur par défaut : chaîne vide

Spécifie les champs de contenu associés à une qualité de recherche élevée :

contentTemplate.db.quality.high = first_name, last_name
contentTemplate.db.quality.medium Valeur par défaut : chaîne vide

Spécifie les champs de contenu associés à une qualité de recherche moyenne :

contentTemplate.db.quality.medium = interesting_field
contentTemplate.db.quality.low Valeur par défaut : tous les champs non spécifiés ont une qualité de recherche faible

Spécifie les champs de contenu associés à une qualité de recherche faible :

contentTemplate.db.quality.low = employee_id
db.blobColumn Valeur par défaut : chaîne vide

Spécifie que la base de données utilise une seule colonne BLOB pour le contenu de l'enregistrement :

db.blobColumn=blob_data
defaultAcl.mode Valeur par défaut = none

Spécifie l'un des modes de LCA suivants :

  • none : ne pas utiliser la LCA par défaut
  • fallback : utiliser la LCA par défaut uniquement si aucune autre LCA n'est présente
  • append : ajouter la LCA par défaut à la LCA existante
  • override : remplacer la LCA existante par la LCA par défaut

defaultAcl.mode = override

defaultAcl.public Valeur par défaut : false

Spécifie que la LCA par défaut utilisée pour l'ensemble du dépôt est publique :

defaultAcl.public=true
defaultAcl.readers.users Utilisé uniquement si defaultAcl.mode est défini sur fallback et si defaultAcl.public est défini sur false.

Spécifie les lecteurs de la LCA commune dans une liste délimitée par des virgules :

defaultAcl.readers.users=user1,user2,user3
defaultAcl.readers.groups Utilisé uniquement si defaultAcl.mode est défini sur fallback et si defaultAcl.public est défini sur false.

Spécifie les groupes lecteurs de la LCA commune dans une liste délimitée par des virgules :

defaultAcl.readers.groups=group1,group2
defaultAcl.denied.users Utilisé uniquement si defaultAcl.mode est défini sur fallback et si defaultAcl.public est défini sur false.

Spécifie les utilisateurs dont l'accès à l'ensemble du dépôt sera refusé :

defaultAcl.denied.users=user4,user5
defaultAcl.denied.groups Utilisé uniquement si defaultAcl.mode est défini sur fallback et si defaultAcl.public est défini sur false.

Spécifie les groupes autorisés à accéder à l'ensemble du dépôt :

defaultAcl.denied.groups=group3
defaultAcl.name Valeur par défaut : DEFAULT_ACL_VIRTUAL_CONTAINER

Spécifie le nom du conteneur virtuel auquel la LCA par défaut est appliquée :

defaultAcl.name = employee-db-default-acl
traverse.updateMode Valeur par défaut : SYNCHRONOUS

Spécifie que les balayages adoptent le mode de mise à jour synchrone (par opposition aux mises à jour asynchrones) :

traverse.updateMode = ASYNCHRONOUS
traverse.exceptionHandler Valeur par défaut : 0

Spécifie si le balayage doit ignorer ("ignore"), toujours abandonner ("0") ou abandonner au-delà de # exceptions ("10") :

traverse.exceptionHandler = ignore