Implementa un conector de bases de datos

Esta guía está destinada a los administradores de conectores de bases de datos de Google Cloud Search, es decir, a todos aquellos responsables de obtener, implementar, configurar y mantener el conector de bases de datos.

El contenido de esta guía incluye instrucciones para realizar tareas clave relacionadas con la implementación del conector:

  • Descarga del software del conector para bases de datos de Cloud Search
  • Configuración del conector para utilizarlo con una fuente de datos de SQL específica
  • Ejecución del conector

Para comprender los conceptos de este documento, debes estar familiarizado con los conceptos de bases de datos, el lenguaje de consulta estructurado (SQL), los aspectos básicos de las Listas de control de acceso (LCA) y los sistemas operativos Windows o Linux.

La información sobre las tareas que debe realizar el administrador de G Suite para asignar Google Cloud Search al conector de bases de datos no aparece en esta guía. Para obtener información sobre esas tareas, consulta la página sobre cómo administrar fuentes de datos de terceros.

De forma predeterminada, Cloud Search puede descubrir, indexar y entregar contenido a partir de los datos de G Suite como documentos y hojas de cálculo. Sin embargo, puedes ampliar las funciones de Cloud Search a fin de indexar y descubrir datos a partir de tus propios repositorios de bases de datos; para ello, usa el conector de bases de datos de Google Cloud Search.

El conector sube las solicitudes de indexación a la API de indexación de Cloud Search y mantiene el índice de Cloud Search sincronizado con el repositorio de la base de datos de terceros; para lograr esto, el conector vuelve a indexar toda la base de datos de forma periódica.

El conector de bases de datos de Cloud Search permite controlar el acceso de los usuarios a los documentos en los resultados de la búsqueda mediante el uso de las LCA. Para obtener más información sobre este tema, consulta las opciones de las Listas de control de acceso.

Comportamiento del conector

Como administrador del conector, controlas el comportamiento del conector de bases de datos de Cloud Search mediante la creación de su archivo de configuración. En este archivo, defines los siguientes aspectos principales del comportamiento del conector:

  • Acceso a la base de datos de destino
  • Identificación del contenido que se puede buscar
  • Realización de recorridos
  • Observación de programas de recorridos
  • Envío de consultas de SQL a la base de datos para recuperar registros
  • Respeto de las Listas de control de acceso (LCA)

A fin de definir el comportamiento del conector específico, propaga el archivo de configuración con los pares clave-valor para cada parámetro de configuración que desees personalizar. Para obtener información detallada sobre este proceso, consulta la página sobre cómo configurar el conector de bases de datos.

Después de que hayas propagado por completo el archivo de configuración, tendrás la configuración necesaria para implementar el conector.

Indexación del contenido de la base de datos

Después de implementar el conector de bases de datos de Cloud Search, este se comunica con la fuente de datos que conectaste a la cuenta de G Suite y descubre su contenido a través de un proceso denominado recorrido. Durante el recorrido, el conector emite consultas de SQL selectas al repositorio para recuperar datos de los documentos. El conector recupera los datos de los documentos y los sube a la API de indexación, en la que se indexan y, en última instancia, se entregan a los usuarios.

Al principio, el conector de bases de datos realiza un recorrido completo, durante el cual lee todos los registros de la base de datos y los indexa. Puedes programar recorridos completos posteriores en un intervalo de tiempo fijo. Además de los recorridos completos, puedes programar recorridos incrementales si la base de datos lo admite. Los recorridos incrementales solo leen y vuelven a indexar los registros de bases de datos modificados.

Configuración del conector

Puedes instalar y ejecutar el conector de bases de datos de Cloud Search en casi cualquier entorno en el que se pueden ejecutar las aplicaciones de Java, siempre que el conector tenga acceso tanto a Internet como a la base de datos. Debido a que implementas el conector de bases de datos en un host independiente de Google Cloud Search o del repositorio de datos, primero debes asegurarte de tener la información de la base de datos y de G Suite que se necesita para establecer relaciones entre Google Cloud Search, el conector y el repositorio de datos. Para permitir que el conector acceda a la base de datos, proporciona información específica al conector durante los pasos de configuración descritos en este documento en Comportamiento del conector.

