Advertencia: Los conectores de referencia de Cloud Search se proporcionan "tal cual" como código de muestra para usar en la creación de tus propios conectores de trabajo. Este código de muestra requiere personalización y pruebas sustanciales antes de usarse en la prueba de concepto o entornos de producción. Para el uso en producción, te recomendamos que obtengas ayuda de uno de nuestros socios de Cloud Search. Si necesitas más ayuda para encontrar un servicio de Socio de búsqueda, comuníquese con su administrador de cuentas de Google. |
Puedes configurar Google Cloud Search para descubrir e indexar datos de las redes bases de datos a través del conector de bases de datos de Google Cloud Search.
Consideraciones importantes
Puedes instalar y ejecutar el conector de bases de datos de Cloud Search en casi cualquier entorno en el que se puedan ejecutar las apps de Java, siempre que el conector tenga acceso a ambos Internet y la base de datos.
Requisitos del sistema
Requisitos del sistema | |
---|---|
Sistema operativo | En Windows o Linux |
Base de datos SQL | Cualquier base de datos SQL con un controlador compatible con JDBC 4.0 o posterior, incluidos los siguientes:
|
Software | Controlador de JDBC para que el conector use para acceder a la base de datos (se descarga y se instala por separado) |
Implementa el conector
En los siguientes pasos, se describe cómo instalar y configurar el conector para indexar las bases de datos especificadas y mostrar los resultados a los usuarios de Cloud Search.
Requisitos previos
Antes de implementar el conector de bases de datos de Cloud Search, recopila la siguiente información:
- Clave privada de Google Workspace, que también contiene el ID de la cuenta de servicio. Para aprender a obtener una clave privada, ve a Configura el acceso a Google Cloud Buscar en la API de REST
- ID de la fuente de datos de Google Workspace. Para aprender a obtener un ID de fuente de datos, ve a Agrega una fuente de datos para buscar.
Paso 1: Descarga y compila el software del conector de bases de datos
- Clona el repositorio del conector desde GitHub.
$ git clone https://github.com/google-cloudsearch/database-connector.git $ cd database-connector
- Revisa la versión deseada del conector:
$ git checkout tags/v1-0.0.3
- Compila el conector.
$ mvn package
Para omitir las pruebas cuando compiles el conector, usamvn package -DskipTests
. - Copia el archivo ZIP del conector en el directorio de instalación local y descomprímelo:
$ 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
Paso 2: Configura el conector de bases de datos
- Crea un archivo de texto y asígnale el nombre
connector-config.properties
(predeterminado) o uno similar. Google recomienda que nombras los archivos de configuración con el.properties
o.config
, y mantén el archivo en el mismo directorio que el conector. Si usas un nombre o una ruta de acceso diferentes, debes especificar la ruta de acceso cuando ejecutes el conector. - Agrega parámetros como pares clave-valor al contenido del archivo. El archivo de configuración debe especificar
los parámetros de acceso a la fuente de datos, acceso a la base de datos, una instrucción de SQL del recorrido completo de la base de datos
un título de campo de contenido y definiciones de columnas. También puedes configurar otros comportamientos del conector
con parámetros opcionales. Por ejemplo:
# 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
Para obtener descripciones detalladas de los parámetros específicos de la base de datos, consulte la Consulta la referencia de los parámetros de configuración al final de este artículo.
Para conocer los parámetros comunes a todas las funciones de conectores, como la configuración de metadatos, los formatos de fecha y hora y las opciones de LCA, vaya a Parámetros de conectores que proporciona Google
Si corresponde, especifica las propiedades del objeto de esquema en el SQL de recorrido parámetros de consulta. Por lo general, puedes agregar alias al SQL. declaración. Por ejemplo, si tienes una película y el esquema de fuente de datos contiene una definición de propiedad llamada “ActorName”, una instrucción de SQL podría tener la forma:
SELECT …, last_name AS ActorName, … FROM …
.
Paso 3: Ejecuta el conector de bases de datos
En el siguiente ejemplo, se da por sentado que los componentes obligatorios están ubicados en el directorio local en un sistema Linux.
Para ejecutar el conector desde la línea de comandos, ingresa el siguiente comando:
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]
Aquí:
google-cloud-search-database-connector-v1-0.0.3.jar
es el archivo .jar del conector de bases de datosmysql-connector-java-5.1.41-bin.jar
es el controlador de JDBC que se usa. para acceder a la base de datosmysql.config
es un archivo de configuración con un nombre personalizado. Para asegurarte de que el conector reconozca tu de Terraform, especifica su ruta en la línea de comandos. De lo contrario, el conector usaráconnector-config.properties
en tu ubicación local como nombre de archivo predeterminado.
El conector informa los errores de configuración a medida que los detecta. Algunos errores se informan cuando
se inicializa el conector, como cuando una columna de base de datos se define como parte del contenido del registro
(en db.allColumns
), pero la columna no se usa en la consulta en SQL de recorrido de la
base de datos (en db.allRecordsSql
). Otros errores solo se detectan e informan cuando
el conector intenta acceder a la base de datos para el primer recorrido, como una sintaxis de instrucción SQL no válida.
Referencia de los parámetros de configuración
Parámetros de acceso a la fuente de datos
Configuración | Parámetro |
---|---|
ID de la fuente de datos | api.sourceId = source-ID
Obligatorio. Cloud Search el ID de origen que configuró el administrador de Google Workspace. |
ID de la fuente de identidad | api.identitySourceId = identity-source-ID
Se requiere para usar usuarios y grupos externos para las LCA. Cloud Search ID de la fuente de identidad que configuró el administrador de Google Workspace. |
Cuenta de servicio | api.serviceAccountPrivateKeyFile = path-to-private-key
Obligatorio. La ruta de acceso a Cloud Search archivo de claves de la cuenta de servicio que creó el administrador de Google Workspace. |
Parámetros de acceso a la base de datos
Configuración | Parámetro |
---|---|
URL de la base de datos | db.url = database-URL
Obligatorio. El
ruta de acceso completa de la base de datos a la que se accederá, como |
Nombre de usuario y contraseña de la base de datos | db.user = username db.password = password
Obligatorio. Un nombre de usuario y una contraseña válidos que el conector utiliza para acceder a la base de datos. El usuario de la base de datos debe tener acceso de lectura a los registros relevantes de la base de datos que se lee. |
Controlador JDBC | db.driverClass = oracle.jdbc.OracleDriver
Solo es obligatorio si el controlador JDBC 4.0 aún no está especificado en la ruta de clase. |
Parámetros de consulta de SQL transversal
El conector recorre los registros de la base de datos con SQL SELECT en el archivo de configuración. Debes configurar una consulta de recorrido completa. consultas para Los recorridos incrementales son opcionales.
Un recorrido completo lee cada registro de la base de datos configurado para la indexación. Se requiere un recorrido completo para indexar registros nuevos en Cloud Search, y también para volver a indexar todos los registros existentes.
Un recorrido incremental lee y vuelve a indexar solo las bases de datos modificadas recientemente. registros y las entradas recientes a la base de datos. Los recorridos incrementales pueden ser más eficientes que recorridos completos. Para usar recorridos incrementales, tu base de datos debe contener campos de marca de tiempo para indicar los registros modificados.
El conector ejecuta estos recorridos de acuerdo con los programas que definas en parámetros de programación de recorrido.
Configuración | Parámetro |
---|---|
Consulta de recorrido completo | db.allRecordsSql = SELECT column-1[, column-2,...] FROM database-name
Obligatorio. La consulta se ejecuta para cada recorrido completo. Cada nombre de columna que el conector usará en cualquier (contenido, ID único, LCA) en esta consulta. El conector realiza algunas verificaciones preliminares en el inicio para detectar errores y omisiones. Por este motivo, no utilices una consulta general "SELECCIONAR * DESDE…". |
Paginación de recorrido completo | db.allRecordsSql.pagination = {none | offset}
El valor puede ser:
|
Consulta de recorrido incremental | db.incrementalUpdateSql = SELECT column-1[, column-2,...] FROM database-name WHERE last_update_time > ?
Obligatorio si programas recorridos incrementales. El signo "?" en la consulta es un marcador de posición obligatorio para un valor de marca de tiempo. El usa la marca de tiempo para rastrear las modificaciones entre consultas SQL de recorrido incremental. Para hacer un seguimiento de la columna de marca de tiempo de la base de datos para la hora de la última actualización, agrega el
Es el alias Para el primer recorrido incremental, el conector usa la hora de inicio del conector. Después del primer recorrido incremental, Cloud Search almacena la marca de tiempo para que los reinicios del conector puedan acceder al recorrido incremental anterior y marca de tiempo. |
Zona horaria de la base de datos | db.timestamp.timezone = America/Los_Angeles
Especifica la zona horaria que se usará en las marcas de tiempo de la base de datos. La marca de tiempo de la base de datos que se usa para identificar nuevas adiciones de registros o de registros modificados de bases de datos. El valor predeterminado es la zona horaria local donde se ejecuta el conector. |
Ejemplos de consultas en SQL transversales
- Consulta básica de recorrido completo que lee cada registro de interés en una base de datos de empleados para la indexación:
db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field \ FROM employee
- Especifica la paginación por desplazamiento y divide un recorrido completo en varias consultas.
Para SQL Server 2012 u Oracle 12c (sintaxis de SQL estándar 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
o, para MySQL o 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
- Consulta de recorrido completo que aplica LCA individuales con alias:
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
- Consulta básica de recorrido incremental:
db.incrementalUpdateSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field, last_update_time \ FROM employee \ WHERE last_update_time > ?
- Consulta de recorrido incremental que aplica LCA individuales con alias:
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 > ?
- Consulta de recorrido incremental que usa la marca de tiempo de la base de datos en lugar de la hora actual:
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 > ?
Parámetros de definición de columnas
Los siguientes parámetros especifican las columnas que utilizas en las sentencias de recorrido y para identificar cada registro de forma única.
Configuración | Parámetro |
---|---|
Todas las columnas | db.allColumns = column-1, column-2, ...column-N
Obligatorio. Identifica todas las columnas que se requieren en una consulta de SQL cuando se accede a la base de datos. Se debe hacer referencia explícitamente a las columnas definidas con este parámetro en las consultas. Cada otro parámetro de definición de columna se compara con este conjunto de columnas. Ejemplo: db.allColumns = customer_id, first_name, last_name, phone, change_timestamp |
Columnas de clave única | db.uniqueKeyColumns = column-1[, column-2]
Obligatorio. Muestra una lista con una sola columna de base de datos que contiene valores únicos o mediante una combinación de columnas cuyos valores definen un ID único. Cloud Search requiere que cada documento que se puede buscar tenga un identificador único dentro de una fuente de datos. Debes poder definir un ID único para cada registro de la base de datos a partir de valores de columna. Si ejecutas varios conectores en bases de datos separadas, pero en un conjunto de datos común, asegúrate de especificar un ID único en todos los documentos. Ejemplos: db.uniqueKeyColumns = customer_id # or db.uniqueKeyColumns = last_name, first_name |
Columna de vínculo de URL | url.columns = column-1[, column-2]
Obligatorio. Especifica uno o más valores válidos, definidos los nombres de las columnas utilizadas para la URL utilizada para un resultado de la búsqueda en el que se puede hacer clic. Para las bases de datos que no tienen una URL relevante asociada con cada registro de la base de datos, se puede utilizar un vínculo estático para cada registro. Sin embargo, si los valores de las columnas definen un vínculo válido para cada registro, se deben especificar las columnas de la URL de vista y los valores de configuración de formato. |
Formato de URL | url.format = https://www.example.com/{0}
Define el formato de la URL de vista. Los parámetros numerados hacen referencia a las columnas especificadas en db.columns, en orden, a partir de cero. Si no se especifica, el valor predeterminado es “{0}”. Hay ejemplos en esta tabla. |
Columnas con codificación porcentual para la URL | url.columnsToEscape = column-1[, column-2]
Especifica las columnas de db.columns cuyos valores se codificarán en porcentajes antes de incluirlos en una string de URL con formato. |
Ejemplos de columnas de URL
Para especificar las columnas usadas en las consultas de recorrido y el formato de la URL de vista, haz lo siguiente:
- Para usar una URL estática que no use ningún valor de registro de la base de datos, haz lo siguiente:
url.format = https://www.example.com
- Para usar un solo valor de columna que sea la URL de vista, haz lo siguiente:
url.format = {0} url.columns = customer_id
- Para utilizar un solo valor de columna que se sustituya en la URL de visualización en la posición {0}:
url.format = https://www.example.com/customer/id={0} url.columns = customer_id url.columnsToEscape = customer_id
- Para usar varios valores de columna y crear la URL de visualización (las columnas dependen del orden), sigue estos pasos:
url.format = {1}/customer={0} url.columns = customer_id, linked_url url.columnsToEscape = customer_id
Campos de contenido
Utiliza las opciones de contenido para definir qué valores de los registros deben formar parte del contenido de búsqueda.
Configuración | Parámetro |
---|---|
Columna de búsqueda de la mejor calidad | contentTemplate.db.title = column-name
Obligatorio. La columna de mayor calidad para la indexación de búsquedas y la priorización de resultados. |
Priorización de columnas para la búsqueda | contentTemplate.db.quality.high = column-1[, column-2...] contentTemplate.db.quality.medium = column-1[, column-2...] contentTemplate.db.quality.low = column-1[, column-2...]
Designa columnas de contenido (excepto el conjunto de columnas para |
Columnas de datos de contenido | db.contentColumns = column-1[, column-2...]
Especifica las columnas de contenido en la base de datos. Están formateados y subidos a Cloud Search como contenido de documentos que se pueden buscar. Si no especificas un valor, el valor predeterminado es "*", lo que indica que todas las columnas deben utilizarse para el contenido. |
Columna de BLOB | db.blobColumn = column-name
Especifica el nombre de un solo BLOB para usar en el contenido del documento en lugar de una combinación de columnas de contenido. Si se especifica una columna de BLOB, se considera un error si también se definen las columnas de contenido. Sin embargo, las definiciones de columnas de datos estructurados y metadatos todavía se permiten junto con las columnas de BLOB. |