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
aBasic
- Selecciona el
Server
opción al dominio que aparece en la consola de Couchbase Cloud. - Habilitar el
UseSSL
opción. - Selecciona el
ConnectionMode
aCloud
- 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 como1.1.1.1
o8.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 elBasic
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 elSSLCertificate
opción.SSLClientCertType
: Requerido. El tipo de certificado de cliente establecido dentro deSSLClientCert
.SSLClientCert
: Requerido. El certificado de cliente en el formato dado porSSLClientCertType
. 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 elCredentialsFile
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 < 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 enDataverseSeparator
. Es importante recordar que estos nombres compuestos deben estar entrecomillados cuando se usan en consultas, por ejemploSELECT * 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 elcustomers
colección bajo elaccounts
alcance de lacrm
balde. Estos deben citarse de la misma manera que otros nombres compuestos cuando se usan en consultas, por ejemploSELECT * 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:
- sys_catalogs: enumera las bases de datos disponibles.
- sys_schemas: enumera los esquemas disponibles.
- sys_tablas: enumera las tablas y vistas disponibles.
- sys_tablecolumns: Describe las columnas de las tablas y vistas disponibles.
- procedimientos_sys: describe los procedimientos almacenados disponibles.
- parámetros_procedimiento_sys: Describe procedimiento almacenado* parámetros.
- sys_keycolumns: describe las claves principal y externa.
- índices_sys: Describe los índices disponibles.
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.
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. |
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. |
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. |
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
yDocument.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.