Para configurar el acceso del conector a Cloud Search, necesitas una cuenta de servicio, un ID de cuenta de servicio y un ID de fuente de datos. Debes agregar el ID de origen y la ruta al archivo de clave privada de la cuenta de servicio en la configuración del conector, como se muestra en el ejemplo de archivo de configuración. Por lo general, el administrador de G Suite del dominio puede proporcionarte estas credenciales.

Después de asegurarte de que el entorno esté configurado de forma correcta, podrás comenzar con los pasos para la implementación.

Bases de datos compatibles

El conector de bases de datos de Cloud Search funciona con cualquier base de datos SQL con un controlador compatible con JDBC 4.0 o posterior, incluidos los siguientes:

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

Proporciona información que identifique la base de datos de destino durante el proceso de configuración del conector. Para obtener información detallada, consulta la página sobre acceso a la base de datos.

Antes de que implementes el conector de bases de datos

Antes de que implementes el conector de bases de datos de Cloud Search, asegúrate de que el entorno tenga todos los componentes obligatorios que se mencionan a continuación:

  • Clave privada de G Suite (que contiene el ID de cuenta de servicio)
  • ID de la fuente de datos de G Suite
  • Archivo .jar del conector de bases de datos instalado en una máquina host
  • Base de datos de destino compatible
  • Controlador JDBC para acceder a la base de datos (se descarga y se instala por separado)

Pasos para la implementación

Para implementar el conector de bases de datos de Cloud Search, sigue estos pasos básicos:

  1. Descarga y guarda el software del conector de bases de datos de Cloud Search.
  2. Configura el conector de bases de datos de Cloud Search.
  3. Ejecuta el conector de bases de datos de Cloud Search.

Paso 1. Descarga y guarda el software del conector de bases de datos

  1. Clona el repositorio del conector desde GitHub.
    $ git clone https://github.com/google-cloudsearch/database-connector.git
        $ cd database-connector
  2. Cambia a la versión deseada del conector:
    $ git checkout tags/v1-0.0.3
  3. Compila el conector.
    $ mvn package
    Para omitir las pruebas durante la compilación, usa mvn package -DskipTests.
  4. 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-windows-filesystems-connector-v1-0.0.3

Paso 2. Configura el conector de bases de datos

Para que el conector acceda de forma correcta a una base de datos y que indexe el contenido relevante, primero debes crear su archivo de configuración.

Para crear un archivo de configuración, sigue estos pasos:

  1. Abre el editor de texto que prefieras.
  2. Agrega pares clave-valor al contenido del archivo. Para obtener asesoramiento, consulta el ejemplo de archivo de configuración.
  3. Asigna un nombre al archivo de configuración.

    Puedes asignar cualquier nombre al archivo de configuración, por ejemplo: Mysql.properties. Google recomienda coherencia en la asignación de nombres para las extensiones de los archivos de configuración mediante el uso de .properties o .config .

Dado que puedes especificar la ruta del archivo de configuración en la línea de comandos, no es necesario proporcionar una ubicación de archivo estándar. Sin embargo, mantén el archivo de configuración en el mismo directorio que el conector para simplificar el seguimiento y la ejecución del conector.

Para asegurarte de que el conector reconozca tu archivo de configuración, especifica su ruta en la línea de comandos. De lo contrario, el conector usará connector-config.properties en tu directorio local como nombre de archivo predeterminado. Para obtener información sobre cómo especificar la ruta de configuración en la línea de comandos, consulta la página sobre cómo ejecutar el conector de bases de datos.

Ejemplo de archivo de configuración

