Saltar al contenido

Detalles de la Conexión de la Couchbase

Introducción

Versión del conector

Esta documentación se basa en la versión 21.0.8257 del conector.

Empezando

Compatibilidad con la versión Couchbase

El conector Jitterbit para Couchbase modela los documentos de Couchbase en un cubo como tablas en una base de datos relacional; conéctese a las versiones 4.0 y posteriores de Couchbase Server, Enterprise Edition o Community Edition.

Establecer una Conexión

Conexión a Couchbase

Para conectarse a los datos, configure Server propiedad al nombre de host o dirección IP de los servidores de Couchbase en los que se está autenticando. Si su servidor Couchbase está configurado para usar SSL, puede habilitarlo usando una URL https para Server (como 'https://couchbase.server'), o configurando UseSSL propiedad a True.

Análisis de Couchbase

De forma predeterminada, el conector se conecta al servicio de consulta N1QL. Para conectarse al servicio Couchbase Analytics, también deberá configurar CouchbaseService propiedad a Analytics.

Nube Couchbase

Se requieren algunas configuraciones especiales para conectarse a Couchbase Cloud:

  • Selecciona el AuthScheme a Basic
  • Selecciona el Server opción al dominio que aparece en la consola de Couchbase Cloud.
  • Habilitar el UseSSL opción.
  • Selecciona el ConnectionMode a Cloud
  • Selecciona el DNSServer opción a un servidor DNS. En la mayoría de los casos, debería ser un servicio de DNS público como 1.1.1.1 o 8.8.8.8.
  • Selecciona el SSLServerCert opción a \* para confiar en el certificado del servidor Couchbase. También puede proporcionar el certificado mediante esa opción o su almacén de confianza si desea que el conector lo valide.

Autenticación con Couchbase

El conector admite varias formas de autenticación según cómo esté configurado su Couchbase Server. Couchbase Cloud solo acepta autenticación estándar, mientras que Couchbase Server acepta todos los formularios.

Autenticación con Autenticación Estándar

Para autenticarse con la autenticación estándar, configure lo siguiente:

  • AuthScheme: Utilizar el Basic opción.
  • User: El usuario que se autentica en Couchbase.
  • Password: La contraseña del usuario que se autentica en Couchbase.
Autenticación con Certificados de Cliente

El conector admite la autenticación con certificados de cliente cuando SSL está habilitado. Para utilizar la autenticación de certificado de cliente, establezca las siguientes propiedades.

  • AuthScheme: Requerido. Utilizar el SSLCertificate opción.
  • SSLClientCertType: Requerido. El tipo de certificado de cliente establecido dentro de SSLClientCert.
  • SSLClientCert: Requerido. El certificado de cliente en el formato dado por SSLClientCertType. Por lo general, la ruta a su archivo de clave privada.
  • SSLClientCertPassword: Opcional. La contraseña del certificado de cliente si está encriptado.
  • SSLClientCertSubject: Opcional. El asunto del certificado de cliente, por defecto el primer certificado encontrado en el almacén. Esto es necesario si hay más de un certificado disponible en el almacén de certificados.
Autenticación con un Archivo de Credenciales

También puede autenticarse usando un archivo de credenciales que contiene múltiples inicios de sesión. Esto se incluye para uso heredado y no se recomienda cuando se conecta a un servidor Couchbase que admita la autenticación basada en funciones.

  • AuthScheme: Utilizar el CredentialsFile opción.
  • CredentialsFile; La ruta al archivo de credenciales. Consulte la documentación de Couchbase para obtener más información sobre el formato de este archivo.

Notas Importantes

Procedimientos Almacenados

  • Las funciones de procedimientos almacenados descritas en esta documentación no se admiten actualmente.
  • Debido a que los procedimientos almacenados no se admiten actualmente, cualquier característica que dependa de los procedimientos almacenados tampoco se admite actualmente.

Archivos de Configuración y Sus Rutas

  • Todas las referencias a la adición de archivos de configuración y sus rutas se refieren a archivos y ubicaciones en Harmony Agente donde está instalado el conector. Estas rutas deben ajustarse según corresponda según el agente y el sistema operativo. Si se utilizan varios agentes en un grupo de agentes, se requerirán archivos idénticos en cada agente.

Base de Datos NoSQL

Couchbase es una base de datos de documentos sin esquemas que proporciona alto rendimiento, disponibilidad y escalabilidad. Estas características no son necesariamente incompatibles con un lenguaje de consultar compatible con estándares como SQL-92.

El conector modela los objetos de Couchbase sin esquema en tablas relacionales y traduce las consultas SQL a consultas N1QL o SQL++ (Analytics) para obtener los datos solicitados. En esta sección, mostraremos varios esquemas que ofrece el conector para cerrar la brecha con SQL relacional y una base de datos de documentos.

Descubrimiento automático de esquemas

Cuando el conector se conecta por primera vez a Couchbase, abre cada depósito y escanea una cantidad configurable de filas de ese depósito. Utiliza esas filas para determinar las columnas en ese depósito y sus tipos de datos, así como también cómo crear tablas secundarias y con sabor para cualquier matriz dentro de esos documentos. Para Couchbase Enterprise versión 4.5.1 y posteriores, el conector también puede configurarse para usar el comando INFER cuando TypeDetectionScheme se establece en INFERIR. Esto permite que el conector obtenga una lista de columnas más precisa para el depósito y detecte sabores más complejos.

Cuando se utiliza el servicio de Analytics, el conector solo detecta columnas y tablas secundarias. Couchbase proporciona las tablas con sabores utilizando conjuntos de datos ocultos. Además, el modo de análisis actualmente no es compatible con INFER, por lo que solo se admite el análisis de filas.

Para obtener más detalles, consulte Detección automática de esquemas para ver cómo se modelan las tablas con sabores y las tablas secundarias a partir de los datos de Couchbase. Configuración NumericStrings también se recomienda, ya que puede evitar problemas de detección de tipo con ciertos tipos de datos de texto.

Definiciones de esquemas personalizados

Opcionalmente, puede usar Definiciones de esquema personalizadas para proyectar la estructura relacional elegida sobre un objeto de Couchbase. Esto le permite definir los nombres de las columnas elegidas, sus tipos de datos y las ubicaciones de sus valores en el documento de Couchbase.

Asignación de consultas

Consulte Asignación de consultas para obtener más detalles sobre cómo se representan varias operaciones de N1QL y SQL++ como SQL.

Aplanamiento vertical

Consulte Aplanado vertical para obtener más detalles sobre cómo las matrices y los objetos se asignan a los campos.

Funciones JSON

Ver Funciones JSON para obtener más detalles sobre cómo extraer datos de cadenas JSON sin formato.

Descubrimiento Automático de Esquemas

Mesas Infantiles

Si los documentos dentro de un depósito contienen campos con matrices, entonces el conector expondrá esos campos como sus propias tablas además de exponerlos como agregados JSON en la tabla principal. La estructura de estas tablas secundarias depende de si la matriz contiene objetos o valores primitivos.

Tablas Secundarias de Matrices

Si las matrices contienen valores primitivos como números o cadenas, la tabla secundaria tendrá solo dos columnas: una llamada "Documento.Id", que es la clave principal del documento que contiene la matriz, y otra llamada "valor", que contiene el valor dentro la matriz Por ejemplo, si el depósito "Juegos" contiene estos documentos:

/* Primary key "1" */
{
  "scores": [1,2,3]
}

/* Primary key "2" */
{
  "scores": [4,5,6]
}

El conector creará una tabla llamada "Games_scores" que contiene estas filas:

Documento.Id valor
1 1
1 2
1 3
2 4
2 5
2 6
Tablas Secundarias de Objetos

Si las matrices contienen objetos, la tabla secundaria tendrá una columna para cada campo que aparece dentro de los objetos, así como una columna "Document.Id" que contiene la clave principal del documento que contiene la matriz. Por ejemplo, si el depósito "Juegos" contiene estos documentos:

/* Primary key "1" */
{
  "moves": [
    {"piece": "pawn", "square": "c3"},
    {"piece": "rook", "square": "d5"}
  ]
}

/* Primary key "2" */
{
  "moves": [
    {"piece": "knight", "square": "f1"},
    {"piece": "bishop", "square": "e4"}
  ]
}

El conector creará una tabla llamada "Games_moves" que contiene estas filas:

Documento.Id pieza cuadrado
1 peón c3
1 torre d5
2 caballero f1
2 biscado e4
Modo de Uniones de Niños Nuevos

Tenga en cuenta que el modelo de datos anterior no es completamente relacional, lo que tiene importantes limitaciones para los casos de uso que involucran operaciones complejas de JOIN o DML en tablas secundarias. El NewChildJoinsMode la propiedad de conexión expone un modelo de datos alternativo que evita estas limitaciones. Consulte su página en la sección de propiedades de conexión de la documentación para obtener más detalles.

Mesas de Sabores

El conector también puede detectar cuando hay varios tipos de documentos dentro del mismo cubo, siempre que TypeDetectionScheme se establece en Infer o DocType y CouchbaseService se establece en N1QL. Estos diferentes tipos de documentos se exponen como sus propias tablas que contienen solo las filas apropiadas.

Por ejemplo, el depósito "Juegos" contiene documentos que tienen un valor de "tipo" de "ajedrez" o "fútbol":

/* Primary key "1" */
{
  "type": "chess",
  "result": "stalemate"
}

/* Primary key "2" */
{
  "type": "chess",
  "result": "black win"
}

/* Primary key "3" */
{
  "type": "football",
  "score": 23
}

/* Primary key "4" */
{
  "type": "football",
  "score": 18
}

El conector creará tres tablas para este depósito: una llamada "Juegos" que contiene todos los documentos:

Documento.Id resultado puntuación tipo
1 estancamiento NULO ajedrez
2 victoria negra NULO ajedrez
3 NULO 23 futbol
4 NULO 18 futbol

Uno llamado "Games.chess" que contiene solo documentos donde el tipo es "ajedrez":

Documento.Id resultado tipo
1 estancamiento ajedrez
2 victoria negra ajedrez

Y uno llamado "Juegos.fútbol" que contiene solo documentos donde el tipo es "fútbol":

Documento.Id puntuación tipo
3 23 futbol
4 18 futbol

Tenga en cuenta que el conector no incluirá columnas en una tabla con sabor que no estén definidas en los documentos de ese tipo. Por ejemplo, aunque las columnas "resultado" y "puntuación" están incluidas en la tabla base, "Juegos.ajedrez" solo incluye "resultado" y "Juegos.fútbol" solo incluye "puntuación".

Mesas Infantiles con Sabor

También es posible que una tabla con sabor contenga matrices, que se convertirán en sus propias tablas secundarias. Por ejemplo, si el depósito "Juegos" contiene estos documentos:

/* Primary key "1" */
{
  "type": "chess",
  "results": ["stalemate", "white win"]
}

/* Primary key "2" */
{
  "type": "chess",
  "results": ["black win", "stalemate"]
}

/* Primary key "3" */
{
  "type": "football",
  "scores": [23, 12]
}

/* Primary key "4" */
{
  "type": "football",
  "scores": [18, 36]
}

Entonces el conector generará estas tablas:

Nombre de la tabla Campo secundario Condición de sabor
Juegos
Juegos_resultados resultados
Partituras_de_juegos partituras
Juegos.ajedrez "tipo" = "ajedrez"
Juegos.ajedrez_resultados resultados "tipo" = "ajedrez"
Juegos.fútbol "tipo" = "fútbol"
Juegos.football_scores partituras "tipo" = "fútbol"

Asignación de Consultas

El conector asigna consultas compatibles con SQL-92 en consultas N1QL o SQL++ correspondientes. Aunque el mapeo a continuación no está completo, debería ayudarlo a tener una idea de los patrones comunes que usa el conector durante esta transformación.

SELECCIONAR Consultas

Las declaraciones SELECT se traducen a la consultar SELECT de N1QL adecuada, como se muestra a continuación. Debido a las similitudes entre SQL-92 y N1QL, muchas consultas serán simplemente traducciones directas.

Una diferencia importante es que cuando el esquema para un depósito de Couchbase determinado existe en el conector, se traducirá una consultar SELECT * para seleccionar directamente los campos individuales del depósito. El conector también creará automáticamente un Document.Id columna basada en la clave principal de cada documento en el depósito.

Consulta SQL Consulta N1QL
SELECCIONE * DE usuarios SELECCIONE META(`users`).id COMO `id`, ... DE `users`
SELECT \[Document.Id\], status FROM users SELECCIONE META(`users`).id COMO `Document.Id`, `users`.`status` DE `users`
SELECCIONE * DE usuarios DONDE estado = 'A' O edad = 50 SELECCIONE META(`users`).id COMO `id`, ... DE `users` DONDE ENTRAR(`users`.`status`) = "A" O TONÚMERO(`users`.`age`) = 50
SELECCIONE * DE usuarios DONDE nombre COMO 'A%' SELECCIONE META(`users`).id COMO `id`, ... DE `users` DONDE ENTRAR(`users`.`name`) COMO "A%"
SELECT * FROM usuarios WHERE status = 'A' ORDER BY [Document.Id] DESC SELECCIONE META(`users`).id COMO `id`, ... DE `users` DONDE ENTRAR(`users`.`status`) = "A" ORDEN POR META(`users`).id DESC
SELECCIONE * DE usuarios DONDE estado EN ('A', 'B') SELECCIONE META(`users`).id, ... DESDE `users` DONDE ENTRAR(`users`.`status`) EN ["A", "B"]

Tenga en cuenta que las condiciones pueden incluir funciones de tipo adicionales si el conector detecta que puede ser necesaria una conversión de tipo. Puede deshabilitar este tipo de conversiones usando StrictComparison propiedad. Para mayor claridad, el resto de las muestras de N1QL se muestran sin estas funciones de conversión adicionales.

USAR TECLAS Optimizaciones

Cuando una consultar tiene una cláusula igual o IN que apunta a Document.Id columna, y no hay una cláusula OR para anularla, el conector convertirá la Document.Id filtro en una cláusula USE KEYS. Esto evita la sobrecarga de escanear un índice porque las claves del documento ya son conocidas por el motor N1QL (esta optimización no se aplica a Analytics CouchbaseService).

Consulta SQL Consulta N1QL
SELECCIONE * FROM usuarios DONDE [Document.Id] = '1' SELECCIONAR DE `users` USAR LAS TECLAS ["1"]
SELECT * FROM usuarios DONDE [Document.Id] IN ('2', '3') SELECCIONAR DE `users` USAR LAS TECLAS ["2", "3"]
SELECCIONE * FROM usuarios DONDE [Document.Id] = '4' O [Document.Id] = '5' SELECCIONAR DE `users` USAR LAS TECLAS ["4", "5"]
SELECCIONE * FROM usuarios DONDE [Document.Id] = '6' AND status = 'A' SELECCIONAR DE `users` UTILICE LAS TECLAS ["6"] DONDE `status` = "A"

Además de usarse para consultas SELECT, se realiza la misma optimización para operaciones DML como se muestra a continuación.

Mesas Infantiles

Siempre que todas las tablas secundarias de una consultar compartan el mismo padre y se combinen mediante INNER JOIN en sus Document.Id columnas, el conector combinará los JOIN en una sola expresión UNNEST. A diferencia de las consultas N1QL UNNEST, debe JOIN explícitamente con la tabla base si desea acceder a sus campos.

Consulta SQL Consulta N1QL
SELECCIONE * DESDE user_posts SELECCIONE META(`users`).identificación, `users_posts`.`text`, ... DE `users` UNNEST `users`.`posts` COMO `users_posts`
SELECCIONE * DESDE usuarios INNER JOIN usuarios_publicaciones ON usuarios.[Documento.Id] = usuarios_publicaciones.[Documento.Id] SELECCIONE META(`users`).identificación, `users`.`name`, ..., `users_posts`.`text`, ... DE `users` UNNEST `users`.`posts` COMO `users_posts`
SELECCIONE * DESDE usuarios INNER JOIN users_posts ... INNER JOIN users_comments ON ... SELECCIONAR DE `users` UNNEST `users`.`posts` COMO `users_posts` UNNEST `users`.`comments` COMO `users_comments`
Tablas de Sabores

Las tablas con sabores siempre tienen la condición adecuada incluida cuando consultar, de modo que solo se devolverán los documentos del tipo:

Consulta SQL Consulta N1QL
SELECCIONE * DESDE [usuarios.suscriptor] SELECCIONAR DE `users` DÓNDE `docType` = "suscriptor"
SELECCIONE * DESDE [usuarios.suscriptor] DONDE edad > 50 SELECCIONAR DE `users` DÓNDE `docType` = "suscriptor" Y `age` > 50
Consultas Agregadas

N1QL tiene varias funciones agregadas integradas. El conector hace un uso extensivo de esto para varias consultas agregadas. Vea algunos ejemplos a continuación:

Consulta SQL Consulta N1QL
SELECCIONE Conteo(*) Como Conteo DESDE Pedidos SELECCIONE Contar(*) COMO `count` DE `Orders`
SELECT Sum(price) As total FROM Orders SELECCIONE Suma(`price`) Como `total` DE `Orders`
SELECT cust_id, Sum(price) As total FROM Orders GROUP BY cust_id ORDER BY total SELECCIONAR `cust_id`, Suma(`price`) Como `total` DE `Orders` AGRUPAR POR `cust_id` ORDENAR POR `total`
SELECT cust_id, ord_date, Sum(price) As total FROM Orders GROUP BY cust_id, ord_date Having total > 250 SELECCIONAR `cust_id`, `ord_date`, Suma(`price`) Como `total` DE `Orders` AGRUPAR POR `cust_id`, `ord_date` Teniendo `total` > 250

Insertar Declaraciones

La instrucción SQL INSERT se asigna a la instrucción N1QL INSERT como se muestra a continuación. Esto funciona igual tanto para los campos de nivel superior como para los campos producidos por Aplanamiento vertical:

Consulta SQL Consulta N1QL
INSERT INTO users(\[Document.Id\], age, status) VALUES ('bcd001', 45, 'A') INSERTAR EN `users`(CLAVE, VALOR) VALORES ('bcd001', { "edad": 45, "estado": "A"})
INSERT INTO users(\[Document.Id\], \[metrics.posts\]) VALUES ('bcd002', 0) INSERTAR EN `users`(CLAVE, VALOR) VALORES ('bcd002', {"métricas': {"publicaciones": 0}})
Inserciones de Mesa Infantil

Las inserciones en tablas secundarias se convierten internamente en ACTUALIZACIONES N1QL mediante operaciones de matriz. Dado que esto no crea el documento de nivel superior, el Document.Id proporcionado debe hacer referencia a un documento que ya existe.

Otra limitación de las inserciones de tablas secundarias es que todas las inserciones de valores múltiples deben usar el mismo Document.Id. El proveedor verificará esto antes de modificar cualquier dato y generará un error si se viola esta restricción.

Consulta SQL Consulta N1QL
INSERT INTO users_ratings(\[Document.Id\], value) VALUES ('bcd001', 4.8), ('bcd001', 3.2) ACTUALIZAR `users` USAR LAS TECLAS "bcd001" CONFIGURAR `ratings` = ARRAY_PUT(`ratings`, 4.8, 3.2)
INSERT INTO users_reviews(\[Document.Id\], score) VALUES ('bcd002', 'Great'), ('bcd002', 'Lacking') ACTUALIZAR `users` USAR LAS TECLAS "bcd001" CONFIGURAR `ratings` = ARRAY_PUT(`ratings`, {"puntuación": "Excelente"}, {"puntuación": "Falta"})

Declaraciones de Inserción Masiva

Las inserciones masivas también son compatibles, la inserción masiva de SQL se convierte como se muestra a continuación:

INSERT INTO users#Temp([Document.Id], KEY, VALUE) VALUES('bcd001', 45, "A")
INSERT INTO users#Temp([Document.Id], KEY, VALUE) VALUES('bcd002', 24, "B")
INSERT INTO users SELECT * FROM users#Temp

se convierte en:

INSERT INTO `usuarios` (KEY, VALUE) VALUES
  ('bcd001', {"age": 45, "status": "A"}),
('bcd002', {"age": 24, "status": "B"})

Al igual que las inserciones de varios valores en las tablas secundarias, todas las filas de una inserción masiva también deben tener el mismo ID de documento.

Actualizar Estados de Cuenta

La declaración de ACTUALIZACIÓN de SQL se asigna a la declaración de ACTUALIZACIÓN de N1SQL como se muestra a continuación:

Consulta SQL Consulta N1QL
UPDATE users SET status = 'C' WHERE \[Document.Id\] = 'bcd001' ACTUALIZAR `users` USAR LAS TECLAS ["bcd001"] SET`status` = "C"
UPDATE users SET status = 'C' WHERE age > 45 ACTUALIZAR `users` COLOCAR `status` = "C" DONDE `age` > 45
Actualizaciones de Tablas Secundarias

Al actualizar una tabla secundaria, la consultar SQL se convierte en una consultar UPDATE utilizando una expresión "FOR" o una expresión "ARRAY":

Consulta SQL Consulta N1QL
UPDATE users_ratings SET value = 5.0 WHERE value > 5.0 ACTUALIZAR `users` COLOCAR `ratings` = ARRAY CASO CUANDO `value` > 5.0 ENTONCES 5 MÁS `value` FIN PARA `value` EN `ratings` FIN
UPDATE users_reviews SET score = 'Unknown' WHERE score = '' ACTUALIZAR `users` COLOCAR `\(child\`.\`score\` = 'Desconocido' PARA \`\)child` EN `reviews` CUANDO `$child`.`score` = "" FIN
Actualizaciones de la Tabla de Sabores

Al igual que las SELECCIONES de las tablas de tipos, las ACTUALIZACIONES en las tablas de tipos siempre incluyen la condición adecuada, por lo que solo se ven afectados los documentos que pertenecen al tipo:

Consulta SQL Consulta N1QL
UPDATE \[users.subscriber\] SET status = 'C' WHERE age > 45 ACTUALIZAR `users` COLOCAR `status` = "C" DONDE `docType` = "suscriptor" Y `age` > 45

Eliminar Extractos

La declaración SQL DELETE se asigna a la declaración N1QL DELETE como se muestra a continuación:

Consulta SQL Consulta N1QL
DELETE FROM users WHERE \[Document.Id\] = 'bcd001' ELIMINAR DE `users` USAR LAS TECLAS ["bcd001"]
DELETE FROM users WHERE status = 'inactive' ELIMINAR DE `users` DÓNDE `status` = "inactivo"
Eliminaciones de Tablas Secundarias

Al eliminar de una tabla secundaria, la consultar SQL se convierte en una consultar de ACTUALIZACIÓN mediante una expresión "ARRAY":

Consulta SQL Consulta N1QL
DELETE FROM users_ratings WHERE value &lt; 0 ACTUALIZAR `users` COLOCAR `ratings` = MATRIZ `value` PARA `value` EN `ratings` CUANDO NO (`value` < 0) FIN
DELETE FROM users_reviews WHERE score = '' ACTUALIZAR `users` COLOCAR `reviews` = MATRIZ `\(child\` PARA \`\)child` EN `reviews` CUANDO NO (`$child`.`score` = "") FIN
Eliminaciones de Tablas de Sabores

Al igual que los SELECT de las tablas de tipos, los DELETE en las tablas de tipos siempre incluyen la condición adecuada, por lo que solo se ven afectados los documentos que pertenecen al tipo:

Consulta SQL Consulta N1QL
DELETE FROM \[users.subscriber\] WHERE status = 'inactive' ELIMINAR DE `users` DÓNDE `docType` = "suscriptor" Y estado = "inactivo"

Aplanamiento Vertical

Documento de Ejemplo

/* Primary key "1" */
{
  "address" : {
    "building" : "1007",
    "coord" : [-73.856077, 40.848447],
    "street" : "Morris Park Ave",
    "zipcode" : "10462"
  },
  "borough" : "Bronx",
  "cuisine" : "Bakery",
  "grades" : [{
      "date" : "2014-03-03T00:00:00Z",
      "grade" : "A",
      "score" : 2
    }, {
      "date" : "2013-09-11T00:00:00Z",
      "grade" : "A",
      "score" : 6
    }, {
      "date" : "2013-01-24T00:00:00Z",
      "grade" : "A",
      "score" : 10
    }, {
      "date" : "2011-11-23T00:00:00Z",
      "grade" : "A",
      "score" : 9
    }, {
      "date" : "2011-03-10T00:00:00Z",
      "grade" : "B",
      "score" : 14
    }],
  "name" : "Morris Park Bake Shop",
  "restaurant_id" : "30075445"
}

Selección de Valores en Objetos

Si el FlattenObjects la propiedad está configurada para permitir el aplanamiento de objetos, luego el conector atravesará los objetos y mapeará los campos dentro de ellos como columnas. Por ejemplo, esta consultar:

SELECT [address.building], [nombre de la calle] FROM restaurants

Devolvería este conjunto de resultados:

dirección.edificio dirección.calle
1007 Avenida Morris Park

Selección de Valores en Matrices

Si el FlattenArrays la propiedad está configurada para permitir el aplanamiento de arreglos, entonces el conector atravesará los arreglos y mapeará sus valores individuales como columnas. Por ejemplo, si Flatten Arrays se estableció en "2", entonces esta consultar:

SELECT [address.coord.0], [dirección.coord.1] FROM restaurants

Devolvería este conjunto de resultados:

dirección.coord.0 dirección.coord.1
-73.856077 40.838447

Tenga en cuenta que el aplanamiento de matriz solo debe usarse en los casos en que conoce la cantidad de elementos de la matriz de antemano, como con "address.coord", que siempre contendrá dos elementos. Para matrices como "calificaciones" que pueden contener números arbitrarios de elementos, considere usar las tablas secundarias descritas en Detección automática de esquemas en su lugar, ya que le permitirán leer todos los valores dentro de la matriz.

Funciones Definidas por el Usuario

Las funciones definidas por el usuario son una característica nueva proporcionada por Couchbase 7 y versiones posteriores. Se pueden usar con el conector como funciones normales pero con una convención de nomenclatura especial para usar funciones con ámbito. Normalmente, el conector requiere que las funciones ya existan antes de que se utilicen, para definirlas, consulte la documentación de Couchbase en CREATE FUNCTION consultas. Estos pueden ejecutarse en la consola Couchbase o con el conector en QueryPassthrough modo.

Couchbase tiene soporte tanto para funciones escalares como para funciones que devuelven resultados de subconsultas. El conector admite funciones escalares dentro de su dialecto SQL, pero las funciones de subconsulta solo se pueden usar cuando QueryPassthrough está habilitado. El resto de esta sección cubre el dialecto SQL del conector y asume que QueryPassthrough está desactivado.

Funciones Globales

Tanto en el modo N1QL como en el modo Analytics, se puede acceder a las funciones globales definidas por el usuario usando sus nombres simples o sus nombres calificados. El nombre simple es solo el nombre de la función:

SELECT ageInYears(birthdate) FROM users

Las funciones globales también se pueden invocar calificándolas con el espacio de nombres predeterminado. Los nombres calificados son nombres entrecomillados que contienen separadores internos, que por defecto es un punto, aunque esto se puede cambiar usando DataverseSeparator propiedad. Tanto en N1QL como en Analytics, el espacio de nombres global se llama Default:

SELECT [Default.ageInYears](fecha de nacimiento) FROM users

Se recomienda llamar a funciones globales usando nombres simples. Si bien se admite el calificador predeterminado, su único uso previsto es cuando una UDF entra en conflicto con una función SQL estándar que el conector traduciría de otro modo.

Funciones de Alcance

Tanto N1QL como Analytics también permiten definir funciones fuera de un contexto global. En Analytics, las funciones se pueden adjuntar tanto a dataverses como a scopes, que se llaman utilizando nombres de dos y tres partes, respectivamente. En N1QL, las funciones solo se pueden adjuntar a los ámbitos, por lo que solo se pueden usar nombres de tres partes.

/* N1QL AND Analytics */
SELECT [socialNetwork.accounts.ageInYears](fecha de nacimiento) FROM [socialNetwork.accounts.users]

/* Analytics only */
SELECT [socailNetwork.ageInYears](fecha de nacimiento) FROM [socialNetwork.accounts.users]

Funciones JSON

El conector puede devolver estructuras JSON como valores de columna. El conector le permite utilizar funciones SQL estándar para trabajar con estas estructuras JSON. Los ejemplos de esta sección utilizan la siguiente matriz:

[
     { "grade": "A", "score": 2 },
     { "grade": "A", "score": 6 },
     { "grade": "A", "score": 10 },
     { "grade": "A", "score": 9 },
     { "grade": "B", "score": 14 }
]

JSON_EXTRACT

La función JSON_EXTRACT puede extraer valores individuales de un objeto JSON. La siguiente consultar devuelve los valores que se muestran a continuación en función de la ruta JSON pasada como segundo argumento de la función:

SELECT Name, JSON_EXTRACT(grades,'[0].grade') AS Grade, JSON_EXTRACT(grades,'[0].score') AS Score FROM Students;
Nombre de columna Valor de ejemplo
Grade un
Score 2

JSON_COUNT

La función JSON_COUNT devuelve la cantidad de elementos en una matriz JSON dentro de un objeto JSON. La siguiente consultar devuelve la cantidad de elementos especificados por la ruta JSON pasada como segundo argumento a la función:

SELECT Name, JSON_COUNT(grades,'[x]') AS NumberOfGrades FROM Students;
Nombre de columna Valor de ejemplo
NumberOfGrades 5

JSON_SUM

La función JSON_SUM devuelve la suma de los valores numéricos de una matriz JSON dentro de un objeto JSON. La siguiente consultar devuelve el total de los valores especificados por la ruta JSON pasada como segundo argumento a la función:

SELECT Name, JSON_SUM(score,'[x].score') AS TotalScore FROM Students;
Nombre de columna Valor de ejemplo
TotalScore 41

JSON_MIN

La función JSON_MIN devuelve el valor numérico más bajo de una matriz JSON dentro de un objeto JSON. La siguiente consultar devuelve el valor mínimo especificado por la ruta JSON pasada como segundo argumento a la función:

SELECT Name, JSON_MIN(score,'[x].score') AS LowestScore FROM Students;
Nombre de columna Valor de ejemplo
LowestScore 2

JSON_MAX

La función JSON_MAX devuelve el valor numérico más alto de una matriz JSON dentro de un objeto JSON. La siguiente consultar devuelve el valor máximo especificado por la ruta JSON pasada como segundo argumento a la función:

SELECT Name, JSON_MAX(score,'[x].score') AS HighestScore FROM Students;
Nombre de columna Valor de ejemplo
HighestScore 14

DOCUMENTO

La función DOCUMENTO se puede usar para devolver un documento como una cadena JSON. DOCUMENT(*) se puede usar con cualquier tipo de consultar SELECT, incluidas consultas que incluyen otras columnas, consultas que incluyen solo DOCUMENT(*) e incluso consultas más complejas como JOIN.

SELECT [Id. del documento], grade, score, DOCUMENT(*) FROM grades

Por ejemplo, esa consultar devolvería:

Documento.Id grado puntuación DOCUMENTO
1 un 6 {"document.id":1, "calificación":"A", "puntuación":6}
2 un 10 {"document.id":1, "calificación":"A", "puntuación":10}
3 un 9 {"document.id":1, "calificación":"A", "puntuación":9}
4 B 14 {"document.id":1, "calificación":"B", "puntuación":14}

Cuando se usa solo, DOCUMENT(*) devuelve la estructura directamente desde Couchbase como si se usara una consultar N1QL o SQL++ SELECT *. Esto significa que no estará presente ningún valor Document.Id ya que Couchbase no lo incluye automáticamente.

SELECT DOCUMENT(*) FROM grades

Esta consultar devolvería:

DOCUMENTO
{"calificaciones":{"calificación":"A", "puntuación":6"}}
{"grades":{"grade":"A", "score":10"}}
{"calificaciones":{"calificación":"A", "puntuación":9"}}
{"grades":{"grade":"B", "score":14"}}

Definiciones de Esquemas Personalizados

Además de Descubrimiento automático de esquemas el conector también le permite definir estáticamente el esquema para su objeto Couchbase. Los esquemas se definen en archivos de configuración basados en texto, lo que facilita su ampliación. Puede llamar al CreateSchema procedimiento almacenado* para generar un archivo de esquema; consulte Descubrimiento automático de esquemas para más información.

Selecciona el Location propiedad al directorio de archivos que contendrá el archivo de esquema. Las siguientes secciones muestran cómo extender el esquema resultante o escribir uno propio.

Documento de Ejemplo

Consideremos el documento a continuación y extraigamos las propiedades anidadas como sus propias columnas:

/* Primary key "1" */
{
  "id": 12,
  "name": "Lohia Manufacturers Inc.",
  "homeaddress": {"street": "Main "Street", "city": "Chapel Hill", "state": "NC"},
  "workaddress": {"street": "10th "Street", "city": "Chapel Hill", "state": "NC"}
  "offices": ["Chapel Hill", "London", "New York"]
  "annual_revenue": 35600000
}
/* Primary key "2" */
{
  "id": 15,
  "name": "Piago Industries",
  "homeaddress": {street": "Main Street", "city": "San Francisco", "state": "CA"},
  "workaddress": {street": "10th Street", "city": "San Francisco", "state": "CA"}
  "offices": ["Durham", "San Francisco"]
  "annual_revenue": 42600000
}

Definición de Esquema Personalizado

<rsb:info title="Customers" description="Customers" other:dataverse="" other:bucket=customers"" other:flavorexpr="" other:flavorvalue="" other:isarray="false" other:pathspec="" other:childpath="">
  <attr name="document.id"        xs:type="string"  key="true" other:iskey="true" other:pathspec=""  />
  <attr name="annual_revenue"     xs:type="integer" other:iskey="false"           other:pathspec=""  other:field="annual_revenue" />
  <attr name="homeaddress.city"   xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.city" />
  <attr name="homeaddress.state"  xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.state" />
  <attr name="homeaddress.street" xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.street" />
  <attr name="name"               xs:type="string"  other:iskey="false"           other:pathspec=""  other:field="name" />
  <attr name="id"                 xs:type="integer" other:iskey="false"           other:pathspec=""  other:field="id" />
  <attr name="offices"            xs:type="string"  other:iskey="false"           other:pathspec=""  other:field="offices" />
  <attr name="offices.0"          xs:type="string"  other:iskey="false"           other:pathspec="[" other:field="offices.0" />
  <attr name="offices.1"          xs:type="string"  other:iskey="false"           other:pathspec="[" other:field="offices.1" />
  <attr name="workaddress.city"   xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.city" />
  <attr name="workaddress.state"  xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.state" />
  <attr name="workaddress.street" xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.street" />
</rsb:info>

En Ejemplo de esquema personalizado, encontrará el esquema completo que contiene el ejemplo anterior.

Propiedades de la Tabla

El esquema anterior usa las siguientes propiedades para definir cualidades específicas para toda la tabla. Todos ellos son obligatorios:

Propiedad Significado
other:dataverse El nombre del dataverso al que pertenece el conjunto de datos. Vacío si no es una vista de Analytics.
other:bucket El nombre del depósito o conjunto de datos dentro de Couchbase
other:flavorexpr La condición codificada de URL en una tabla con sabor. Por ejemplo, "%60docType%60%20%3D%20%22ajedrez%22".
other:flavorvalue El nombre del sabor en una tabla de sabores. Por ejemplo, "ajedrez".
other:isarray Si la tabla es una tabla secundaria de matriz.
other:pathspec Esto se usa para interpretar los separadores dentro de other:childpath. Ver Column Properties para más detalles.
other:childpath La ruta al atributo que se usa para DESANIDAR la tabla secundaria. Vacío si no es una mesa infantil.
Propiedades de Columna

El esquema anterior utiliza las siguientes propiedades para definir cualidades específicas para cada columna:

Propiedad Significado
name Requerido. El nombre de la columna, en minúsculas.
key Se utiliza para marcar la clave principal. Obligatorio para Document.Id pero opcional para otras columnas.
xs:type Requerido. El tipo de la columna dentro del conector.
other:iskey Requerido. Debe tener el mismo valor que la clave, o "falso" si no se incluye la clave.
other:pathspec Requerido. Esto se usa para interpretar los separadores dentro de other:field.
other:field Requerido. El camino al campo en Couchbase.

Tenga en cuenta que los campos que se producen mediante aplanamiento vertical utilizan la misma sintaxis para separar valores de matriz y valores de campo. Esto introduce una posible ambigüedad en casos como el siguiente, donde el conector expone las columnas "numeric_object.0" y "array.0":

{
  "numeric_object": {
    "0": 0
  },
  "array": [
    0
  ]
}

Para asegurarse de que el conector pueda distinguir entre los accesos de campo y matriz, la especificación de ruta se utiliza para determinar si cada "." en el campo es una matriz o un objeto. Cada "{" representa un acceso de campo, mientras que cada "[" representa un acceso de matriz.

Por ejemplo, con un campo de "a.0.b.1" y una "especificación de ruta" de "[{[", la expresión N1QL "a[0].b[1]" sería generado. Si, en cambio, "pathspec" fuera "{{{", then the N1QL expression "a.`0`.b.`Se generaría 1`".

Ejemplo de Esquema Personalizado

Esta sección contiene un esquema completo. Selecciona el Location propiedad al directorio de archivos que contendrá el archivo de esquema. La sección de información permite una vista relacional de un objeto Couchbase. Para obtener más detalles, consulte Definiciones de esquemas personalizados. La siguiente tabla permite los comandos SELECT, INSERT, UPDATE y DELETE implementados en las secciones GET, POST, MERGE y DELETE del siguiente esquema. Las operaciones, como couchbaseadoSysData, son implementaciones internas.

<rsb:script xmlns:rsb="http://www.rssbus.com/ns/rsbscript/2">
  <rsb:info title="Customers" description="Customers" other:dataverse="" other:bucket=customers"" other:flavorexpr="" other:flavorvalue="" other:isarray="false" other:pathspec="" other:childpath="">
    <attr name="document.id"        xs:type="string"  key="true" other:iskey="true" other:pathspec=""  />
    <attr name="annual_revenue"     xs:type="integer" other:iskey="false"           other:pathspec=""  other:field="annual_revenue" />
    <attr name="homeaddress.city"   xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.city" />
    <attr name="homeaddress.state"  xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.state" />
    <attr name="homeaddress.street" xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="homeaddress.street" />
    <attr name="name"               xs:type="string"  other:iskey="false"           other:pathspec=""  other:field="name" />
    <attr name="id"                 xs:type="integer" other:iskey="false"           other:pathspec=""  other:field="id" />
    <attr name="offices"            xs:type="string"  other:iskey="false"           other:pathspec=""  other:field="offices" />
    <attr name="offices.0"          xs:type="string"  other:iskey="false"           other:pathspec="[" other:field="offices.0" />
    <attr name="offices.1"          xs:type="string"  other:iskey="false"           other:pathspec="[" other:field="offices.1" />
    <attr name="workaddress.city"   xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.city" />
    <attr name="workaddress.state"  xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.state" />
    <attr name="workaddress.street" xs:type="string"  other:iskey="false"           other:pathspec="{" other:field="workaddress.street" />
  </rsb:info>
</rsb:script>

Características Avanzadas

Esta sección detalla una selección de funciones avanzadas del conector Couchbase.

Vistas definidas por el usuario

El conector le permite definir tablas virtuales, llamadas vistas definidas por el usuario, cuyo contenido se decide mediante una consultar preconfigurada. Estas vistas son útiles cuando no puede controlar directamente las consultas que se envían a los controladores. Consulte Vistas definidas por el usuario para obtener una descripción general de la creación y configuración de vistas personalizadas.

Configuración SSL

Usar Configuración SSL para ajustar cómo el conector maneja las negociaciones de certificados TLS/SSL. Puede elegir entre varios formatos de certificado; ver el SSLServerCert propiedad en "Opciones de cadena de conexión" para obtener más información.

Apoderado

Para configurar el conector mediante Configuración de proxy de Agente Privado, Selecciona el Use Proxy Settings casilla de verificación en la pantalla de configuración de la conexión.

Vistas Definidas por el Usuario

El conector Jitterbit para Couchbase le permite definir una tabla virtual cuyos contenidos se deciden mediante una consultar preconfigurada. Estas se denominan Vistas definidas por el usuario, que son útiles en situaciones en las que no puede controlar directamente la consultar que se envía al controlador, por ejemplo, cuando se utiliza el controlador de Jitterbit. Las vistas definidas por el usuario se pueden utilizar para definir predicados que siempre se aplican. Si especifica predicados adicionales en la consultar a la vista, se combinan con la consultar ya definida como parte de la vista.

Hay dos formas de crear vistas definidas por el usuario:

  • Cree un archivo de configuración con formato JSON que defina las vistas que desea.
  • Declaraciones DDL.

Definición de Vistas Utilizando un Archivo de Configuración

Las vistas definidas por el usuario se definen en un archivo de configuración con formato JSON llamado UserDefinedViews.json. El conector detecta automáticamente las vistas especificadas en este archivo.

También puede tener múltiples definiciones de vista y controlarlas usando UserDefinedViews propiedad de conexión. Cuando utiliza esta propiedad, el conector solo ve las vistas especificadas.

Este archivo de configuración de vista definida por el usuario tiene el siguiente formato:

  • Cada elemento raíz define el nombre de una vista.
  • Cada elemento raíz contiene un elemento hijo, llamado query, que contiene la consultar SQL personalizada para la vista.

Por ejemplo:

{
    "MyView": {
        "query": "SELECT * FROM Customer WHERE MyColumn = 'value'"
    },
    "MyView2": {
        "query": "SELECT * FROM MyTable WHERE Id IN (1,2,3)"
    }
}

Utilizar el UserDefinedViews propiedad de conexión para especificar la ubicación de su archivo de configuración JSON. Por ejemplo:

"UserDefinedViews", "C:\Users\yourusername\Desktop\tmp\UserDefinedViews.json"

Esquema para Vistas Definidas por el Usuario

Las vistas definidas por el usuario se exponen en UserViews esquema por defecto. Esto se hace para evitar que el nombre de la vista entre en conflicto con una entidad real en el modelo de datos. Puede cambiar el nombre del esquema utilizado para UserViews configurando UserViewsSchemaName propiedad.

Trabajar con Vistas Definidas por el Usuario

Por ejemplo, una instrucción SQL con una vista definida por el usuario llamada UserViews.RCustomers solo enumera clientes en Raleigh:

SELECT * FROM Customers WHERE City = 'Raleigh';

Un ejemplo de una consultar al controlador:

SELECT * FROM UserViews.RCustomers WHERE Status = 'Active';

Dando como resultado la consultar efectiva a la fuente:

SELECT * FROM Customers WHERE City = 'Raleigh' AND Status = 'Active';

Ese es un ejemplo muy simple de una consultar a una vista definida por el usuario que es efectivamente una combinación de la consultar de vista y la definición de vista. Es posible componer estas consultas en patrones mucho más complejos. Todas las operaciones de SQL están permitidas en ambas consultas y se combinan cuando corresponde.

Configuración SSL

Personalización de la Configuración SSL

De forma predeterminada, el conector intenta negociar SSL/TLS comparando el certificado del servidor con el almacén de certificados de confianza del sistema.

Para especificar otro certificado, consulte SSLServerCert propiedad de los formatos disponibles para hacerlo.

Certificados SSL de Cliente

El conector Couchbase también admite la configuración de certificados de cliente. Configure lo siguiente para conectarse usando un certificado de cliente.

  • SSLClientCert: el nombre del almacén de certificados para el certificado de cliente.
  • SSLClientCertType: el tipo de almacén de claves que contiene el certificado de cliente TLS/SSL.
  • SSLClientCertPassword: La contraseña para el certificado de cliente TLS/SSL.
  • SSLClientCertSubject: El asunto del certificado de cliente TLS/SSL.

Modelo de Datos

Descripción general

Dependiendo de la configuración de conexión que se utilice, el conector puede presentar varias asignaciones diferentes entre las entidades de Couchbase y las tablas y vistas relacionales. Para obtener más detalles sobre cada una de estas capacidades, consulte la parte de NoSQL de esta documentación.

  • Al conectarse al servicio de consultar N1QL, el conector modela los depósitos de Couchbase como tablas relacionales. Además, si TypeDetectionScheme está configurado en DocType o Infer, el conector presentará diferentes tipos de documentos en cada depósito como sus propias tablas.
  • Al conectarse al servicio de Analytics, el conector modela los conjuntos de datos de Couchbase como vistas relacionales.
  • Al conectarse con cualquiera de los servicios, el conector puede exponer matrices de datos como tablas o vistas secundarias.

Consulte el Descubrimiento automático de esquemas para obtener más detalles sobre cómo se exponen las tablas secundarias y de sabores. Además, el NewChildJoinsMode La propiedad de conexión se recomienda para flujos de trabajo que hacen un uso intensivo de tablas secundarias. La documentación de esa propiedad de conexión detalla las mejoras que realiza en el modelo de datos del conector.

Dataversos, ámbitos y colecciones

Couchbase tiene diferentes formas de agrupar cubos y conjuntos de datos según CouchbaseService y versión de Couchbase a la que se está conectando:

  • Couchbase organiza los conjuntos de datos de Analytics en grupos llamados dataverses. De forma predeterminada, el conector expone conjuntos de datos de todos los universos de datos utilizando nombres compuestos como Default.users como se describe en DataverseSeparator. Es importante recordar que estos nombres compuestos deben estar entrecomillados cuando se usan en consultas, por ejemplo SELECT * FROM [Default.users]
  • También puede configurar el Dataverse propiedad para limitar el conector a la exposición de un único dataverso. Esto deshabilita los nombres compuestos para que los nombres de las vistas no incluyan el conjunto de datos.
  • Al conectarse a Couchbase 7 y superior, el conector usará el alcance, la colección y el nombre del depósito/conjunto de datos para crear la tabla y ver los nombres. Por ejemplo, una tabla con un nombre como crm.accounts.customers expone el customers colección bajo el accounts alcance de la crm balde. Estos deben citarse de la misma manera que otros nombres compuestos cuando se usan en consultas, por ejemplo SELECT * FROM [crm.accounts.customers]

Metadatos en vivo

Todos los esquemas proporcionados por el conector se recuperan dinámicamente de Couchbase, por lo que cualquier cambio en los depósitos o campos dentro de Couchbase se reflejará en el conector la próxima vez que se conecte. También puede emitir una consultar de reinicio para actualizar los esquemas sin tener que cerrar la conexión:

RESET SCHEMA CACHE

Procedimientos Almacenados

Procedimientos almacenados* están disponibles para complementar los datos disponibles del Modelo de datos. Puede ser necesario actualizar los datos disponibles desde una vista usando un procedimiento almacenado* porque los datos no proporcionan actualizaciones bidireccionales directas, similares a tablas. En estas situaciones, la recuperación de los datos se realiza utilizando la vista o tabla adecuada, mientras que la actualización se realiza llamando a un procedimiento almacenado. Procedimientos almacenados* toman una lista de parámetros y devuelven un conjunto de datos que contiene la colección de tuplas que constituyen la respuesta.

Conector Jitterbit para Procedimientos Almacenados de Couchbase

Nombre Descripción
AddDocument Inserte documentos JSON completos en Couchbase tal cual.
CreateBucket Crea un nuevo depósito en CouchBase.
CreateCollection Crea una colección bajo un ámbito existente
CreateSchema Crea una definición de esquema de una tabla en Couchbase. Los resultados pueden cambiar según el valor de FlattenObjects, FlattenArrays y TypeDetectionScheme.
CreateScope Crea un alcance bajo un depósito existente
CreateUserTable Una operación interna utilizada cuando GenerateSchemaFiles=OnCreate
DeleteBucket Elimina un depósito (y todas sus colecciones y ámbitos, donde se admitan)
DeleteCollection Elimina una colección (Couchbase 7 y superior)
DeleteScope Elimina un alcance y todas sus colecciones (Couchbase 7 y superior)
FlushBucket Elimina todos los documentos de un cubo en Couchbase.
ListIndices Enumera todos los índices disponibles en Couchbase
ManageIndices Crea/suelta un índice en un depósito de destino en Couchbase.

AñadirDocumento

Inserte documentos JSON completos en Couchbase tal cual.

Aporte
Nombre Tipo Obligatorio Descripción
BucketName String Cierto El cubo para insertar el documento.
SourceTable String Falso El nombre de la tabla temporal que contiene las columnas ID y Documento. Obligatorio si no se especifica ningún ID.
ID String Falso La clave principal para insertar el documento debajo. Obligatorio si no se especifica SourceTable.
Document String Falso El texto JSON del documento a insertar. Obligatorio si no se especifica SourceTable.
Columnas del Conjunto de Resultados
Nombre Tipo Descripción
RowsAffected String El número de filas actualizadas con éxito

CreateBucket

Crea un nuevo depósito en CouchBase.

Creación de Cubos

Los cubos que usan @AuthType 'ninguno' se pueden crear especificando solo @Name, @AuthType, @BucketType y @RamQuotaMB. La opción @ProxyPort también puede ser necesaria, según la versión de Couchbase a la que se esté conectando.

EXECUTE CreateBucket
  @Name = 'Players',
  @AuthType = 'NONE',
  @BucketType = 'COUCHBASE',
  @RamQuotaMB = 100,
@ProxyPort = 1234

Al crear un depósito con @AuthType 'sasl', no se debe proporcionar @ProxyPort y @SaslPassword es opcional:

EXECUTE CreateBucket
  @Name = 'Players',
  @AuthType = 'SASL',
  @BucketType = 'COUCHBASE',
@RamQuotaMB = 100

Todos los demás parámetros se pueden usar independientemente del @AuthType que proporcione.

Aporte
Nombre Tipo Obligatorio Descripción
Name String Cierto El nombre del depósito que se va a crear.
AuthType String Cierto El tipo de autenticación a utilizar puede ser sasl o ninguno.
BucketType String Cierto El tipo de cubeta, puede ser memcached o couchbase.
EvictionPolicy String Falso Qué desalojar del caché si el depósito está lleno, puede ser fullEviction o valueOnly
FlushEnabled String Falso Habilita o deshabilita el vaciado de todo el soporte, puede ser 0 o 1.
ParallelDBAndViewCompaction String Falso Permite compactaciones simultáneas de la base de datos y las vistas, puede ser verdadero o falso.
ProxyPort String Falso El puerto proxy, debe estar sin usar, requerido si la autorización no es SASL.
RamQuotaMB String Cierto La cantidad de RAM para asignar al depósito, en megabytes.
ReplicaIndex String Falso Habilita o deshabilita los índices replicados, puede ser 1 o 0.
ReplicaNumber String Falso Un número entre 0 y 3, especifica el número de réplicas.
SaslPassword String Falso Se puede proporcionar una contraseña SASL si el tipo de autenticación es SASL.
ThreadsNumber String Falso Un número entre 2 y 8, especifica el número de lectores/escritores simultáneos.
CompressionMode String Falso Desactivado (sin compresión), Pasivo (los documentos insertados comprimidos permanecen comprimidos) o Activo (el servidor puede comprimir cualquier documento). En Couchbase Enterprise, Pasivo es el valor predeterminado.
ConflictResolutionType String Falso Cómo resolverá el servidor los conflictos entre los nodos del clúster. Ya sea lww (resolución basada en marcas de tiempo) o seqno (resolución basada en ID de revisión). El valor predeterminado es seqno en Couchbase Enterprise.
Columnas del Conjunto de Resultados
Nombre Tipo Descripción
Success String Si el depósito se creó correctamente o no.

CreateCollection

Crea una colección bajo un alcance existente

Aporte
Nombre Tipo Obligatorio Descripción
Bucket String Cierto El nombre del depósito que contiene la colección.
Scope String Cierto El nombre del ámbito que contiene la colección.
Name String Cierto El nombre de la colección a crear.
Columnas del Conjunto de Resultados
Nombre Tipo Descripción
Success Bool Si la colección se creó correctamente o no.

CrearEsquema

Crea una definición de esquema de una tabla en Couchbase. Los resultados pueden cambiar según el valor de FlattenObjects, FlattenArrays y TypeDetectionScheme.

Aporte
Nombre Tipo Obligatorio Descripción
TableName String Cierto El nombre de las mesa.
FileName String Falso La ruta completa del archivo y el nombre del esquema que se va a generar, obligatorio si no se establece la propiedad de conexión de ubicación. Ej: 'C:\Users\User\Desktop\SmartSheet\sheet.rsd'
Overwrite String Falso Eliminará cualquier archivo de esquema existente para esta tabla.
Columnas del Conjunto de Resultados
Nombre Tipo Descripción
Result String Si el esquema se creó correctamente o no.

Crear Ámbito

Crea un alcance bajo un depósito existente

Aporte
Nombre Tipo Obligatorio Descripción
Bucket String Cierto El nombre del depósito que contiene el ámbito.
Name String Cierto El nombre del ámbito que se va a crear.
Columnas del Conjunto de Resultados
Nombre Tipo Descripción
Success Bool Si el ámbito se creó correctamente o no.

CreateUserTable

Una operación interna utilizada cuando GenerateSchemaFiles=OnCreate

Note: Este procedimiento hace uso de indexed parameters. Estos parámetros de entrada se indican con un # carácter al final de sus nombres.

Los parámetros indexados facilitan el suministro de múltiples instancias de un solo parámetro como entradas para el procedimiento.

Supongamos que hay un parámetro de entrada llamado Param#. Ingrese múltiples instancias de un parámetro indexado como este:

EXEC ProcedureName Param#1 = "value1", Param#2 = "value2", Param#3 = "value3"
Aporte
Nombre Tipo Obligatorio Descripción
CreateNotExist String Falso Si una tabla existente es un error o no
TableName String Falso El nombre de la tabla a crear
ColumnNames# String Falso Para cada columna, su nombre
ColumnDataTypes# String Falso Para cada columna, su tipo
ColumnSizes# String Falso Para cada columna, su tamaño (ignorado)
ColumnScales# String Falso Para cada columna, su escala (ignorada)
ColumnIsNulls# String Falso Para cada columna, si permite NULL (ignorado)
ColumnDefaults# String Falso Para cada columna, su valor predeterminado (ignorado)
Location String Falso Dónde se genera el archivo de esquema
Columnas del Conjunto de Resultados
Nombre Tipo Descripción
AffectedTables String El número de tablas creadas, ya sea 0 o 1

Eliminar Cubo

Elimina un depósito (y todas sus colecciones y ámbitos, donde sea compatible)

Aporte
Nombre Tipo Obligatorio Descripción
Name String Cierto El nombre del depósito que se va a eliminar.
Columnas del Conjunto de Resultados
Nombre Tipo Descripción
Success Bool Si el depósito se eliminó correctamente o no.

EliminarColección

Elimina una colección (Couchbase 7 y superior)

Aporte
Nombre Tipo Obligatorio Descripción
Bucket String Cierto El nombre del depósito que contiene la colección.
Scope String Cierto El nombre del ámbito que contiene la colección.
Name String Cierto El nombre de la colección a eliminar.
Columnas del Conjunto de Resultados
Nombre Tipo Descripción
Success Bool Si la colección se eliminó correctamente o no.

DeleteScope

Elimina un alcance y todas sus colecciones (Couchbase 7 y superior)

Aporte
Nombre Tipo Obligatorio Descripción
Bucket String Cierto El nombre del depósito que contiene el ámbito.
Name String Cierto El nombre del ámbito que se va a eliminar.
Columnas del Conjunto de Resultados
Nombre Tipo Descripción
Success Bool Si el alcance se eliminó correctamente o no.

FlushBucket

Elimina todos los documentos de un cubo en Couchbase.

Aporte
Nombre Tipo Obligatorio Descripción
Name String Cierto El nombre del depósito que se va a eliminar. La descarga debe estar habilitada en este depósito.
Columnas del Conjunto de Resultados
Nombre Tipo Descripción
Success Bool Si el cubo se enjuagó correctamente o no.

ListIndices

Enumera todos los índices disponibles en Couchbase

Columnas del Conjunto de Resultados
Nombre Tipo Descripción
Id String El ID de índice único
Datastore_id String El servidor que aloja el cubo indexado
Namespace_id String El grupo que aloja el depósito indexado
Bucket_id String El depósito al que se aplica el índice si el índice se aplica a una colección (Couchbase 7 y versiones posteriores). NULL en caso contrario.
Scope_id String El alcance al que se aplica el índice si el índice se aplica a una colección (Couchbase 7 y superior). NULL en caso contrario.
Keyspace_id String La colección a la que se aplica el índice, si el índice se aplica a una colección (Couchbase 7 y superior). De lo contrario, el depósito al que se aplica el índice.
Index_key String Una lista de claves que participan en el índice
Condition String El filtro N1QL al que se aplica el índice
Is_primary String Si el índice está en la clave principal
Name String El nombre del índice
State String Si el índice está disponible
Using String Si el índice está respaldado por GSI o una vista

AdministrarÍndices

Crea/suelta un índice en un depósito de destino en Couchbase.

Índices de Construcción

Se puede crear un índice primario anónimo con estos parámetros:

EXECUTE ManageIndices
  @BucketName = 'Players'
  @Action = 'CREATE'
  @IsPrimary = 'true'
@IndexType = 'VIEW'

Esto es lo mismo que ejecutar este N1QL:

CREATE PRIMARY INDEX ON `jugadores` USING VIEW

Se puede crear un índice principal con nombre especificando un @Name, además de los parámetros enumerados anteriormente:

EXECUTE ManageIndices
  @BucketName = 'Players'
  @Action = 'CREATE'
  @IsPrimary = 'true'
  @Name = 'Players_primary'
@IndexType = 'VIEW'

Se puede crear un índice secundario configurando @IsPrimary en falso y proporcionando al menos una expresión.

EXECUTE ManageIndices
  @BucketName = 'Players',
  @Action = 'CREATE',
  @IsPrimary = 'false',
  @Name = 'Players_playtime_score',
@Expressions = '["score", "playtime"]'

Esto es lo mismo que ejecutar el siguiente N1QL:

CREATE INDEX `Players_playtime_score` ON `jugadores`(score, playtime) USING GSI;

También se pueden proporcionar múltiples nodos y filtros para generar índices más complejos. Deben proporcionarse como listas JSON:

EXECUTE ManageIndices
  @BucketName = 'Players',
  @Name = 'TopPlayers',
  @Expressions = '["score", "playtime"]',
  @Filter = '["topscore > 1000", "playtime > 600"]',
@Nodes = '["127.0.0.1:8091", "192.168.0.100:8091"]'

Esto es lo mismo que ejecutar el siguiente N1QL:

CREATE INDEX `Mejores jugadores` ON `jugadores`(score, playtime) WHERE topscore > 1000 AND playtime > 600 USING GSI WITH { "nodes": ["127.0.0.1:8091", "192.168.0.100:8091"]};
Aporte
Nombre Tipo Obligatorio Descripción
BucketName String Cierto El depósito de destino para crear o quitar el índice.
ScopeName String Falso El ámbito de destino para crear o eliminar el índice desde (Couchbase 7 y superior)
CollectionName String Falso La colección de destino para crear o quitar el índice (Couchbase 7 y superior)
Action String Cierto Especifica qué acción realizar en el índice, puede ser Create o Drop.
Expressions String Falso Una lista de expresiones o funciones, codificadas como JSON, en las que se basará el índice. Se requiere al menos uno si IsPrimary se establece en false y la acción es Crear.
Name String Falso El nombre del índice para crear o eliminar, obligatorio si IsPrimary se establece en falso.
IsPrimary String Falso Especifica si el índice debe ser un índice principal. El valor por defecto es verdadero*.
Filters String Falso Una lista de filtros, codificados como JSON, para aplicar en el índice.
IndexType String Falso El tipo de índice a crear, puede ser GSI o Ver, solo se usa si la acción es Crear. El valor predeterminado es GSI.
ViewName String Falso Obsoleto, incluido solo por compatibilidad. No hace nada.
Nodes String Falso Una lista, codificada como JSON, de nodos para contener el índice, debe contener el puerto. Solo se usa si la acción es Crear.
NumReplica String Falso Cuántas réplicas crear entre los nodos de índice en el clúster.
Columnas del Conjunto de Resultados
Nombre Tipo Descripción
Success String Si el índice se creó o eliminó correctamente o no.

Tablas del Sistema

Puede consultar las tablas del sistema que se describen en esta sección para acceder a la información del esquema, la información sobre la funcionalidad del origen de datos y las estadísticas de operación lote.

Tablas de Esquema

Las siguientes tablas devuelven metadatos de la base de datos para Couchbase:

Tablas de Fuentes de Datos

Las siguientes tablas devuelven información sobre cómo conectarse y consultar la fuente de datos:

  • sys_connection_props: Devuelve información sobre las propiedades de conexión disponibles.
  • sys_sqlinfo: describe las consultas SELECT que el conector puede descargar al origen de datos.

Tablas de Información de Consulta

La siguiente tabla devuelve estadísticas de consultar para consultas de modificación de datos:

  • identidad_sys: devuelve información sobre operaciones lote o actualizaciones individuales.

Sys_catalogs

Enumera las bases de datos disponibles.

La siguiente consultar recupera todas las bases de datos determinadas por la cadena de conexión:

SELECT * FROM sys_catalogs
Columnas
Nombre Tipo Descripción
CatalogName String El nombre de la base de datos.

Sys_schemas

Enumera los esquemas disponibles.

La siguiente consultar recupera todos los esquemas disponibles:

SELECT * FROM sys_schemas
Columnas
Nombre Tipo Descripción
CatalogName String El nombre de la base de datos.
SchemaName String El nombre del esquema.

Sys_tables

Enumera las tablas disponibles.

La siguiente consultar recupera las tablas y vistas disponibles:

SELECT * FROM sys_tables
Columnas
Nombre Tipo Descripción
CatalogName String La base de datos que contiene la tabla o vista.
SchemaName String El esquema que contiene la tabla o vista.
TableName String El nombre de la tabla o vista.
TableType String El tipo de tabla (tabla o vista).
Description String Una descripción de la tabla o vista.
IsUpdateable Boolean Si la tabla se puede actualizar.

Sys_tablecolumns

Describe las columnas de las tablas y vistas disponibles.

La siguiente consultar devuelve las columnas y los tipos de datos de la tabla Customer:

SELECT ColumnName, DataTypeName FROM sys_tablecolumns WHERE TableName='Customer' 
Columnas
Nombre Tipo Descripción
CatalogName String El nombre de la base de datos que contiene la tabla o vista.
SchemaName String El esquema que contiene la tabla o vista.
TableName String El nombre de la tabla o vista que contiene la columna.
ColumnName String El nombre de la columna.
DataTypeName String El nombre del tipo de datos.
DataType Int32 Un número entero que indica el tipo de datos. Este valor se determina en tiempo de ejecución en función del ambiente.
Length Int32 El tamaño de almacenamiento de la columna.
DisplaySize Int32 El ancho máximo normal de la columna designada en caracteres.
NumericPrecision Int32 El número máximo de dígitos en datos numéricos. La longitud de la columna en caracteres para datos de carácter y fecha y hora.
NumericScale Int32 La escala de columna o número de dígitos a la derecha del punto decimal.
IsNullable Boolean Si la columna puede contener nulo.
Description String Una breve descripción de la columna.
Ordinal Int32 El número de secuencia de la columna.
IsAutoIncrement String Si el valor de la columna se asigna en incrementos fijos.
IsGeneratedColumn String Si se genera la columna.
IsHidden Boolean Si la columna está oculta.
IsArray Boolean Si la columna es una matriz.

Sys_procedimientos

Enumera los procedimientos almacenados disponibles.

La siguiente consultar recupera los procedimientos almacenados disponibles:

SELECT * FROM sys_procedures
Columnas
Nombre Tipo Descripción
CatalogName String La base de datos que contiene el procedimiento almacenado.
SchemaName String El esquema que contiene el procedimiento almacenado.
ProcedureName String El nombre del procedimiento almacenado.
Description String Una descripción del procedimiento almacenado.
ProcedureType String El tipo de procedimiento, como PROCEDIMIENTO o FUNCIÓN.

Sys_procedureparameters

Describe procedimiento almacenado* parámetros.

La siguiente consultar devuelve información sobre todos los parámetros de entrada para el procedimiento almacenado SelectEntries:

SELECT * FROM sys_procedureparameters WHERE ProcedureName='SelectEntries' AND Direction=1 OR Direction=2
Columnas
Nombre Tipo Descripción
CatalogName String El nombre de la base de datos que contiene el procedimiento almacenado.
SchemaName String El nombre del esquema que contiene el procedimiento almacenado.
ProcedureName String El nombre del procedimiento almacenado* que contiene el parámetro.
ColumnName String El nombre del procedimiento almacenado* parámetro.
Direction Int32 Un número entero correspondiente al tipo de parámetro: entrada (1), entrada/salida (2) o salida (4). Los parámetros de tipo de entrada/salida pueden ser tanto parámetros de entrada como de salida.
DataTypeName String El nombre del tipo de datos.
DataType Int32 Un número entero que indica el tipo de datos. Este valor se determina en tiempo de ejecución en función del ambiente.
Length Int32 El número de caracteres permitidos para los datos de caracteres. El número de dígitos permitidos para datos numéricos.
NumericPrecision Int32 La máxima precisión para datos numéricos. La longitud de la columna en caracteres para datos de carácter y fecha y hora.
NumericScale Int32 El número de dígitos a la derecha del punto decimal en datos numéricos.
IsNullable Boolean Si el parámetro puede contener nulo.
IsRequired Boolean Si el parámetro es necesario para la ejecución del procedimiento.
IsArray Boolean Si el parámetro es una matriz.
Description String La descripción del parámetro.
Ordinal Int32 El índice del parámetro.

Sys_keycolumns

Describe las claves primarias y foráneas. La siguiente consultar recupera la clave principal de la tabla Customer:

SELECT * FROM sys_keycolumns WHERE IsKey='True' AND TableName='Customer'
Columnas
Nombre Tipo Descripción
CatalogName String El nombre de la base de datos que contiene la clave.
SchemaName String El nombre del esquema que contiene la clave.
TableName String El nombre de la tabla que contiene la clave.
ColumnName String El nombre de la columna clave.
IsKey Boolean Si la columna es una clave principal en la tabla a la que se hace referencia en el campo TableName.
IsForeignKey Boolean Si la columna es una clave externa a la que se hace referencia en el campo TableName.
PrimaryKeyName String El nombre de la clave principal.
ForeignKeyName String El nombre de la clave foránea.
ReferencedCatalogName String La base de datos que contiene la clave principal.
ReferencedSchemaName String El esquema que contiene la clave principal.
ReferencedTableName String La tabla que contiene la clave principal.
ReferencedColumnName String El nombre de la columna de la clave principal.

Sys_foreignkeys

Describe las claves foráneas. La siguiente consultar recupera todas las claves foráneas que hacen referencia a otras tablas:

SELECT * FROM sys_foreignkeys WHERE ForeignKeyType = 'FOREIGNKEY_TYPE_IMPORT'
Columnas
Nombre Tipo Descripción
CatalogName String El nombre de la base de datos que contiene la clave.
SchemaName String El nombre del esquema que contiene la clave.
TableName String El nombre de la tabla que contiene la clave.
ColumnName String El nombre de la columna clave.
PrimaryKeyName String El nombre de la clave principal.
ForeignKeyName String El nombre de la clave foránea.
ReferencedCatalogName String La base de datos que contiene la clave principal.
ReferencedSchemaName String El esquema que contiene la clave principal.
ReferencedTableName String La tabla que contiene la clave principal.
ReferencedColumnName String El nombre de la columna de la clave principal.
ForeignKeyType String Designa si la clave externa es una clave de importación (apunta a otras tablas) o de exportación (hace referencia desde otras tablas).

Sys_indexes

Describe los índices disponibles. Al filtrar en los índices, puede escribir consultas más selectivas con tiempos de respuesta de consultar más rápidos.

La siguiente consultar recupera todos los índices que no son claves principales:

SELECT * FROM sys_indexes WHERE IsPrimary='false'
Columnas
Nombre Tipo Descripción
CatalogName String El nombre de la base de datos que contiene el índice.
SchemaName String El nombre del esquema que contiene el índice.
TableName String El nombre de la tabla que contiene el índice.
IndexName String El nombre del índice.
ColumnName String El nombre de la columna asociada con el índice.
IsUnique Boolean True si el índice es único. Falso en caso contrario.
IsPrimary Boolean True si el índice es una clave principal. Falso en caso contrario.
Type Int16 Un valor entero correspondiente al tipo de índice: estadística (0), agrupado (1), hash (2) u otro (3).
SortOrder String El orden de clasificación: A para ascender o D para descender.
OrdinalPosition Int16 El número de secuencia de la columna en el índice.

Sys_connection_props

Devuelve información sobre las propiedades de conexión disponibles y las establecidas en la cadena de conexión.

Al consultar esta tabla, se debe usar la cadena de conexión de configuración:

jdbc:cdata:couchbase:config:

Esta cadena de conexión le permite consultar esta tabla sin una conexión válida.

La siguiente consultar recupera todas las propiedades de conexión que se han establecido en la cadena de conexión o se han establecido a través de un valor predeterminado:

SELECT * FROM sys_connection_props WHERE Value <> ''
Columnas
Nombre Tipo Descripción
Name String El nombre de la propiedad de conexión.
ShortDescription String Una breve descripción.
Type String El tipo de datos de la propiedad de conexión.
Default String El valor predeterminado si no se establece uno explícitamente.
Values String Una lista separada por comas de valores posibles. Se lanza un error de validación si se especifica otro valor.
Value String El valor que establezca o un valor predeterminado preconfigurado.
Required Boolean Si la propiedad es necesaria para conectarse.
Category String La categoría de la propiedad de conexión.
IsSessionProperty String Si la propiedad es una propiedad de sesión, utilizada para guardar información sobre la conexión actual.
Sensitivity String El nivel de sensibilidad de la propiedad. Esto informa si la propiedad está ofuscada en los formularios de registro y autenticación.
PropertyName String Una forma truncada en mayúsculas y minúsculas del nombre de la propiedad de conexión.
Ordinal Int32 El índice del parámetro.
CatOrdinal Int32 El índice de la categoría de parámetro.
Hierarchy String Muestra las propiedades dependientes asociadas que deben configurarse junto con esta.
Visible Boolean Informa si la propiedad está visible en la interfaz de usuario de la conexión.
ETC String Diversa información miscelánea sobre la propiedad.

Sys_sqlinfo

Describe el procesamiento de consultar SELECT que el conector puede descargar al origen de datos.

Procesamiento Colaborativo de Consultas

Al trabajar con fuentes de datos que no admiten SQL-92, puede consultar la vista sys_sqlinfo para determinar las capacidades de consultar de las APIs subyacentes, expresadas en sintaxis SQL.

Descubrimiento de las Capacidades SELECT de la Fuente de Datos

A continuación se muestra un conjunto de datos de ejemplo de las capacidades de SQL. Algunos aspectos de la funcionalidad SELECT se devuelven en una lista separada por comas si es compatible; de lo contrario, la columna contiene NO.

Nombre Descripción Valores posibles
AGGREGATE_FUNCTIONS Funciones de agregación admitidas. AVG, COUNT, MAX, MIN, SUM, DISTINCT
COUNT Si se admite la función COUNT. YES, NO
IDENTIFIER_QUOTE_OPEN_CHAR El carácter de apertura utilizado para escapar de un identificador. [
IDENTIFIER_QUOTE_CLOSE_CHAR El carácter de cierre utilizado para escapar de un identificador. ]
SUPPORTED_OPERATORS Una lista de operadores de SQL admitidos. =, >, <, >=, <=, <>, !=, LIKE, NOT LIKE, IN, NOT IN, IS NULL, IS NOT NULL, AND, OR
GROUP_BY Si se admite GROUP BY y, de ser así, el grado de compatibilidad. NO, NO_RELATION, EQUALS_SELECT, SQL_GB_COLLATE
STRING_FUNCTIONS Funciones de cadena admitidas. LENGTH, CHAR, LOCATE, REPLACE, SUBSTRING, RTRIM, LTRIM, RIGHT, LEFT, UCASE, SPACE, SOUNDEX, LCASE, CONCAT, ASCII, REPEAT, OCTET, BIT, POSITION, INSERT, TRIM, UPPER, REGEXP, LOWER, DIFFERENCE, CHARACTER, SUBSTR, STR, REVERSE, PLAN, UUIDTOSTR, TRANSLATE, TRAILING, TO, STUFF, STRTOUUID, STRING, SPLIT, SORTKEY, SIMILAR, REPLICATE, PATINDEX, LPAD, LEN, LEADING, KEY, INSTR, INSERTSTR, HTML, GRAPHICAL, CONVERT, COLLATION, CHARINDEX, BYTE
NUMERIC_FUNCTIONS Funciones numéricas compatibles. ABS, ACOS, ASIN, ATAN, ATAN2, CEILING, COS, COT, EXP, FLOOR, LOG, MOD, SIGN, SIN, SQRT, TAN, PI, RAND, DEGREES, LOG10, POWER, RADIANS, ROUND, TRUNCATE
TIMEDATE_FUNCTIONS Funciones de fecha/hora admitidas. NOW, CURDATE, DAYOFMONTH, DAYOFWEEK, DAYOFYEAR, MONTH, QUARTER, WEEK, YEAR, CURTIME, HOUR, MINUTE, SECOND, TIMESTAMPADD, TIMESTAMPDIFF, DAYNAME, MONTHNAME, CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP, EXTRACT
REPLICATION_SKIP_TABLES Indica tablas omitidas durante la replicación.
REPLICATION_TIMECHECK_COLUMNS Una matriz de cadenas que contiene una lista de columnas que se usarán para verificar (en el orden dado) para usar como una columna modificada durante la replicación.
IDENTIFIER_PATTERN Valor de cadena que indica qué cadena es válida para un identificador.
SUPPORT_TRANSACTION Indica si el proveedor admite transacciones como compromiso y reversión. YES, NO
DIALECT Indica el dialecto SQL a usar.
KEY_PROPERTIES Indica las propiedades que identifican la base de datos uniforme.
SUPPORTS_MULTIPLE_SCHEMAS Indica si pueden existir varios esquemas para el proveedor. YES, NO
SUPPORTS_MULTIPLE_CATALOGS Indica si pueden existir varios catálogos para el proveedor. YES, NO
DATASYNCVERSION La versión de sincronización de datos necesaria para acceder a este controlador. Standard, Starter, Professional, Enterprise
DATASYNCCATEGORY La categoría Sincronización de datos de este controlador. Source, Destination, Cloud Destination
SUPPORTSENHANCEDSQL Si se admite la funcionalidad de SQL mejorada más allá de lo que ofrece la API. TRUE, FALSE
SUPPORTS_BATCH_OPERATIONS Si se admiten las operaciones lote. YES, NO
SQL_CAP Todas las funciones de SQL admitidas para este controlador. SELECT, INSERT, DELETE, UPDATE, TRANSACTIONS, ORDERBY, OAUTH, ASSIGNEDID, LIMIT, LIKE, BULKINSERT, COUNT, BULKDELETE, BULKUPDATE, GROUPBY, HAVING, AGGS, OFFSET, REPLICATE, COUNTDISTINCT, JOINS, DROP, CREATE, DISTINCT, INNERJOINS, SUBQUERIES, ALTER, MULTIPLESCHEMAS, GROUPBYNORELATION, OUTERJOINS, UNIONALL, UNION, UPSERT, GETDELETED, CROSSJOINS, GROUPBYCOLLATE, MULTIPLECATS, FULLOUTERJOIN, MERGE, JSONEXTRACT, BULKUPSERT, SUM, SUBQUERIESFULL, MIN, MAX, JOINSFULL, XMLEXTRACT, AVG, MULTISTATEMENTS, FOREIGNKEYS, CASE, LEFTJOINS, COMMAJOINS, WITH, LITERALS, RENAME, NESTEDTABLES, EXECUTE, BATCH, BASIC, INDEX
PREFERRED_CACHE_OPTIONS Un valor de cadena especifica las cacheOptions preferidas.
ENABLE_EF_ADVANCED_QUERY Indica si el controlador admite directamente consultas avanzadas provenientes de Entity Framework. De lo contrario, las consultas se manejarán del lado del cliente. YES, NO
PSEUDO_COLUMNS Una matriz de cadenas que indica las pseudocolumnas disponibles.
MERGE_ALWAYS Si el valor es verdadero, el modo de combinación se ejecuta a la fuerza en la sincronización de datos. TRUE, FALSE
REPLICATION_MIN_DATE_QUERY Una consultar de selección para devolver la fecha y hora de inicio de la réplica.
REPLICATION_MIN_FUNCTION Permite que un proveedor especifique el nombre de la fórmula que se usará para ejecutar un min del lado del servidor.
REPLICATION_START_DATE Permite que un proveedor especifique una fecha de inicio de réplica.
REPLICATION_MAX_DATE_QUERY Una consultar de selección para devolver la fecha y hora de finalización de la réplica.
REPLICATION_MAX_FUNCTION Permite que un proveedor especifique el nombre de la fórmula que se usará para ejecutar un máx. del lado del servidor.
IGNORE_INTERVALS_ON_INITIAL_REPLICATE Una lista de tablas que omitirán dividir la réplica en fragmentos en la réplica inicial.
CHECKCACHE_USE_PARENTID Indica si la instrucción CheckCache debe realizarse en la columna de clave principal. TRUE, FALSE
CREATE_SCHEMA_PROCEDURES Indica procedimientos almacenados* que se puede utilizar para generar archivos de esquema.

La siguiente consultar recupera los operadores que se pueden usar en la cláusula WHERE:

SELECT * FROM sys_sqlinfo WHERE Name='SUPPORTED_OPERATORS'

Tenga en cuenta que las tablas individuales pueden tener diferentes limitaciones o requisitos en la cláusula WHERE; consulte el Modelo de datos para obtener más información.

Columnas
Nombre Tipo Descripción
NAME String Un componente de la sintaxis SQL o una capacidad que se puede procesar en el servidor.
VALUE String Detalles sobre el SQL o la sintaxis de SQL admitidos.

Sys_identidad

Devuelve información sobre los intentos de modificación.

La siguiente consultar recupera los Id. de las filas modificadas en una operación lote:

SELECT * FROM sys_identity
Columnas
Nombre Tipo Descripción
Id String El ID generado por la base de datos devuelto de una operación de modificación de datos.
Batch String Un identificador para el lote. 1 para una sola operación.
Operation String El resultado de la operación en el lote: INSERTADO, ACTUALIZADO o ELIMINADO.
Message String ÉXITO o un mensaje de error si falla la actualización en el lote.

Propiedades de Configuraciones Avanzadas

Las propiedades de configuraciones avanzadas son las diversas opciones que se pueden utilizar para establecer una conexión. Esta sección proporciona una lista completa de las opciones que puede configurar. Haga clic en los enlaces para obtener más detalles.

Autenticación

Propiedad Descripción
AuthScheme El tipo de autenticación que se utilizará al conectarse a Couchbase.
User La cuenta de usuario de Couchbase utilizada para la autenticación.
Password La contraseña utilizada para autenticar al usuario.
CredentialsFile Utilice esta propiedad si necesita proporcionar credenciales para varios usuarios o depósitos. Este archivo tiene prioridad sobre otras formas de autenticación.
Server La dirección del servidor o servidores de Couchbase a los que se está conectando.
CouchbaseService Determina el servicio de Couchbase al que conectarse. El valor predeterminado es N1QL. Las opciones disponibles son N1QL y Analytics.
ConnectionMode Determina cómo conectarse al servidor de Couchbase. Debe ser directo o en la nube.
DNSServer Determina qué servidor DNS usar al recuperar información de Couchbase Cloud.
N1QLPort El puerto para conectarse al Couchbase N1QL Extremo.
AnalyticsPort El puerto para conectarse al Extremo de Couchbase Analytics.
WebConsolePort El puerto para conectarse a Couchbase Web Console.

SSL

Propiedad Descripción
SSLClientCert El almacén de certificados de cliente TLS/SSL para la autenticación de cliente SSL (SSL bidireccional).
SSLClientCertType El tipo de almacén de claves que contiene el certificado de cliente TLS/SSL.
SSLClientCertPassword La contraseña para el certificado de cliente TLS/SSL.
SSLClientCertSubject El asunto del certificado de cliente TLS/SSL.
UseSSL Si negociar TLS/SSL al conectarse al servidor de Couchbase.
SSLServerCert El certificado que se aceptará del servidor al conectarse mediante TLS/SSL.

Esquema

Propiedad Descripción
Location Una ruta al directorio que contiene los archivos de esquema que definen tablas, vistas y procedimientos almacenados.
BrowsableSchemas Esta propiedad restringe los esquemas informados a un subconjunto de los esquemas disponibles. Por ejemplo, BrowsableSchemas=SchemaA, SchemaB, SchemaC.
Tables Esta propiedad restringe las tablas notificadas a un subconjunto de las tablas disponibles. Por ejemplo, Tablas=TablaA, TablaB, TablaC.
Views Restringe las vistas informadas a un subconjunto de las tablas disponibles. Por ejemplo, Vistas=VistaA, VistaB, VistaC.
Dataverse Qué datos de Analytics escanear al descubrir tablas.
TypeDetectionScheme Determina cómo el proveedor crea tablas y columnas a partir de los cubos que se encuentran en Couchbase.
InferNumSampleValues El número máximo de valores para cada campo para escanear antes de determinar su tipo de datos. Se aplica a la detección automática de esquemas cuando TypeDetectionScheme se establece en INFER.
InferSampleSize El número máximo de documentos para escanear para las columnas disponibles en el depósito. Se aplica a la detección automática de esquemas cuando TypeDetectionScheme se establece en INFER.
InferSimilarityMetric Especifica el grado de similitud en el que los diferentes esquemas se considerarán del mismo tipo. Se aplica a la detección automática de esquemas cuando TypeDetectionScheme se establece en INFER.
FlexibleSchemas Si el proveedor permite que las consultas usen columnas que no ha descubierto.
ExposeTTL Especifica si se debe exponer la información TTL del documento.
NumericStrings Si permitir que los valores de cadena se traten como números.
IgnoreChildAggregates Si el proveedor expone columnas agregadas que también están disponibles como tablas secundarias. Se ignora si TableSupport no está configurado como Completo.
TableSupport Cuánto esfuerzo pondrá el proveedor en descubrir tablas en el servidor de Couchbase.
NewChildJoinsMode Determina el tipo de modelo de tabla secundaria que expone el proveedor.

Misceláneas

Propiedad Descripción
AllowJSONParameters Permite usar JSON sin procesar en parámetros cuando QueryPassthrough está habilitado.
ChildSeparator El carácter o caracteres utilizados para indicar tablas secundarias.
CreateTableRamQuota La cuota de RAM predeterminada, en megabytes, para usar al insertar depósitos a través de la sintaxis CREATE TABLE.
DataverseSeparator El carácter o los caracteres que se utilizan para indicar los universos de datos y los ámbitos/colecciones de Analytics.
FlattenArrays El número de elementos para exponer como columnas de matrices anidadas. Se ignora si IgnoreChildAggreates está habilitado.
FlattenObjects Establezca FlattenObjects en true para aplanar las propiedades de los objetos en sus propias columnas. De lo contrario, los objetos anidados en matrices se devuelven como cadenas de JSON.
FlavorSeparator El carácter o caracteres utilizados para denotar sabores.
GenerateSchemaFiles Indica la preferencia del usuario en cuanto a cuándo deben generarse y guardarse los esquemas.
InsertNullValues Determina si un INSERT debe incluir campos que tienen valores NULL.
MaxRows Limita el número de filas devueltas cuando no se usa agregación o agrupación en la consultar. Esto ayuda a evitar problemas de rendimiento en el momento del diseño.
Other Estas propiedades ocultas se usan solo en casos de uso específicos.
Pagesize El número máximo de resultados a devolver por página de Couchbase.
PeriodsSeparator El carácter o caracteres utilizados para denotar jerarquía.
PseudoColumns Esta propiedad indica si incluir o no pseudocolumnas como columnas en la tabla.
QueryExecutionTimeout Esto establece el tiempo de espera del lado del servidor para la consultar, que determina cuánto tiempo Couchbase ejecutará la consultar antes de devolver un error de tiempo de espera.
QueryPassthrough Esta opción pasa la consultar al servidor de Couchbase tal cual.
RowScanDepth El número máximo de filas para escanear para buscar las columnas disponibles en una tabla.
StrictComparison Ajusta la precisión con la que se traducen los filtros de las consultas de entrada de SQL a las consultas de Couchbase. Esto se puede establecer en una lista de valores separados por comas, donde cada valor puede ser uno de: fecha, número, valor booleano o cadena.
Timeout El valor en segundos hasta que se lanza el error de tiempo de espera, cancelando la operación.
TransactionDurability Especifica cómo se debe almacenar un documento para que una transacción se realice correctamente. Especifica si usar transacciones N1QL al ejecutar consultas.
TransactionTimeout Esto establece la cantidad de tiempo que una transacción puede ejecutarse antes de que Couchbase la agote.
UpdateNullValues Determina si una ACTUALIZACIÓN escribe valores NULL como NULL o los elimina.
UseCollectionsForDDL Si asumir que las instrucciones CREATE TABLE usan colecciones en lugar de tipos. Solo tiene efecto cuando se conecta a Couchbase v7+ y GenerateSchemaFiles está configurado en OnCreate.
UseTransactions Especifica si usar transacciones N1QL al ejecutar consultas.
ValidateJSONParameters Permite que el proveedor valide que los parámetros de cadena sean JSON válidos antes de enviar la consultar a Couchbase.

Autenticación

Esta sección proporciona una lista completa de las propiedades de autenticación que puede configurar.

Propiedad Descripción
AuthScheme El tipo de autenticación que se utilizará al conectarse a Couchbase.
User La cuenta de usuario de Couchbase utilizada para la autenticación.
Password La contraseña utilizada para autenticar al usuario.
CredentialsFile Utilice esta propiedad si necesita proporcionar credenciales para varios usuarios o depósitos. Este archivo tiene prioridad sobre otras formas de autenticación.
Server La dirección del servidor o servidores de Couchbase a los que se está conectando.
CouchbaseService Determina el servicio de Couchbase al que conectarse. El valor predeterminado es N1QL. Las opciones disponibles son N1QL y Analytics.
ConnectionMode Determina cómo conectarse al servidor de Couchbase. Debe ser directo o en la nube.
DNSServer Determina qué servidor DNS usar al recuperar información de Couchbase Cloud.
N1QLPort El puerto para conectarse al Couchbase N1QL Extremo.
AnalyticsPort El puerto para conectarse al Extremo de Couchbase Analytics.
WebConsolePort El puerto para conectarse a Couchbase Web Console.

AuthScheme

El tipo de autenticación que se utilizará al conectarse a Couchbase.

Valores Posibles

Auto, Basic, CredentialsFile, SSLCertificate

Tipo de Datos

string

Valor por Defecto

"Auto"

Observaciones
  • Automático: esta opción está obsoleta y se incluye solo por compatibilidad.
  • Básico: utiliza la autenticación básica HTTP con Usuario y contraseña.
  • CredentialsFile: utiliza un archivo de credenciales. Esto requerirá que CredentialsFile se establezca la propiedad.
  • SSLCertificate: utiliza la autenticación de certificado de cliente SSL. Requiere que Usar SSL esté habilitado y que SSLClientCert y SSLClientCertType establecerse.

Tenga en cuenta que solo se admite la autenticación básica cuando se usa Cloud ConnectionMode.

Usuario

La cuenta de usuario de Couchbase utilizada para la autenticación.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Junto con Contraseña, este campo se usa para autenticarse en el servidor de Couchbase.

Contraseña

La contraseña utilizada para autenticar al usuario.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

El usuario y Password se usan juntos para autenticarse con el servidor.

CredencialesArchivo

Utilice esta propiedad si necesita proporcionar credenciales para varios usuarios o depósitos. Este archivo tiene prioridad sobre otras formas de autenticación.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Utilice esta propiedad si necesita proporcionar credenciales para varios usuarios o depósitos. Esto tiene prioridad sobre otras formas de autenticación.

Colocar CredentialsFile a la ruta de un archivo que tiene el mismo marcado que el siguiente:

[{"user": "YourUserName1", "pass":"YourPassword1"},
{"user": "YourUserName2", "pass":"YourPassword2"}] 

Servidor

La dirección del servidor o servidores de Couchbase a los que se está conectando.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Este valor se puede establecer en un nombre de host o una dirección IP, como "couchbase-server.com" o "1.2.3.4". También se puede establecer en una URL HTTP o HTTPS, como "https://couchbase-server.com o "http://1.2.3.4. Si Modo de conexión está configurado en Cloud, entonces este debería ser el nombre de host de la instancia de Couchbase Cloud como se informa en el panel de control.

Si se utiliza el formulario de URL, al configurar esta opción también se configurará UseSSL opción: si el esquema de URL es "https://, luego Usar SSL se establecerá en verdadero y una URL con "http:// establecerá Usar SSL a falso.

No se puede usar un valor de puerto como parte de esta opción, por lo que valores como "http://couchbase-server.com:8093 no están permitidos. Utilice WebConsolePort, PuertoN1QL y Puerto de análisis.

Este valor también puede aceptar varios servidores en el formato anterior separados por comas, como "1.2.3.4, couchbase-server.com". Esto permitirá que el conector recupere la conexión en caso de que algunos de los servidores enumerados sean inaccesibles.

Tenga en cuenta que, si bien el conector intentará recuperar la conexión como un todo, es posible que pierda operaciones individuales. Por ejemplo, mientras que una consultar de ejecución prolongada fallará si el servidor se vuelve inaccesible mientras se ejecuta esa consultar, esa consultar se puede volver a intentar en la misma conexión y el conector la ejecutará en el siguiente servidor activo.

CouchbaseService

Determina el servicio de Couchbase al que conectarse. El valor predeterminado es N1QL. Las opciones disponibles son N1QL y Analytics.

Valores Posibles

N1QL, Analytics

Tipo de Datos

string

Valor por Defecto

"N1QL"

Observaciones

Determina el servicio de Couchbase al que conectarse. El valor predeterminado es N1QL. Las opciones disponibles son N1QL y Analytics

Modo de Conexión

Determina cómo conectarse al servidor de Couchbase. Debe ser directo o en la nube.

Valores Posibles

Direct, Cloud

Tipo de Datos

string

Valor por Defecto

"Direct"

Observaciones

De forma predeterminada, el conector se conecta a Couchbase directamente mediante la dirección proporcionada en el Servidor opción. El servidor debe estar ejecutando el CouchbaseService para aceptar la conexión. Esto funcionará en la mayoría de las implementaciones en la nube básicas o locales.

Esto debe establecerse en la nube cuando se conecta a Couchbase Cloud o una despliegue personalizada que usa registros de servicio. Estos registros permitirán que el conector determine los servidores de Couchbase exactos que brindan el CouchbaseService. También debe configurar el DNSServer para que el conector pueda obtener estos registros de servicio.

Tenga en cuenta que habilitar el modo en la nube anulará estas propiedades de conexión con los valores descubiertos al comunicarse con el clúster:

  • Servidor
  • Puerto N1QL
  • Puerto analítico

Servidor DNS

Determina qué servidor DNS usar al recuperar información de Couchbase Cloud.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

En la mayoría de los casos, aquí se puede proporcionar cualquier servidor DNS público, como los proporcionados por OpenDNS, Cloudflare o Google.

Si estos no son accesibles, deberá usar el servidor DNS configurado por su administrador de red.

Puerto N1QL

El puerto para conectarse al Couchbase N1QL Extremo.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

El valor predeterminado es 8093 cuando no se usa SSL y 18093 cuando se usa SSL. Vea Usar SSL.

Este puerto se usa para enviar consultas cuando CouchbaseService se establece en N1QL. Cualquier solicitud para administrar índices también pasará por este puerto.

Puerto Analítico

El puerto para conectarse al Extremo de Couchbase Analytics.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

El valor predeterminado es 8095 cuando no se usa SSL y 18095 cuando se usa SSL. Vea Usar SSL.

Este puerto se usa para enviar consultas cuando CouchbaseService está configurado en Análisis.

WebConsolePort

El puerto para conectarse a Couchbase Web Console.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

El valor predeterminado es 8091 cuando no se usa SSL y 18091 cuando se usa SSL. Vea Usar SSL.

Este puerto se utiliza para operaciones de API, como la gestión de depósitos.

SSL

Esta sección proporciona una lista completa de las propiedades SSL que puede configurar.

Propiedad Descripción
SSLClientCert El almacén de certificados de cliente TLS/SSL para la autenticación de cliente SSL (SSL bidireccional).
SSLClientCertType El tipo de almacén de claves que contiene el certificado de cliente TLS/SSL.
SSLClientCertPassword La contraseña para el certificado de cliente TLS/SSL.
SSLClientCertSubject El asunto del certificado de cliente TLS/SSL.
UseSSL Si negociar TLS/SSL al conectarse al servidor de Couchbase.
SSLServerCert El certificado que se aceptará del servidor al conectarse mediante TLS/SSL.

SSLClientCert

El almacén de certificados de cliente TLS/SSL para la autenticación de cliente SSL (SSL bidireccional).

Tipo de Datos

string

Valor por Defecto

""

Observaciones

El nombre del almacén de certificados para el certificado de cliente.

El SSLClientCertType especifica el tipo de almacén de certificados especificado por SSLClientCert. Si la tienda está protegida con contraseña, especifique la contraseña en SSLClientCertPassword.

SSLClientCert se usa junto con SSLClientCertSubject para especificar certificados de cliente. Si SSLClientCert tiene un valor y SSLClientCertSubject, se inicia una búsqueda de un certificado. Vea SSLClientCertSubject para más información.

Las designaciones de los almacenes de certificados dependen de la plataforma.

Las siguientes son designaciones de los almacenes de certificados de usuario y máquina más comunes en Windows:

Propiedad Descripción
MY Un almacén de certificados que contiene certificados personales con sus claves privadas asociadas.
CA Certificados de la autoridad certificadora.
ROOT Certificados raíz.
SPC Certificados de editor de software.

En Java, el almacén de certificados normalmente es un archivo que contiene certificados y claves privadas opcionales.

Cuando el tipo de almacén de certificados es PFXFile, esta propiedad debe establecerse en el nombre del archivo. Cuando el tipo es PFXBlob, la propiedad debe establecerse en el contenido binario de un archivo PFX (por ejemplo, almacén de certificados PKCS12).

SSLClientCertType

El tipo de almacén de claves que contiene el certificado de cliente TLS/SSL.

Valores Posibles

USER, MACHINE, PFXFILE, PFXBLOB, JKSFILE, JKSBLOB, PEMKEY_FILE, PEMKEY_BLOB, PUBLIC_KEY_FILE, PUBLIC_KEY_BLOB, SSHPUBLIC_KEY_FILE, SSHPUBLIC_KEY_BLOB, P7BFILE, PPKFILE, XMLFILE, XMLBLOB

Tipo de Datos

string

Valor por Defecto

"USER"

Observaciones

Esta propiedad puede tomar uno de los siguientes valores:

Propiedad Descripción
USER - default Para Windows, esto especifica que el almacén de certificados es un almacén de certificados propiedad del usuario actual. Tenga en cuenta que este tipo de tienda no está disponible en Java.
MACHINE Para Windows, esto especifica que el almacén de certificados es un almacén de máquinas. Tenga en cuenta que este tipo de tienda no está disponible en Java.
PFXFILE El almacén de certificados es el nombre de un archivo PFX (PKCS12) que contiene certificados.
PFXBLOB El almacén de certificados es una cadena (codificada en base 64) que representa un almacén de certificados en formato PFX (PKCS12).
JKSFILE El almacén de certificados es el nombre de un archivo de almacén de claves Java (JKS) que contiene certificados. Tenga en cuenta que este tipo de tienda solo está disponible en Java.
JKSBLOB El almacén de certificados es una cadena (codificada en base 64) que representa un almacén de certificados en formato JKS. Tenga en cuenta que este tipo de tienda solo está disponible en Java.
PEMKEY_FILE El almacén de certificados es el nombre de un archivo con codificación PEM que contiene una clave privada y un certificado opcional.
PEMKEY_BLOB El almacén de certificados es una cadena (codificada en base64) que contiene una clave privada y un certificado opcional.
PUBLIC_KEY_FILE El almacén de certificados es el nombre de un archivo que contiene un certificado de clave pública con codificación PEM o DER.
PUBLIC_KEY_BLOB El almacén de certificados es una cadena (codificada en base 64) que contiene un certificado de clave pública con codificación PEM o DER.
SSHPUBLIC_KEY_FILE El almacén de certificados es el nombre de un archivo que contiene una clave pública de estilo SSH.
SSHPUBLIC_KEY_BLOB El almacén de certificados es una cadena (codificada en base 64) que contiene una clave pública de estilo SSH.
P7BFILE El almacén de certificados es el nombre de un archivo PKCS7 que contiene certificados.
PPKFILE El almacén de certificados es el nombre de un archivo que contiene una clave privada PuTTY (PPK).
XMLFILE El almacén de certificados es el nombre de un archivo que contiene un certificado en formato XML.
XMLBLOB El almacén de certificados es una cadena que contiene un certificado en formato XML.

SSLClientCertPassword

La contraseña para el certificado de cliente TLS/SSL.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Si el almacén de certificados es de un tipo que requiere una contraseña, esta propiedad se utiliza para especificar esa contraseña para abrir el almacén de certificados.

SSLClientCertSubject

El asunto del certificado de cliente TLS/SSL.

Tipo de Datos

string

Valor por Defecto

"\*"

Observaciones

Al cargar un certificado, el asunto se utiliza para ubicar el certificado en el almacén.

Si no se encuentra una coincidencia exacta, se busca en la tienda temas que contengan el valor de la propiedad. Si aún no se encuentra una coincidencia, la propiedad se establece en una cadena vacía y no se selecciona ningún certificado.

El valor especial "*" selecciona el primer certificado en el almacén de certificados.

El asunto del certificado es una lista separada por comas de valores y campos de nombre distinguido. Por ejemplo, "CN=www.server.com, OU=test, C=US, E=support@company.com". Los campos comunes y sus significados se muestran a continuación.

Campo Significado
CN Nombre común. Este es comúnmente un nombre de alojar como www.server.com.
O Organización
OU Unidad organizativa
L localidad
S Estado
C País
E Dirección de Correo

Si un valor de campo contiene una coma, debe estar entre comillas.

Usar SSL

Si negociar TLS/SSL al conectarse al servidor de Couchbase.

Tipo de Datos

bool

Valor por Defecto

false

Observaciones

Cuando esto se establece en verdadero, los valores predeterminados para las siguientes opciones cambian:

Propiedad Descripción
Property Valor predeterminado de texto sin formato Predeterminado de SSL
[AnalyticsPort](#RSBCouchbase_p_AnalyticsPort) 8095 18095
[N1QLPort](#RSBCouchbase_p_N1QLPort) 8093 18093
[WebConsolePort](#RSBCouchbase_p_WebConsolePort) 8091 18091

Esta opción debe habilitarse al conectarse a Couchbase Cloud porque todas las implementaciones de Couchbase Cloud usan SSL de forma predeterminada.

SSLServerCert

El certificado que se aceptará del servidor al conectarse mediante TLS/SSL.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Si usa una conexión TLS/SSL, esta propiedad se puede usar para especificar el certificado TLS/SSL que se aceptará del servidor. Se rechaza cualquier otro certificado que no sea de confianza para la máquina.

Esta propiedad puede tomar las siguientes formas:

Descripción Ejemplo
Un certificado PEM completo (ejemplo abreviado por brevedad) -----BEGIN CERTIFICATE----- MIIChTCCAe4CAQAwDQYJKoZIhv......Qw== -----END CERTIFICATE-----
Una ruta a un archivo local que contiene el certificado C:\cert.cer
La clave pública (ejemplo abreviado por brevedad) -----BEGIN RSA PUBLIC KEY----- MIGfMA0GCSq......AQAB -----END RSA PUBLIC KEY-----
La huella digital MD5 (los valores hexadecimales también pueden estar separados por espacios o dos puntos) ecadbdda5a1529c58a1e9e09828d70e4
La huella digital SHA1 (los valores hexadecimales también pueden estar separados por espacios o dos puntos) 34a929226ae0819f2ec14b4a3d904f801cbb150d

Si no se especifica, se acepta cualquier certificado en el que confíe la máquina.

La máquina valida los certificados como confiables según el almacén de confianza del sistema. El almacén de confianza utilizado es el valor 'javax.net.ssl.trustStore' especificado para el sistema. Si no se especifica ningún valor para esta propiedad, se utiliza el almacén de confianza predeterminado de Java (por ejemplo, JAVA_HOME\lib\security\cacerts).

Use '*' para indicar que acepta todos los certificados. Tenga en cuenta que esto no se recomienda debido a problemas de seguridad.

Esquema

Esta sección proporciona una lista completa de propiedades de esquema que puede configurar.

Propiedad Descripción
Location Una ruta al directorio que contiene los archivos de esquema que definen tablas, vistas y procedimientos almacenados.
BrowsableSchemas Esta propiedad restringe los esquemas informados a un subconjunto de los esquemas disponibles. Por ejemplo, BrowsableSchemas=SchemaA, SchemaB, SchemaC.
Tables Esta propiedad restringe las tablas notificadas a un subconjunto de las tablas disponibles. Por ejemplo, Tablas=TablaA, TablaB, TablaC.
Views Restringe las vistas informadas a un subconjunto de las tablas disponibles. Por ejemplo, Vistas=VistaA, VistaB, VistaC.
Dataverse Qué datos de Analytics escanear al descubrir tablas.
TypeDetectionScheme Determina cómo el proveedor crea tablas y columnas a partir de los cubos que se encuentran en Couchbase.
InferNumSampleValues El número máximo de valores para cada campo para escanear antes de determinar su tipo de datos. Se aplica a la detección automática de esquemas cuando TypeDetectionScheme se establece en INFER.
InferSampleSize El número máximo de documentos para escanear para las columnas disponibles en el depósito. Se aplica a la detección automática de esquemas cuando TypeDetectionScheme se establece en INFER.
InferSimilarityMetric Especifica el grado de similitud en el que los diferentes esquemas se considerarán del mismo tipo. Se aplica a la detección automática de esquemas cuando TypeDetectionScheme se establece en INFER.
FlexibleSchemas Si el proveedor permite que las consultas usen columnas que no ha descubierto.
ExposeTTL Especifica si se debe exponer la información TTL del documento.
NumericStrings Si permitir que los valores de cadena se traten como números.
IgnoreChildAggregates Si el proveedor expone columnas agregadas que también están disponibles como tablas secundarias. Se ignora si TableSupport no está configurado como Completo.
TableSupport Cuánto esfuerzo pondrá el proveedor en descubrir tablas en el servidor de Couchbase.
NewChildJoinsMode Determina el tipo de modelo de tabla secundaria que expone el proveedor.

Ubicación

Una ruta al directorio que contiene los archivos de esquema que definen tablas, vistas y procedimientos almacenados.

Tipo de Datos

string

Valor por Defecto

"%APPDATA%\\\Couchbase Data Provider\\Schema"

Observaciones

La ruta a un directorio que contiene los archivos de esquema para el conector (archivos .rsd para tablas y vistas, archivos .rsb para procedimientos almacenados). La ubicación de la carpeta puede ser una ruta relativa desde la ubicación del ejecutable. El Location La propiedad solo es necesaria si desea personalizar las definiciones (por ejemplo, cambiar el nombre de una columna, ignorar una columna, etc.) o ampliar el modelo de datos con nuevas tablas, vistas o procedimientos almacenados.

Si no se especifica, la ubicación predeterminada es "%APPDATA%\\ Couchbase Data Provider\Schema" con %APPDATA% estando configurado en el directorio de configuración del usuario:

Plataforma %APPDATA%
Windows El valor de la variable de ambiente APPDATA
Mac ~/Biblioteca/Soporte de aplicaciones
Linux ~/.config

Esquemas Navegables

Esta propiedad restringe los esquemas informados a un subconjunto de los esquemas disponibles. Por ejemplo, BrowsableSchemas=SchemaA,SchemaB,SchemaC.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Enumerar los esquemas de las bases de datos puede resultar costoso. Proporcionar una lista de esquemas en la cadena de conexión mejora el rendimiento.

Mesas

Esta propiedad restringe las tablas notificadas a un subconjunto de las tablas disponibles. Por ejemplo, Tablas=TablaA,TablaB,TablaC.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Listar las tablas de algunas bases de datos puede resultar costoso. Proporcionar una lista de tablas en la cadena de conexión mejora el rendimiento del conector.

Esta propiedad también se puede utilizar como una alternativa a la lista automática de vistas si ya sabe con cuáles quiere trabajar y, de lo contrario, habría demasiadas para trabajar.

Especifique las tablas que desea en una lista separada por comas. Cada tabla debe ser un identificador SQL válido con cualquier carácter especial escapado usando corchetes, comillas dobles o acentos graves. Por ejemplo, Tables=TableA,[TableB/WithSlash],WithCatalog.WithSchema.`TableC With Space`.

Tenga en cuenta que al conectarse a una fuente de datos con varios esquemas o catálogos, deberá proporcionar el nombre completo de la tabla en esta propiedad, como en el último ejemplo aquí, para evitar la ambigüedad entre las tablas que existen en varios catálogos o esquemas.

Puntos de Vista

Restringe las vistas informadas a un subconjunto de las tablas disponibles. Por ejemplo, Vistas=VistaA,VistaB,VistaC.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Listar las vistas de algunas bases de datos puede ser costoso. Proporcionar una lista de vistas en la cadena de conexión mejora el rendimiento del conector.

Esta propiedad también se puede utilizar como una alternativa a la lista automática de vistas si ya sabe con cuáles quiere trabajar y, de lo contrario, habría demasiadas para trabajar.

Especifique las vistas que desee en una lista separada por comas. Cada vista debe ser un identificador SQL válido con cualquier carácter especial escapado usando corchetes, comillas dobles o acentos graves. Por ejemplo, Views=ViewA,[ViewB/WithSlash],WithCatalog.WithSchema.`ViewC With Space`.

Tenga en cuenta que al conectarse a una fuente de datos con varios esquemas o catálogos, deberá proporcionar el nombre completo de la tabla en esta propiedad, como en el último ejemplo aquí, para evitar la ambigüedad entre las tablas que existen en varios catálogos o esquemas.

Dataverso

Qué datos de Analytics escanear al descubrir tablas.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Esta propiedad está vacía de forma predeterminada, lo que significa que se escanearán todos los universos de datos y se generarán los nombres de las tablas como se describe en DataverseSeparator.

Si asigna esta propiedad a un valor que no está en blanco, entonces el conector escaneará solo el dataverso correspondiente (por ejemplo, al establecer esto en "Predeterminado" escanea el dataverso predeterminado). Dado que solo se escanea un dataverso, los nombres de las tablas no tendrán el prefijo del nombre del dataverso. Se recomienda establecer esta propiedad en "Predeterminado" si proviene de una versión anterior del conector y necesita compatibilidad con versiones anteriores.

Si se conecta a Couchbase 7.0 o posterior, esta opción se tratará como un nombre compuesto que contiene un conjunto de datos y un ámbito. Por ejemplo, si anteriormente ha creado colecciones como estas:

CREATE ANALYTICS SCOPE websites.exampledotcom
CREATE ANALYTICS COLLECTION websites.exampledotcom.traffic ON examplecom_traffic_bucket
CREATE ANALYTICS COLLECTION websites.exampledotcom.ads ON examplecom_ads_bucket

Establecería esta opción en "websites.exampledotcom".

TipoDetecciónEsquema

Determina cómo el proveedor crea tablas y columnas a partir de los cubos que se encuentran en Couchbase.

Tipo de Datos

string

Valor por Defecto

"DocType"

Observaciones

Una lista separada por comas de las siguientes opciones:

Propiedad Descripción
DocType Esto descubre tablas comprobando cada depósito y buscando diferentes valores del campo "docType" en los documentos. Por ejemplo, si el cubo beer-sample contiene documentos con "docType" = 'brewery' y "docType" = 'beer', esto generará tres tablas: beer-sample (que contiene todos los documentos), beer-sample.brewery (que contiene solo cervecerías) y beer-sample.beer (que contiene solo cervezas). Al igual que RowScan, escaneará una muestra de los documentos en cada tipo y determinará el tipo de datos para cada campo. Profundidad de exploración de fila determina cuántos documentos se escanean de cada tipo.
DocType=fieldName Como DocType, pero esta exploración se basa en un campo llamado "fieldName" en lugar de "docType". "fieldName" debe coincidir exactamente con el nombre del campo en Couchbase, incluido el caso.
Infer Esto usa la instrucción N1QL INFER para determinar qué tablas y columnas existen. Esto hace una detección de tipo más flexible que DocType, pero solo está disponible para Couchbase Enterprise.
RowScan Esto lee una muestra de documentos de un cubo y determina heurísticamente el tipo de datos. Profundidad de exploración de fila determina cuántos documentos se escanean. No hace ninguna detección de sabor.
None Esto es como RowScan, pero siempre devolverá columnas que tienen tipos de cadena en lugar del tipo detectado.

InferNumSampleValuesInferNumSampleValues

El número máximo de valores para cada campo para escanear antes de determinar su tipo de datos. Se aplica a la detección automática de esquemas cuando TypeDetectionScheme se establece en INFER.

Tipo de Datos

string

Valor por Defecto

"10"

Observaciones

El número máximo de valores para escanear de cada campo de los documentos muestreados antes de determinar el tipo de datos del campo. Esta propiedad permite la configuración adicional de Automatic Schema Discovery cuando está utilizando el comando Couchbase Infer -- TypeDetectionScheme también debe establecerse en Deducir para usar esta propiedad.

InferSampleSize

El número máximo de documentos para escanear para las columnas disponibles en el depósito. Se aplica a la detección automática de esquemas cuando TypeDetectionScheme se establece en INFER.

Tipo de Datos

string

Valor por Defecto

"100"

Observaciones

El número máximo de documentos para escanear para las columnas disponibles en el depósito. El comando Inferir devolverá los metadatos de la columna escaneando una muestra aleatoria de documentos del tamaño especificado aquí.

Establecer un valor alto puede disminuir el rendimiento. Establecer un valor bajo puede evitar que la columna y el tipo de datos se determinen correctamente, especialmente cuando hay datos nulos.

Esta propiedad permite la configuración adicional de Automatic Schema Discovery cuando está utilizando el comando Couchbase Infer -- TypeDetectionScheme también debe establecerse en Deducir para usar esta propiedad.

InferSimilarityMetric

Especifica el grado de similitud en el que los diferentes esquemas se considerarán del mismo tipo. Se aplica a la detección automática de esquemas cuando TypeDetectionScheme se establece en INFER.

Tipo de Datos

string

Valor por Defecto

"0.7"

Observaciones

Esta propiedad especifica qué tan similares deben ser dos esquemas para que se considere que tienen el mismo tipo. Como ejemplo, considere las siguientes filas:

Row 1: ColA, ColB, ColC, ColD
Row 2: ColA, ColB, ColE, ColF
Row 3: ColB, ColF, ColX, ColY

Puede configurar las columnas devueltas para cada sabor con diferentes InferSimilarityMetric valores, como en los siguientes ejemplos:

  • Si configuras InferSimilarityMetric a 1, el conector no devolverá sabores.
  • Si configuras InferSimilarityMetric a 0.5, el conector devolverá 2 sabores, Row1 y Row2 formando uno, y Row3 formando otro.
  • Si configuras InferSimilarityMetric a 0,25, el conector devolverá un solo tipo que contiene todas las filas.

A continuación, puede consultar tipos de documentos utilizando la notación de puntos, como en la siguiente declaración:

SELECT * FROM [Items.Technology]

Esta propiedad permite la configuración adicional de Automatic Schema Discovery cuando está utilizando el comando Couchbase Infer -- TypeDetectionScheme también debe establecerse en Deducir para usar esta propiedad.

Esquemas Flexibles

Si el proveedor permite que las consultas usen columnas que no ha descubierto.

Tipo de Datos

bool

Valor por Defecto

false

Observaciones

De forma predeterminada, el conector solo permitirá que las consultas utilicen columnas que haya encontrado durante el proceso de descubrimiento de metadatos (consulte TypeDetectionScheme para detalles). Esto significa que el conector tiene la información completa para cada columna que presenta, pero también significa que los campos establecidos en solo unos pocos documentos pueden no estar expuestos. Deshabilitar esta opción significa que el conector le permitirá escribir una consultar con las columnas que desee. Si usa columnas en una consultar que no se han descubierto, el conector asumirá que son cadenas simples.

Por ejemplo, el conector usa información de tipo de columna para convertir automáticamente las fechas para la comparación, ya que Couchbase no puede comparar las fechas directamente de forma nativa. Si el conector detecta que datecol es un campo de fecha, puede aplicar la conversión STR_TO_MILLIS automáticamente:

/* SQL */
WHERE datecol < '2020-06-12';

/* N1QL */
WHERE STR_TO_MILLIS(datecol) < STR_TO_MILLIS('2020-06-12');

Cuando se utilizan columnas no descubiertas, el conector no puede realizar este tipo de conversión por usted. Debe aplicar las conversiones necesarias manualmente para asegurarse de que las operaciones se comporten de la manera que desea.

ExponerTTL

Especifica si se debe exponer la información TTL del documento.

Tipo de Datos

bool

Valor por Defecto

false

Observaciones

De forma predeterminada, el conector no expone los valores TTL ni considera los TTL de los documentos al realizar operaciones DML. Habilitar esta opción expone los valores TTL de dos maneras:

  • Todas las tablas obtienen una nueva columna llamada Document.Expiration que contiene el valor TTL para cada documento. Esta columna es un número entero y devuelve cualquier valor TTL que esté almacenado en Couchbase directamente. Esta columna es de lectura y escritura en las tablas de depósito y de solo lectura en las tablas secundarias.
  • INSERTAR y ACTUALIZAR usarán este campo para establecer valores TTL o para conservarlos (para actualización) cuando no se proporciona ninguno. Establecer el campo en 0 o NULL eliminará el TTL de cualquier documento afectado.

Tenga en cuenta que habilitar estas funciones requiere que su servidor sea de la versión 6.5.1 o posterior y que su CouchbaseService se establece en N1QL. Si alguno de estos no es el caso, el conector no se conectará.

NumericStrings

Si permitir que los valores de cadena se traten como números.

Tipo de Datos

bool

Valor por Defecto

true

Observaciones

De forma predeterminada, esta propiedad está habilitada y el conector tratará los valores de cadena como numéricos si todos los valores que muestra durante la detección del esquema son numéricos. Esto puede causar errores de tipo más adelante si el campo contiene valores no numéricos en otros documentos. Si esta propiedad está deshabilitada, las cadenas numéricas se dejan como cadenas, aunque se seguirán detectando otros tipos de datos basados en cadenas, como las marcas de tiempo.

Por ejemplo, el campo "código" en el cubo a continuación se vería afectado por esta configuración. De forma predeterminada, se consideraría un número entero, pero si esta propiedad estuviera habilitada, se trataría como una cadena.

{ "code": "123", "message": "Please restart your computer" }
{ "code": "456", "message": "Urgent update must be applied" }

IgnoreChildAgregatesIgnoreChildAgregates

Si el proveedor expone columnas agregadas que también están disponibles como tablas secundarias. Se ignora si TableSupport no está configurado como Completo.

Tipo de Datos

bool

Valor por Defecto

false

Observaciones

El conector expondrá campos de matriz dentro de un cubo como una tabla secundaria separada, como en el ejemplo de Games_scores descrito en Automatic Schema Discovery. De forma predeterminada, el conector también expondrá estos campos de matriz como agregados JSON en la tabla base. Por ejemplo, cualquiera de estas consultas devolvería información sobre los puntajes del juego:

/* Return each score as an individual row */
SELECT value FROM Games_scores;

/* Return all scores for each Game as a JSON string */
SELECT scores FROM Games;

Dado que estos agregados están expuestos en la tabla base, se generarán incluso cuando la información que contienen sea redundante. Por ejemplo, al realizar esta combinación, se completan las puntuaciones agregadas en Juegos, así como la columna de valor en Games_scores. Internamente, esto hace que se transfieran dos copias de los datos de las puntuaciones desde Couchbase.

/* Retrieves score data twice, once for Games.scores and once for Games_scores.value */
SELECT * FROM Games INNER JOIN Games_scores ON Games.[Document.Id] = Games_scores.[Document.Id]

Esta opción se puede usar para evitar que el campo agregado quede expuesto cuando la misma información también está disponible en una tabla secundaria. En el ejemplo de juegos, establecer esta opción en verdadero significa que la tabla Juegos solo expondrá una columna de clave principal. La única forma de recuperar información sobre las puntuaciones sería la tabla secundaria, por lo que los datos de puntuación solo se leerían una vez desde Couchbase.

/* Only exposes Document.Id, not scores */
SELECT * FROM Games;

/* Only retrieves score data once for Games_scores.value */
SELECT * FROM Games INNER JOIN Games_scores ON Games.[Document.Id] = Games_scores.[Document.Id]

Tenga en cuenta que esta opción anula FlattenArrays, ya que todos los datos de matrices planas también están disponibles como tablas secundarias. Si esta opción está configurada, no se realiza el aplanamiento de la matriz, incluso si FlattenArrays se establece en un valor superior a 0.

MesaSoporte

Cuánto esfuerzo pondrá el proveedor en descubrir tablas en el servidor de Couchbase.

Valores Posibles

Full, Basic, None

Tipo de Datos

string

Valor por Defecto

"Full"

Observaciones

Las opciones disponibles son:

Propiedad Descripción
Full El conector descubrirá los cubos disponibles y buscará tablas secundarias dentro de cada uno de esos cubos. Esto proporciona la forma más flexible de acceder a los datos anidados, pero requiere que cada depósito en su servidor tenga índices primarios.
Basic El conector descubrirá los cubos disponibles, pero no buscará dentro de ellos las tablas secundarias. Esto se recomienda para los casos en los que desea reducir el tiempo que lleva la detección del esquema o si sus depósitos no tienen índices principales.
None El conector solo utilizará los archivos de esquema que se encuentran en la Ubicación y no descubrirá depósitos en el servidor. Esta opción solo debe usarse después de haber creado archivos de esquema. Si utiliza esta opción sin archivos de esquema, no habrá tablas disponibles.

Modo de Uniones de Niños Nuevos

Determina el tipo de modelo de tabla secundaria que expone el proveedor.

Tipo de Datos

string

Valor por Defecto

"false"

Observaciones

De forma predeterminada, el conector expone un modelo de datos compatible con versiones anteriores que no es completamente relacional. En este modo, las tablas no secundarias tienen una clave principal llamada Document.Id, pero las tablas secundarias no tienen una clave principal. En su lugar, tienen una columna llamada Document.Id que tiene el mismo valor que el Document.Id de la fila principal que contiene la fila secundaria.

Por ejemplo, una tabla principal invoices que contiene registros de facturas puede verse así:

Documento.Id cliente
1 Adán
2 Beatriz
3 charlie

Y su hijo invoices_lineitems que contienen elementos de línea pueden tener este aspecto:

Documento.Id artículo
1 portatil
1 teclado
2 grapadora
3 pizarra
3 marcadores

Este modelo tiene varias limitaciones:

  • Los resultados complejos de JOIN pueden ser incorrectos. En la mayoría de los casos, el conector puede traducir un JOIN como SELECT * FROM invoices INNERT JOIN invoices_lineitems ON invoices.[Document.Id] = invoices_lineitems.[Document.Id] en un UNNEST. Pero si JOIN es demasiado complejo, ambos lados se ejecutan por separado, lo que puede producir resultados incorrectos.
  • Las operaciones DML en tablas secundarias anidadas son imposibles porque no hay forma de especificar qué fila del elemento secundario intermedio usar. Por ejemplo, no puede cambiar filas en una tabla como invoices_lineitems_discounts porque no hay forma de especificar la línea de pedido que contiene el descuento que está actualizando.
  • Es posible que algunos ambientes como SSIS no puedan operar en tablas secundarias porque no tienen claves principales.

El modelo de datos NewChildJoins es completamente relacional. En este modo, las tablas que no son secundarias tienen el mismo Document.Id como antes, pero las tablas secundarias se amplían para tener una clave externa y una clave principal. La clave foránea se llama Document.Parent y se refiere a la Document.Id de la fila en la tabla principal que contiene la fila secundaria. La clave principal se llama Document.Id y contiene una ruta que se refiere únicamente a esa fila secundaria.

Por ejemplo, las mismas tablas anteriores se verían así en el modelo NewChildJoins. invoices sería lo mismo:

Documento.Id cliente
1 Adán
2 Beatriz
3 charlie

Sin embargo, invoices_lineitems tendría una clave principal y una clave externa. La clave principal contiene el ID de la fila principal, así como la posición de la fila secundaria en la principal.

Documento.Id Documento.Padre artículo
1$1 1 portatil
1$2 1 teclado
2$1 2 grapadora
3$1 3 pizarra
3$2 3 marcadores

Esto soluciona las limitaciones del antiguo modelo de datos:

  • Los resultados de JOIN complejos siempre son consistentes porque enlace claves externas a claves primarias. SELECT * FROM invoices INNERT JOIN invoices_lineitems ON invoices.[Document.Id] = invoices_lineitems.[Document.Parent]
  • Las operaciones DML en tablas secundarias anidadas están permitidas porque Document.Id contiene toda la información necesaria para seleccionar filas específicas, independientemente de la profundidad de la tabla.
  • Los ambientes que dependen de claves primarias pueden usar estas tablas y generar consultas JOIN ya que las relaciones entre Document.Id y Document.Parent las columnas están incluidas en los metadatos del conector.

Misceláneas

Esta sección proporciona una lista completa de propiedades misceláneas que puede configurar.

Propiedad Descripción
AllowJSONParameters Permite usar JSON sin procesar en parámetros cuando QueryPassthrough está habilitado.
ChildSeparator El carácter o caracteres utilizados para indicar tablas secundarias.
CreateTableRamQuota La cuota de RAM predeterminada, en megabytes, para usar al insertar depósitos a través de la sintaxis CREATE TABLE.
DataverseSeparator El carácter o los caracteres que se utilizan para indicar los universos de datos y los ámbitos/colecciones de Analytics.
FlattenArrays El número de elementos para exponer como columnas de matrices anidadas. Se ignora si IgnoreChildAggreates está habilitado.
FlattenObjects Establezca FlattenObjects en true para aplanar las propiedades de los objetos en sus propias columnas. De lo contrario, los objetos anidados en matrices se devuelven como cadenas de JSON.
FlavorSeparator El carácter o caracteres utilizados para denotar sabores.
GenerateSchemaFiles Indica la preferencia del usuario en cuanto a cuándo deben generarse y guardarse los esquemas.
InsertNullValues Determina si un INSERT debe incluir campos que tienen valores NULL.
MaxRows Limita el número de filas devueltas cuando no se usa agregación o agrupación en la consultar. Esto ayuda a evitar problemas de rendimiento en el momento del diseño.
Other Estas propiedades ocultas se usan solo en casos de uso específicos.
Pagesize El número máximo de resultados a devolver por página de Couchbase.
PeriodsSeparator El carácter o caracteres utilizados para denotar jerarquía.
PseudoColumns Esta propiedad indica si incluir o no pseudocolumnas como columnas en la tabla.
QueryExecutionTimeout Esto establece el tiempo de espera del lado del servidor para la consultar, que determina cuánto tiempo Couchbase ejecutará la consultar antes de devolver un error de tiempo de espera.
QueryPassthrough Esta opción pasa la consultar al servidor de Couchbase tal cual.
RowScanDepth El número máximo de filas para escanear para buscar las columnas disponibles en una tabla.
StrictComparison Ajusta la precisión con la que se traducen los filtros de las consultas de entrada de SQL a las consultas de Couchbase. Esto se puede establecer en una lista de valores separados por comas, donde cada valor puede ser uno de: fecha, número, valor booleano o cadena.
Timeout El valor en segundos hasta que se lanza el error de tiempo de espera, cancelando la operación.
TransactionDurability Especifica cómo se debe almacenar un documento para que una transacción se realice correctamente. Especifica si usar transacciones N1QL al ejecutar consultas.
TransactionTimeout Esto establece la cantidad de tiempo que una transacción puede ejecutarse antes de que Couchbase la agote.
UpdateNullValues Determina si una ACTUALIZACIÓN escribe valores NULL como NULL o los elimina.
UseCollectionsForDDL Si asumir que las instrucciones CREATE TABLE usan colecciones en lugar de tipos. Solo tiene efecto cuando se conecta a Couchbase v7+ y GenerateSchemaFiles está configurado en OnCreate.
UseTransactions Especifica si usar transacciones N1QL al ejecutar consultas.
ValidateJSONParameters Permite que el proveedor valide que los parámetros de cadena sean JSON válidos antes de enviar la consultar a Couchbase.

AllowJSONParameters

Permite usar JSON sin procesar en parámetros cuando QueryPassthrough está habilitado.

Tipo de Datos

bool

Valor por Defecto

false

Observaciones

Esta opción afecta cómo se manejan los parámetros de cadena cuando se usan consultas directas de N1QL y SQL++ a través de QueryPassthrough. Por ejemplo, considere esta consultar:

INSERT INTO `balde` (KEY, VALUE) VALUES ("1", @x)

De forma predeterminada, esta opción está deshabilitada y los parámetros de cadena se citan y escapan en cadenas JSON. Eso significa que cualquier valor se puede usar de manera segura como un parámetro de cadena, pero también significa que los parámetros no se pueden usar como documentos JSON sin procesar:

/*
 * If @x is set to: test value " contains quote
 *
 * Result is a valid query
*/
INSERT INTO `balde` (KEY, VALUE) VALUES ("1", "test value \" contains quote")

/*
 * If @x is set to: {"a": ["valid", "JSON", "value"]}
 *
 * Result contains string instead of JSON document
*/
INSERT INTO `balde` (KEY, VALUE) VALUES ("1", "{\"a\": [\"valid\", \"JSON\", \"value\"]})

Cuando esta opción está habilitada, se asume que los parámetros de cadena son JSON válidos. Esto significa que los documentos JSON sin procesar se pueden usar como parámetros, pero también significa que todas las cadenas simples se deben escapar:

/*
 * If @x is set to: test value " contains quote
 *
 * Result is an invalid query
*/
INSERT INTO `balde` (KEY, VALUE) VALUES ("1", test value " contains quote)

/*
 * If @x is set to: {"a": ["valid", "JSON", "value"]}
 *
 * Result is a JSON document
*/
INSERT INTO `balde` (KEY, VALUE) VALUES ("1", {"a": ["valid", "JSON", "value"]})

Consulte ValidateJSONParameters para obtener más detalles sobre cómo se validan los parámetros cuando esta opción está habilitada.

ChildSeparator

El carácter o caracteres utilizados para indicar tablas secundarias.

Tipo de Datos

string

Valor por Defecto

"\_"

Observaciones

Al crear una tabla secundaria para una matriz debajo de un depósito, el conector generará el nombre de la tabla secundaria al concatenar el nombre de la tabla base, junto con este separador y cada elemento de la ruta.

Por ejemplo, si este documento estuviera en el depósito "clientes", la tabla secundaria para el campo de direcciones se llamaría "direcciones_clientes".

{
  "addresses": [
    {"street": "123 Main St"},
    {"street": "424 Pleasant Ct"},
    {"street": "719 Blue Way"}
  ]
}

CreateTableRamQuota

La cuota de RAM predeterminada, en megabytes, para usar al insertar depósitos a través de la sintaxis CREATE TABLE.

Tipo de Datos

string

Valor por Defecto

"250"

Observaciones

La cuota de RAM predeterminada, en megabytes, para usar al insertar depósitos a través de la sintaxis CREATE TABLE.

DataverseSeparator

El carácter o los caracteres que se utilizan para indicar los universos de datos y los ámbitos/colecciones de Analytics.

Tipo de Datos

string

Valor por Defecto

"."

Observaciones

Al usar el servicio de análisis, el conector escaneará todos los conjuntos de datos de todos los universos de datos disponibles. Para evitar posibles conflictos de nombres, incluirá el nombre del universo de datos y el nombre del conjunto de datos en el nombre de la tabla generada.

De forma predeterminada, se establece en ".", de modo que si hay un conjunto de datos llamado "usuarios" en el universo de datos "Predeterminado", la tabla generada será "Usuarios predeterminados".

Esta propiedad también se usa al generar nombres de tablas para colecciones (tanto en N1QL como en Analytics) en Couchbase 7 y versiones posteriores. Por ejemplo, un depósito llamado "usuarios" que tiene dos colecciones denominadas "activo" e "inactivo" en el ámbito "estado" se detectaría como las tablas "usuarios.estado.activo" y "usuarios.estado.inactivo".

FlattenArrays

El número de elementos para exponer como columnas de matrices anidadas. Se ignora si IgnoreChildAggreates está habilitado.

Tipo de Datos

string

Valor por Defecto

"0"

Observaciones

De forma predeterminada, las matrices anidadas se devuelven como cadenas de JSON. El FlattenArrays La propiedad se puede usar para aplanar los elementos de matrices anidadas en columnas propias. Esto solo se recomienda para arreglos que se espera que sean cortos.

Colocar FlattenArrays a la cantidad de elementos que desea devolver de las matrices anidadas. Los elementos especificados se devuelven como columnas. El índice de base cero se concatena con el nombre de la columna. Se ignoran otros elementos.

Por ejemplo, puede devolver un número arbitrario de elementos de una matriz de cadenas:

["FLOW-MATIC","LISP","COBOL"]

Cuando FlattenArrays se establece en 1, la matriz anterior se aplana en la siguiente tabla:

Nombre de columna Valor de columna
languages.0 FLOW-MATIC

FlattenObjects

Establezca FlattenObjects en true para aplanar las propiedades de los objetos en sus propias columnas. De lo contrario, los objetos anidados en matrices se devuelven como cadenas de JSON.

Tipo de Datos

bool

Valor por Defecto

true

Observaciones

Colocar FlattenObjects a verdadero para aplanar las propiedades del objeto en columnas propias. De lo contrario, los objetos anidados en matrices se devuelven como cadenas de JSON. El nombre de la propiedad se concatena con el nombre del objeto con un guión bajo para generar el nombre de la columna.

Por ejemplo, puede aplanar los objetos anidados a continuación en el momento de la conexión:

address : {
  "street" : "123 Main St.",
  "city"   : "Nowhere",
  "state"  : "NY",
  "zip"    : "12345"
}

Cuando FlattenObjects se establece en verdadero, el objeto anterior se aplana en la siguiente tabla:

Nombre de columna Valor de columna
address.street Calle principal 123
address.city en ninguna parte
address.state Nueva York
address.zip 12345

Separador de Sabores

El carácter o caracteres utilizados para denotar sabores.

Tipo de Datos

string

Valor por Defecto

"."

Observaciones

Cuando el conector detecta una tabla con sabor, usando un DocType o Infer TypeDetectionScheme, nombra las tablas con sabores concatenando el nombre del depósito subyacente, este separador y el valor del tipo principal del depósito.

Por ejemplo, si el conector detecta el sabor "docType = 'beer'" en el cubo "beer-sample", generará la tabla "beer-sample.beer" que contiene solo documentos en "beer-sample" que tienen el tipo de documento "cerveza".

Generar Archivos de Esquema

Indica la preferencia del usuario en cuanto a cuándo deben generarse y guardarse los esquemas.

Valores Posibles

Never, OnUse, OnStart, OnCreate

Tipo de Datos

string

Valor por Defecto

"Never"

Observaciones

GenerateSchemaFiles le permite guardar las definiciones de tabla identificadas por Descubrimiento automático de esquemas. Esta propiedad genera esquemas en archivos .rsd en la ruta especificada por Ubicación.

Los ajustes disponibles son los siguientes:

  • Nunca: nunca se generará un archivo de esquema.
  • OnUse: se generará un archivo de esquema la primera vez que se haga referencia a una tabla, siempre que el archivo de esquema para la tabla aún no exista.
  • OnStart: se generará un archivo de esquema en el momento de la conexión para las tablas que actualmente no tienen un archivo de esquema.
  • OnCreate: se generará un archivo de esquema al ejecutar una consultar SQL CREATE TABLE.

Tenga en cuenta que si desea volver a generar un archivo, primero deberá eliminarlo.

Generar Esquemas con SQL

Cuando configuras GenerateSchemaFiles a OnUse, el conector genera esquemas a medida que ejecuta consultas SELECT. Los esquemas se generan para cada tabla a la que se hace referencia en la consultar.

Cuando configuras GenerateSchemaFiles a OnCreate, los esquemas solo se generan cuando se ejecuta una consultar CREATE TABLE.

Generar Esquemas en la Conexión

Otra forma de usar esta propiedad es obtener esquemas para cada tabla en su base de datos cuando se conecta. Para hacerlo, establezca GenerateSchemaFiles a OnStart y conectar.

Alternativas a los Esquemas Estáticos

Si sus estructuras de datos son volátiles, considere configurar GenerateSchemaFiles a Nunca y utilizando esquemas dinámicos. Consulte Descubrimiento automático de esquemas para obtener más información sobre los esquemas dinámicos.

Edición de Esquemas

Los archivos de esquema tienen un formato simple que los hace fáciles de modificar. Consulte Definiciones de esquemas personalizados para más información.

Insertar Valores Nulos

Determina si un INSERT debe incluir campos que tienen valores NULL.

Tipo de Datos

bool

Valor por Defecto

true

Observaciones

De manera predeterminada, el conector usa valores NULL proporcionados en una instrucción INSERT y los inserta como valores nulos JSON.

Si esta opción está deshabilitada, los valores NULL de SQL se ignoran durante una INSERCIÓN. En el caso de columnas de matriz (FlattenArrays debe configurarse para recuperarlos), esto significa que los índices de matriz se desplazan para compensar los valores que se han eliminado.

Filas Máximas

Limita el número de filas devueltas cuando no se usa agregación o agrupación en la consultar. Esto ayuda a evitar problemas de rendimiento en el momento del diseño.

Tipo de Datos

int

Valor por Defecto

-1

Observaciones

Limita el número de filas devueltas cuando no se usa agregación o agrupación en la consultar. Esto ayuda a evitar problemas de rendimiento en el momento del diseño.

Otro

Estas propiedades ocultas se usan solo en casos de uso específicos.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Las propiedades enumeradas a continuación están disponibles para casos de uso específicos. Los casos de uso y la funcionalidad normales del controlador no deberían requerir estas propiedades.

Especifique varias propiedades en una lista separada por punto y coma.

Integración y Formateo
Propiedad Descripción
DefaultColumnSize Establece la longitud predeterminada de los campos de cadena cuando la fuente de datos no proporciona la longitud de columna en los metadatos. El valor predeterminado es 2000.
ConvertDateTimeToGMT Determina si se convierten los valores de fecha y hora a GMT, en lugar de la hora local de la máquina.
RecordToFile=filename Registra la transferencia de datos del socket subyacente al archivo especificado.

Tamaño de Página

El número máximo de resultados a devolver por página de Couchbase.

Tipo de Datos

int

Valor por Defecto

1000

Observaciones

El Pagesize la propiedad afecta el número máximo de resultados a devolver por página de Couchbase. Establecer un valor más alto puede resultar en un mejor rendimiento a costa de memoria adicional asignada por página consumida.

PeriodsSeparator

El carácter o caracteres utilizados para denotar jerarquía.

Tipo de Datos

string

Valor por Defecto

"."

Observaciones

Al aplanar objetos y matrices, el conector utilizará este valor para separar diferentes niveles de objetos y matrices. Por ejemplo, si su servidor Couchbase devuelve un documento como este (y FlattenObjects está habilitado), el conector devolverá las columnas "geo.latitude" y "geo.longitude" si el separador de períodos está establecido en ".".

{
  "geo": {
    "latitude": 35.9132,
    "longitude": -79.0558
  }
}

Pseudocolumnas

Esta propiedad indica si incluir o no pseudocolumnas como columnas en la tabla.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Esta configuración es particularmente útil en Entity Framework, que no le permite establecer un valor para una pseudocolumna a menos que sea una columna de tabla. El valor de esta configuración de conexión tiene el formato "Tabla1=Columna1, Tabla1=Columna2, Tabla2=Columna3". Puede usar el carácter "*" para incluir todas las tablas y todas las columnas; por ejemplo, "*=*".

QueryExecutionTimeout

Esto establece el tiempo de espera del lado del servidor para la consultar, que determina cuánto tiempo Couchbase ejecutará la consultar antes de devolver un error de tiempo de espera.

Tipo de Datos

string

Valor por Defecto

"-1"

Observaciones

El valor predeterminado es -1, lo que desactiva el tiempo de espera. Al habilitar el tiempo de espera, el valor debe incluir tanto una cantidad como una unidad, que puede ser una de: "ns" (nanosegundos), "us" (microsegundos), "ms" (milisegundos), "s" (segundos), "m" (minutos) o "h" (horas). Por ejemplo, "5m" y "300s" establecen tiempos de espera de 5 minutos.

Hay un tiempo de espera del lado del servidor también llamado "tiempo de espera de exploración de índice", que anulará este si es más bajo. De forma predeterminada, el tiempo de espera del escaneo del índice es de 2 minutos, pero se puede cambiar configurando la propiedad "indexer.settings.scan_timeout" en su servidor de Couchbase.

Transferencia de Consulta

Esta opción pasa la consultar al servidor de Couchbase tal cual.

Tipo de Datos

bool

Valor por Defecto

false

Observaciones

Cuando se configura, las consultas se pasan directamente a Couchbase.

FilaExploraciónProfundidad

El número máximo de filas para escanear para buscar las columnas disponibles en una tabla.

Tipo de Datos

int

Valor por Defecto

100

Observaciones

Las columnas de una tabla deben determinarse escaneando las filas de la tabla. Este valor determina el número máximo de filas que se escanearán.

Establecer un valor alto puede disminuir el rendimiento. Establecer un valor bajo puede evitar que el tipo de datos se determine correctamente, especialmente cuando hay datos nulos.

Comparación Estricta

Ajusta la precisión con la que se traducen los filtros de las consultas de entrada de SQL a las consultas de Couchbase. Esto se puede establecer en una lista de valores separados por comas, donde cada valor puede ser uno de: fecha, número, valor booleano o cadena.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Esta opción está vacía de forma predeterminada, lo que significa que las cláusulas WHERE enviadas a Couchbase incluirán funciones adicionales que convierten valores para que funcionen más comparaciones.

Por ejemplo, dejar la configuración de "cadena" fuera de la lista hace que las matrices se conviertan, de modo que puedan compararse con cadenas:

SELECT * FROM Bucket WHERE MyArrayColumn = '[1,2,3]'

Si se establece en un valor, las consultas que incluyan los tipos relevantes de comparaciones se traducirán literalmente. Esto hace un mejor uso de los índices de Couchbase, pero significa que los tipos de comparaciones deben estar en un formato que Couchbase pueda comparar directamente.

Por ejemplo, si se proporciona "fecha" como una de las opciones, las fechas deben coincidir con el formato en el que están almacenadas en Couchbase, ya que no se convertirán automáticamente:

SELECT * FROM Bucket WHERE MyDateColumn = '2018-10-31T10:00:00';

Se Acabó el Tiempo

El valor en segundos hasta que se lanza el error de tiempo de espera, cancelando la operación.

Tipo de Datos

int

Valor por Defecto

60

Observaciones

Si Timeout = 0, las operaciones no expiran. Las operaciones se ejecutan hasta que se completan correctamente o hasta que encuentran una condición de error.

Si Timeout caduca y la operación aún no se ha completado, el conector genera una excepción.

TransacciónDurabilidad

Especifica cómo se debe almacenar un documento para que una transacción se realice correctamente. Especifica si usar transacciones N1QL al ejecutar consultas.

Valores Posibles

None, Majority, MajorityAndPersistActive, PersistToMajority

Tipo de Datos

string

Valor por Defecto

"Majority"

Observaciones

Si UsarTransacciones está habilitada, entonces esta opción se puede configurar para determinar cuándo Couchbase permitirá escrituras en transacciones para confirmar. La documentación de Couchbase sobre durabilidad y transacciones contiene los detalles completos, a continuación se muestra un resumen de alto nivel.

Esta opción controla los requisitos en ambos quorum y persistence. El quórum puede requerir que no haya réplicas de depósito para recibir el documento (Ninguna), o que la mayoría de las réplicas tengan el documento (todos los demás). El nivel de persistencia requiere que el documento se almacene en la memoria de réplica (Majoriy) o en el disco de réplica (MajorityAndPersistActive, PersistToMajority).

Ninguno solo es útil si el depósito que está utilizando no está configurado para réplicas. Las otras opciones se pueden usar dependiendo de las compensaciones requeridas de rendimiento y durabilidad. La persistencia en más réplicas es más lenta, pero proporciona una mayor resiliencia contra el bloqueo de un nodo.

TransactionTimeout

Esto establece la cantidad de tiempo que una transacción puede ejecutarse antes de que Couchbase la agote.

Tipo de Datos

string

Valor por Defecto

""

Observaciones

Si las transacciones están habilitadas, el conector utilizará de manera predeterminada la configuración de tiempo de espera de transacción predeterminada del servidor.

Al habilitar el tiempo de espera, el valor debe incluir tanto una cantidad como una unidad, que puede ser una de: "ns" (nanosegundos), "us" (microsegundos), "ms" (milisegundos), "s" (segundos), "m" (minutos) o "h" (horas). Por ejemplo, "5m" y "300s" establecen tiempos de espera de 5 minutos.

También hay tiempos de espera de transacción a nivel de clúster y de nodo que anulan este si son más pequeños. Por ejemplo, si el tiempo de espera a nivel de nodo se establece en un minuto, establecer esta opción en "5m" no tendrá ningún efecto.

ActualizarValoresNulos

Determina si una ACTUALIZACIÓN escribe valores NULL como NULL o los elimina.

Tipo de Datos

bool

Valor por Defecto

true

Observaciones

De forma predeterminada, el conector utilizará valores NULL proporcionados en una instrucción UPDATE y establecerá el campo en Couchbase en NULL.

Si esta opción está deshabilitada, los valores SQL NULL en una ACTUALIZACIÓN harán que el conector marque el campo como FALTA. Esto elimina el campo del objeto que lo contiene, o si el campo está contenido en una matriz (por FlattenArrays) entonces ese elemento se establece en NULL.

Esta opción debe usarse con cuidado, ya que es posible que el conector no detecte que el campo existe si se elimina de suficientes documentos dentro de un depósito.

UseCollectionsForDDL

Si asumir que las instrucciones CREATE TABLE usan colecciones en lugar de tipos. Solo tiene efecto cuando se conecta a Couchbase v7+ y GenerateSchemaFiles está configurado en OnCreate.

Tipo de Datos

bool

Valor por Defecto

false

Observaciones

Normalmente, el conector supondrá que los nombres de tablas compuestas a los que se hace referencia en una declaración CREATE TABLE son tipos. Por compatibilidad, este sigue siendo el valor predeterminado con Couchbase v7+, aunque no se recomiendan sabores allí.

CREATE TABLE [myBucket.myFlavor](
  [Id. del documento] VARCHAR PRIMARY KEY,
  docType VARCHAR,
  sometext VARCHAR,
  somenum INT
)

Habilite esta opción para asumir que las declaraciones CREATE TABLE se refieren a la colección en su lugar. En ese escenario, esta consultar creará el depósito y el alcance si es necesario, antes de crear la colección y establecer un índice principal:

CREATE TABLE [myBucket.myScope.myCollection](
  [Id. del documento] VARCHAR PRIMARY KEY,
  sometext VARCHAR,
  somenum INT
)

Usar Transacciones

Especifica si usar transacciones N1QL al ejecutar consultas.

Valores Posibles

Never, Always, Explicit

Tipo de Datos

string

Valor por Defecto

"Never"

Observaciones

De forma predeterminada, el conector no utiliza transacciones por motivos de compatibilidad con versiones anteriores de Couchbase. Todas las demás opciones requieren una conexión a Couchbase 7 o superior. El servicio N1QL también debe habilitarse mediante CouchbaseService.

Configurando esto en Always significa que todas las consultas utilizarán transacciones. Se puede crear una transacción explícita en la conexión y las consultas utilizarán esa transacción mientras esté activa. Si no hay una transacción explícita, las consultas utilizarán transacciones implícitas en su lugar.

Configurando esto en Explicit habilita el soporte solo para transacciones explícitas. Se pueden crear transacciones explícitas, pero si una no está actualmente activa, las declaraciones no crearán una transacción implícita.

ValidateJSONParameters

Permite que el proveedor valide que los parámetros de cadena sean JSON válidos antes de enviar la consultar a Couchbase.

Tipo de Datos

bool

Valor por Defecto

true

Observaciones

Cuando AllowJSONParameters y Paso de consulta están habilitados, los parámetros de consultar proporcionados al conector se tratarán como documentos JSON sin formato en lugar de valores de cadena arbitrarios. Esta opción controla lo que sucede cuando se proporciona JSON no válido al conector en este modo.

Cuando esta opción está habilitada, el conector verificará que todos los parámetros de cadena se puedan analizar como JSON válido. Si alguno no puede ser, se generará un error y la consultar no se ejecutará.

Cuando esta opción está deshabilitada, no se realiza ninguna verificación y todos los valores de los parámetros de cadena se sustituyen directamente en la consultar. Esto hace que la ejecución de sentencias preparadas sea más rápida, pero menos segura, ya que es posible que se envíen N1QL o SQL++ no válidos a Couchbase.