En el siguiente ejemplo de archivo de configuración, se muestran los pares clave-valor de parámetros que definen un comportamiento del conector de ejemplo. Muchos parámetros tienen valores predeterminados que se usan si el valor del parámetro no se define dentro del archivo.

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

Para obtener descripciones detalladas de cada parámetro, consulta la referencia de los parámetros de configuración.

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

Detalles del comando:

  • google-cloud-search-database-connector-v1-0.0.3.jar es el archivo .jar del conector de bases de datos
  • mysql-connector-java-5.1.41-bin.jar es el controlador JDBC que se usa para acceder a la base de datos
  • mysql.config es el archivo de configuración

El conector intenta detectar errores de configuración lo antes posible. Por ejemplo, si una columna de la base de datos se define como parte del contenido del registro, pero falta en la consulta de SQL de la base de datos, la columna faltante se mostrará como error cuando se inicialice el conector.

Sin embargo, el conector solo detecta otros errores, como la sintaxis de instrucción de SQL no válida, cuando intenta acceder a la base de datos para realizar el primer recorrido.

Referencia de los parámetros de configuración

En las siguientes secciones, se describen los parámetros de configuración en detalle. En estas secciones, los ejemplos en línea están en el formato que se indica a continuación:

clave = valor

En este formato, “clave” (en negrita) es el nombre literal del parámetro específico y “valor” (en cursiva) es el valor específico del parámetro.

Acceso a la fuente de datos

Los primeros parámetros que se deben especificar en los archivos de configuración son los necesarios para acceder a la fuente de datos de Cloud Search. Los pasos necesarios para configurar una fuente de datos se pueden encontrar en la página sobre cómo administrar fuentes de datos de terceros.

Configuración Parámetro
ID de la fuente de datos api.sourceId = 1234567890abcdef

Obligatorio. El ID de origen de Cloud Search que configura el administrador de G Suite.

ID de la fuente de identidad api.identitySourceId = 0987654321lmnopq

Obligatorio si se usan usuarios y grupos externos. El ID de la fuente de identidad de Cloud Search que configura el administrador de G Suite.

Cuenta de servicio api.serviceAccountPrivateKeyFile = ./PrivateKey.json

Obligatorio. El archivo de claves de la cuenta de servicio de Cloud Search que creó el administrador de G Suite para la accesibilidad del conector.

Acceso a la base de datos

Antes de que el conector pueda recorrer una base de datos, debes identificar la ruta a la base de datos y las credenciales que permiten al conector acceder a esa base de datos. Usa los siguientes parámetros de acceso a la base de datos para agregar información de acceso al archivo de configuración.

Configuración Parámetro
URL de la base de datos db.url = jdbc:mysql://127.0.0.1/dbname

Obligatorio. La ruta completa de acceso a la base de datos.

Nombre de usuario y contraseña de la base de datos db.user = dbadmin
db.password = pas5w0rd

Obligatorio. Un nombre de usuario y una contraseña válidos que el conector usa 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.

Configura instrucciones de SQL de recorridos

El conector accede a los registros de la base de datos y los indexa; para ello, realiza recorridos. Para habilitar que el conector recorra los registros de la base de datos, debes proporcionar consultas de SQL selectas en el archivo de configuración. El conector admite dos tipos de métodos de recorrido:

El conector ejecuta estos recorridos de acuerdo con las programaciones que defines en las opciones de programación del archivo de configuración, que se describe en la sección Programa recorridos que figura más adelante.

Recorrido completo

Un recorrido completo lee cada registro de la base de datos para su 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.

Configuración Parámetro
Recorrido completo db.allRecordsSql = SELECT customer_id, first_name, last_name, employee_id, interesting_field FROM employee

O

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

Obligatorio. En esta sección, se incluye una consulta de SQL selecta que lee cada registro de interés en una base de datos de empleados para la indexación.

Cuando se usa la paginación por desplazamiento, la consulta de SQL debe tener un marcador de posición (“?”) para un desplazamiento de fila, a partir de cero. La consulta se ejecutará varias veces en cada recorrido completo, hasta que no se muestren más resultados.

db.allRecordsSql.pagination = offset

A continuación, se mencionan las opciones de paginación válidas:

  • none: no se debe usar paginación
  • offset: se debe usar la paginación por desplazamiento de fila

Cada nombre de la columna que el conector vaya a usar en cualquier capacidad (contenido, ID único, LCA) debe estar presente en esta consulta. El conector realiza algunas verificaciones preliminares en el inicio para detectar errores y omisiones. Por este motivo, no uses una consulta general “SELECT * FROM …”.

Ejemplos de paginación

Para especificar la paginación por desplazamiento y dividir un recorrido completo en varias consultas:
# 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
    

o

# 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
    

Recorrido incremental

De forma predeterminada, el conector no realiza recorridos incrementales. Sin embargo, si la base de datos contiene campos de marca de tiempo para indicar registros modificados, puedes configurar el conector a fin de que realice recorridos incrementales, que leen y vuelven a indexar solo los registros de la base de datos recién modificados y las entradas recientes de la base de datos. Debido a que un recorrido incremental lee un conjunto de datos más pequeño, puede ser mucho más eficiente que un recorrido completo.

Los parámetros del recorrido incremental definen el alcance del recorrido y, luego, identifican la marca de tiempo de la base de datos que se usó para identificar adiciones de registro nuevas o registros de la base de datos recién modificados.

Configuración Parámetro
Recorrido incremental db.incrementalUpdateSql = select customer_id, first_name, last_name, employee_id, interesting_field, last_update_time from employee where last_update_time > ?

O

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

Obligatorio cuando se usan recorridos incrementales. Agrega timestamp_column a la instrucción de SQL a fin de rastrear en la columna de marca de tiempo de la base de datos la última actualización; de lo contrario, usa la marca de tiempo actual del recorrido del conector.

La consulta de SQL selecta de ejemplo lee cada registro que se modifica y se debe volver a indexar.

El valor “?” obligatorio en la consulta es un marcador de posición para un valor de marca de tiempo que el conector rastrea y mantiene entre las consultas de SQL del recorrido incremental.

De forma predeterminada, el conector almacena la hora de inicio de la consulta incremental para usarla en el siguiente recorrido incremental. Si no se ha producido ningún recorrido incremental, se usa la hora de inicio de ejecución del conector.

Después del primer recorrido incremental, Cloud Search almacena la marca de tiempo para que los reinicios del conector puedan acceder a la marca de tiempo del recorrido incremental anterior.

Zona horaria de la base de datos db.timestamp.timezone = America/Los_Angeles

Especifica la zona horaria a usar en las marcas de tiempo de la base de datos. El valor predeterminado es la zona horaria local donde se ejecuta el conector.

Programa recorridos

Los parámetros de programación determinan la frecuencia con la que el conector espera entre recorridos.

Configuración Parámetro
Recorrido completo después de un intervalo especificado schedule.traversalIntervalSecs = 7200

Especifica el intervalo entre recorridos, expresado en segundos. El valor predeterminado es 86,400 (cantidad de segundos en un día).

Recorrido completo al inicio del conector schedule.performTraversalOnStart = false

Especifica que el primer recorrido completo debe producirse de inmediato después de cada inicio del conector (true) o no (false). El valor predeterminado es true.

Recorrido incremental después de un intervalo especificado schedule.incrementalTraversalIntervalSecs = 900

Especifica el intervalo entre recorridos, expresado en segundos. El valor predeterminado es 300 (cantidad de segundos en 5 minutos). Este parámetro no se usa si no se define el SQL del recorrido incremental.

Definiciones de columna

Para que el conector acceda y que indexe los registros de la base de datos, debes proporcionar información sobre las definiciones de columna en el archivo de configuración. El conector también usa estas definiciones de columna para detectar errores de configuración en el inicio del conector.

Configuración Parámetro
Todas las columnas db.allColumns = customer_id, first_name, last_name, employee_id, interesting_field, last_update_time, linked_url

Obligatorio. Identifica todas las columnas que se requieren en una consulta de SQL cuando se accede a la base de datos. Se debe hacer una referencia explícita a las columnas definidas con este parámetro en las consultas. Todos los demás parámetros de definición de columna se verifican con este conjunto de columnas.

Columnas de clave única db.uniqueKeyColumns = customer_id
db.uniqueKeyColumns = last_name, first_name

Obligatorio. Enumera una sola columna de base de datos que contiene valores únicos o 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. Por este motivo, cada registro de la base de datos debe poder usar los valores de las columnas para definir un ID único. Ten especial cuidado de proporcionar un ID único en todos los documentos si se ejecutan varios conectores en bases de datos independientes, pero se indexan en un conjunto de datos común.

Columnas 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}”.

url.columns = customer_id

Obligatorio. Especifica los nombres definidos y válidos de las columnas que se usaron para la URL empleada en 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 usar 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.

url.columnsToEscape = customer_id

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 utilizadas y el formato de la URL de vista:

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

o

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

o

# 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
    

o

# 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
    

Parámetros de configuración de metadatos

Los parámetros de configuración de metadatos describen las columnas de la base de datos que se usan para propagar metadatos de elementos. Si el archivo de configuración no contiene estos parámetros, se usan los valores predeterminados. En la siguiente tabla, se muestran estos parámetros:
Configuración Parámetro
Título itemMetadata.title.field=movieTitle
itemMetadata.title.defaultValue=Gone with the Wind
El atributo de metadatos que contiene el valor correspondiente al título del documento. El valor predeterminado es una string vacía.
URL itemMetadata.sourceRepositoryUrl.field=url
itemMetadata.sourceRepositoryUrl.defaultValue=https://www.imdb.com/title/tt0031381/
El atributo de metadatos que contiene el valor de la URL del documento para los resultados de la búsqueda.
Marca de tiempo de creación itemMetadata.createTime.field=releaseDate
itemMetadata.createTime.defaultValue=1940-01-17
El atributo de metadatos que contiene el valor correspondiente a la marca de tiempo de creación del documento
Hora de la última modificación itemMetadata.updateTime.field=releaseDate
itemMetadata.updateTime.defaultValue=1940-01-17
El atributo de metadatos que contiene el valor correspondiente a la marca de tiempo de la última modificación del documento
Idioma del documento itemMetadata.contentLanguage.field=languageCode
itemMetadata.contentLanguage.defaultValue=en-US
El idioma del contenido para los documentos que se indexan
Tipo de objeto de esquema itemMetadata.objectType=movie
El tipo de objeto que utiliza el conector, como se define en las instrucciones para crear y registrar un esquema. El conector no indexará ningún dato estructurado si no se especifica esta propiedad.

Si corresponde, las propiedades de este objeto de esquema deben especificarse en las consultas de SQL definidas en la configuración. Esto puede lograrse con mayor frecuencia mediante la incorporación de alias a las instrucciones de SQL. Por ejemplo, supongamos que, para una base de datos de películas, el esquema de fuente de datos contiene una definición de propiedad denominada “ActorName”; una instrucción de SQL podría tener la forma: select …, last_name as ActorName, … from … .

Cada columna que coincide con el nombre de una propiedad en el objeto de esquema se pasa de manera automática con el registro de la base de datos indexada y se usa como datos estructurados en la fuente de datos.

Nota: Esta propiedad de la configuración hace referencia a un valor y no a un atributo de los metadatos, y no se admiten los sufijos .field y .defaultValue.

Formatos de fecha y hora

Los formatos de fecha y hora especifican los esperados en los atributos de metadatos. Si el archivo de configuración no contiene este parámetro, se utilizan los valores predeterminados. La siguiente tabla muestra este parámetro.
Configuración Parámetro
Formatos de fecha y hora adicionales structuredData.dateTimePatterns=MM/dd/uuuu HH:mm:ssXXX
Una lista separada por puntos y comas de patrones java.time.formatDateTimeFormatter adicionales. Los patrones se utilizan cuando se analizan valores de string para cualquier fecha o campos de fecha y hora en los metadatos o el esquema. El valor predeterminado es una lista vacía, pero los formatos RFC 3339 y RFC 1123 siempre son compatibles.

Campos de contenido

El beneficio de indexar los valores de los registros de las bases de datos en Cloud Search es que les otorga capacidad de búsqueda. Usa las opciones de contenido para definir qué valores de los registros deben formar parte del contenido que se puede buscar.

Configuración Parámetro
Columnas de datos de contenido db.contentColumns = customer_id, first_name, last_name

Especifica las columnas de contenido en la base de datos. Todas las columnas que designas como columnas de contenido se formatean y se suben a Cloud Search como contenido del documento que se puede buscar.

Si no especificas un valor, el valor predeterminado es “*”, lo que indica que todas las columnas deben usarse para el contenido.

Columnas de la plantilla de contenido contentTemplate.db.title = customer_id

Obligatorio. Las columnas de datos de contenido se formatean para la indexación según una plantilla de contenido. La plantilla define la prioridad de cada valor de la columna de datos para la búsqueda. La definición de columna de calidad más alta es la columna “title” requerida.

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

Puedes designar todas las demás columnas de contenido como campos de calidad de búsqueda alta, media o baja. Cualquier columna de contenido que no se defina en una categoría específica se establece como “baja” de forma predeterminada.

Columna de BLOB db.blobColumn = blob_data

Indica el nombre de una sola columna de 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 columnas de contenido. Sin embargo, las definiciones de columnas de datos estructurados y metadatos todavía se permiten junto con las columnas de BLOB.

Opciones de la Lista de control de acceso

Existen varias opciones para proteger el acceso de los usuarios a los registros indexados con LCA.

Configuración Parámetro
Dominio completo defaultAcl.mode = override
defaultAcl.public = true

A continuación, se mencionan los modos válidos:

  • none: no se debe usar una LCA predeterminada
  • fallback: se debe utilizar una LCA predeterminada solo si no hay ninguna LCA presente
  • append: se debe agregar una LCA predeterminada a una LCA existente
  • override: se debe reemplazar una LCA existente por una LCA predeterminada

Si defaultAcl.mode se configura como override y defaultAcl.public se configura como true, estos parámetros especifican el acceso al “dominio completo”, en el que todos los usuarios del dominio tienen acceso público a todos los registros de la base de datos indexada. El valor de modo determina cuándo aplicar la LCA pública.

Si defaultAcl.mode se configura como none, no se podrá buscar en los registros sin LCA individuales definidas.

LCA común definida 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

Si configuras todos estos parámetros, el conjunto completo especifica una LCA “común definida” para usar en cada registro de la base de datos si este no tiene una definición de LCA individual. Esta LCA común se usa para controlar el acceso en toda la base de datos según el modo seleccionado.

Se supone que cada usuario y grupo es un usuario/grupo definido del dominio local, a menos que tenga el prefijo ‘google:’ (constante literal).

LCA individual Si los parámetros de configuración especifican LCA individuales, cada registro contiene su propia información de LCA dentro de los valores de las columnas.

Si cada registro de la base de datos contiene información de las LCA individuales que está destinada a su propia accesibilidad, la consulta de SQL debe contener los alias de las columnas constantes literales reservadas para que el conector sepa cómo recuperar los usuarios “readers” y “denied”. Si los siguientes literales reservados están presentes en las consultas de SQL, no se requiere ninguna configuración adicional.

readers_users

readers_groups

denied_users

denied_groups

Ejemplos de consultas de SQL de LCA individuales

En los siguientes ejemplos, se muestran las consultas seleccionadas de SQL que utilizan LCA "individuales":

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

Referencia rápida

En la siguiente tabla, se enumeran los parámetros opcionales y obligatorios más importantes que pertenecen al conector de bases de datos, así como los valores predeterminados.

Parámetro Descripción
db.driverClass Valor predeterminado: string vacía

El controlador JDBC para el conector:

db.driverClass = oracle.jdbc.OracleDriver

db.url Obligatorio

Establece la URL de la base de datos:

db.url = jdbc:mysql://localhost:3306/dbname
db.user Valor predeterminado: string vacía

El usuario de la base de datos que el conector utiliza para consultar la base de datos:

db.user = dbadmin

db.password Valor predeterminado: string vacía

La contraseña del usuario de la base de datos que el conector usa para consultar la base de datos:

db.password = pas5w0rd
db.allRecordsSql Obligatorio

Define una consulta de SQL para recuperar todas las columnas relevantes del registro en la base de datos:

db.allRecordsSql = select customer_id, first_name, last_name, employee_id, interesting_field from employee
db.allRecordsSql.pagination Valor predeterminado: none

Especifica una de las siguientes opciones de paginación:

  • none: no se debe usar paginación
  • offset: se debe usar la paginación por desplazamiento de fila

db.allRecordsSql.pagination = offset

db.incrementalUpdateSql Valor predeterminado: inhabilitado (string vacía)

Consulta de recorrido incremental para recuperar los documentos modificados hace poco, por lo general, a través de su marca de tiempo:

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 Valor predeterminado: usa la misma zona horaria (string vacía)

Especifica la zona horaria del servidor DB cuando existe una diferencia entre el servidor de la base de datos y las zonas horarias del conector:

db.timestamp.timezone = America/Los_Angeles
schedule.
traversalIntervalSecs
Valor predeterminado: 86,400 (segundos en un día)

Intervalo de recorrido completo: se realiza una llamada al método de recorrido() del conector con la siguiente programación:

schedule.traversalIntervalSecs = 7200
schedule.
performTraversalOnStart
Configuración predeterminada: true

Invoca un recorrido completo al inicio:

schedule.performTraversalOnStart = false
schedule.
incrementalTraversalIntervalSecs
Valor predeterminado: 300

Cantidad de segundos entre las invocaciones del recorrido incremental para los registros modificados, (requiere db.updataSql):

schedule.incrementalTraversalIntervalSecs = 900
db.allColumns Obligatorio

Todos los alias y nombres de columnas en la consulta de SQL principal que se usarán en cualquier otra definición de columna:

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

Uno o más nombres de encabezados de columnas (con formato name:type) separados por comas que proporcionan un identificador único para el resultado de una consulta de base de datos:

db.uniqueKeyColumns = customer_id
url.format Valor predeterminado: {0}

Especifica el formato de las columnas de URL:

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

Especifica las columnas de una consulta de SQL que se usará a fin de crear una URL visible para los resultados de la búsqueda:

url.columns = customer_id
url.columnsToEscape Valor predeterminado: string vacía

Especifica las columnas de db.columns cuyos valores se codificarán en porcentajes antes de incluirlos en una string de URL con formato:

url.columnsToEscape = customer_id
itemMetadata.title.field Valor predeterminado: string vacía

Especifica la columna del registro que se utilizará para el "título" de los metadatos:

itemMetadata.title.field = customer_id
itemMetadata.createTime.field Valor predeterminado: string vacía

Especifica la columna del registro a usar para la "fecha de creación" de los metadatos:

itemMetadata.createTime.field = created_timestamp
itemMetadata.updatetime.field Valor predeterminado: string vacía

Especifica la columna del registro a usar para la "fecha modificada" de los metadatos:

itemMetadata.updatetime.field = last_update_time
itemMetadata.contentLanguage.field Valor predeterminado: string vacía

Especifica la columna del registro que usar para el "lenguaje" de los metadatos:

itemMetadata.contentLanguage.field = language_used
itemMetadata.objectType Valor predeterminado: string vacía

Especifica la columna del registro a usar para el “objeto” de esquema. Nota: Este es un nombre literal y no un valor de la columna:

itemMetadata.objectType = schema_object_name
db.contentColumns Valor predeterminado: * (todas las columnas de db.allRecords.Sql)

Define las columnas de una consulta de SQL que usar para recuperar el contenido del registro de la base de datos:

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

Especifica el título HTML del contenido y el campo de mayor calidad de búsqueda:

contentTemplate.db.title = id
contentTemplate.db.quality.high Valor predeterminado: string vacía

Especifica los campos de contenido dado un valor Alto de calidad de búsqueda:

contentTemplate.db.quality.high = first_name, last_name
contentTemplate.db.quality.medium Valor predeterminado: string vacía

Especifica los campos de contenido dado un valor Medio de calidad de búsqueda:

contentTemplate.db.quality.medium = interesting_field
contentTemplate.db.quality.low Valor predeterminado: todos los campos no especificados se establecen en un valor predeterminado bajo de calidad de búsqueda

Especifica los campos de contenido dado un valor Bajo de calidad de búsqueda:

contentTemplate.db.quality.low = employee_id
db.blobColumn Valor predeterminado: string vacía

Especifica que la base de datos utiliza una sola columna de BLOB para el contenido del registro:

db.blobColumn=blob_data
defaultAcl.mode Valor predeterminado: none

Especifica uno de los siguientes modos de LCA:

  • none: no se debe usar una LCA predeterminada
  • fallback: se debe utilizar una LCA predeterminada solo si no hay ninguna LCA presente
  • append: se debe agregar una LCA predeterminada a una LCA existente
  • override: se debe reemplazar una LCA existente por una LCA predeterminada

defaultAcl.mode = override

defaultAcl.public Valor predeterminado: false

Especifica que la LCA predeterminada que se usa para todo el repositorio sea pública:

defaultAcl.public=true
defaultAcl.readers.users Solo se usa si defaultAcl.mode se configura como fallback y defaultAcl.public se configura como false.

Especifica los lectores de LCA comunes en una lista delimitada por comas:

defaultAcl.readers.users=user1,user2,user3
defaultAcl.readers.groups Solo se usa si defaultAcl.mode se configura como fallback y defaultAcl.public se configura como false.

Especifica los lectores del grupo de LCA comunes en una lista delimitada por comas:

defaultAcl.readers.groups=group1,group2
defaultAcl.denied.users Solo se usa si defaultAcl.mode se configura como fallback y defaultAcl.public se configura como false.

Especifica los usuarios denegados para todo el repositorio:

defaultAcl.denied.users=user4,user5
defaultAcl.denied.groups Solo se usa si defaultAcl.mode se configura como fallback y defaultAcl.public se configura como false.

Especifica los grupos permitidos para todo el repositorio:

defaultAcl.denied.groups=group3
defaultAcl.name Valor predeterminado: DEFAULT_ACL_VIRTUAL_CONTAINER

Especifica el nombre del contenedor virtual al que se aplica la LCA predeterminada:

defaultAcl.name = employee-db-default-acl
api.defaultRequestMode Valor predeterminado: SYNCHRONOUS

Especifica que los recorridos usen el modo de actualización síncrona (en comparación con las actualizaciones asíncronas):

api.defaultRequestMode = ASYNCHRONOUS
traverse.exceptionHandler Valor predeterminado: 0

Especifica si el recorrido debe ignorarse (“ignore”), anularse siempre (“0”) o anularse después de que se encuentren # excepciones (“10”):

traverse.exceptionHandler = ignore