.NET

Mejoras de N1QL en Couchbase Server 5.0

Las mejoras de N1QL han llegado a Couchbase. N1QL es una de las características estrella de Couchbase Server. El lanzamiento de Servidor Couchbase 5.0 refuerza aún más N1QL con una serie de mejoras.

Muchas de estas mejoras se han tratado en anteriores entradas del blog (como Post de Nic Raboy sobre la mejora del rendimiento). Este post no cubrirá todas las mejoras de N1QL. Echa un vistazo a Novedades en Couchbase para conocer todos los detalles.

Notas importantes: Para seguir adelante, puede instalar Servidor Couchbase 5.0 en su máquina local. También puede explorar algunos de estas mejoras de N1QL sin ni siquiera instalar Couchbase Server. Tutorial en línea de 10 minutos. Además, este blog se ha escrito con una versión candidata de Couchbase Server que puede diferir ligeramente de la versión actual.

Mejoras de N1QL para RBAC

Una de las mayores novedades de Couchbase Server 5.0 es el Control de Acceso Basado en Roles (RBAC). Para conocer la historia completa, puedes consultar entradas anteriores sobre RBAC.

Pero, desde el punto de vista de las mejoras de N1QL, hay dos palabras clave que debes conocer: SUBVENCIÓN y REVOCAR.

La documentación lo cubre bien, pero he aquí un ejemplo rápido. Crearé un usuario "myuser", y le daré un solo rol: Lector de datos en el cubo "muestra-viaje".

Create a user with N1QL enhancements

Podría editar ese usuario en la interfaz de usuario para darle Data Writer.

CONCEDER y REVOCAR

Pero he aquí cómo hacerlo con un SUBVENCIÓN Comando N1QL:

Después, puedes navegar a la sección "Seguridad" de la Consola de Couchbase para ver que "myuser" tiene el nuevo permiso.

GRANT a role to a user as a N1QL enhancement

Puede encontrar todos los nombres de funciones (como "data_writer") en el archivo 5.0 documentación.

REVOCAR funciona de la misma manera, pero a la inversa.

sistema espacios de claves para RBAC

Hay un par de nuevos espacios clave del sistema que forman parte de las mejoras de N1QL 5.0. SELECT * FROM system:user_info devolverá información sobre cada usuario y sus funciones.

User info keyspace

Puede utilizar SELECT * FROM sistema:funciones_aplicables keyspace para obtener una lista de toda la información sobre roles.

Tenga en cuenta que sólo los administradores y los usuarios con la función "Consultar el catálogo del sistema" tienen acceso a estos espacios de claves.

rizo

En Isha escribió antes en su blogAhora puedes usar una función CURL de N1QL para consultar datos JSON externos. Definitivamente hay implicaciones de seguridad cuando se utiliza CURL, así que asegúrese de leer la completa Documentación N1QL CURL antes de decidirse a utilizar esta mejora de N1QL.

Antes de poder utilizar CURL, tengo que añadir una URL a una lista blanca. En Windows, esto se hace creando un archivo en la carpeta /var/lib/couchbase/n1qlcerts (yo también tuve que crear la carpeta n1qlcerts) llamado curl_whitelist.json. La ruta completa por defecto para su referencia es: C:Archivos de Programa\Couchbase\Server\var\lib\couchbase\n1qlcerts\curl_whitelist.json.

He creado un archivo con una única entrada URL (swapi.co es la API de Star Wars):

A continuación, puede utilizar la función CURL con una consulta N1QL para recuperar datos JSON. Se puede recuperar un solo planeta, por ejemplo, con https://swapi.co/api/planets/3/o puedes recuperar todos los planetas (que es lo que yo hice):

Ese punto final devuelve 10 planetas a la vez. Lo reduzco sólo al resultados y al nombre, el clima y los residentes.

CURL result in N1QL

Ten en cuenta que CURL a una consulta también introduce otros problemas: estás cediendo rendimiento y fiabilidad a la fuente de datos externa. También ten en cuenta que puedes usar CURL en la propia API REST de Couchbase Server, lo que abre un montón de posibilidades interesantes.

Índices

Como siempre, una buena indexación es vital para obtener un rendimiento óptimo de tus consultas N1QL. Hay un montón de opciones de indexación en Couchbase Server, que no voy a cubrir en esta entrada del blog. Definitivamente consulte esta entrada del blog de Prasad Varakur y también ver algunos de los optimizaciones que se han añadido a Couchbase en la versión 5.0.

En esta entrada sólo voy a hablar de la nueva índices adaptativos y índices equivalentes.

Índices adaptativos

En versiones anteriores de Couchbase, si querías indexar combinaciones de campos, tenías que crear un índice para cada combinación. Por ejemplo, si planeo escribir consultas que comprueben el campo "tipo" y "nombre" juntos o el campo "tipo" y "edad" juntos, eso requeriría dos índices compuestos: uno para tipo,nombre y uno para tipo,estado.

Considere esta consulta:

Por defecto viaje-muestra cubo, el tipo pero no el estado. Esta consulta funciona, pero observe lo plano que es el plan de consulta:

Query without adaptive index

Observe también que los pasos "buscar" y "filtrar" tienen que procesar casi 4.500 documentos.

Los índices adaptativos facilitan la escritura de índices que soportan mejor las consultas ad hoc. Pueden utilizarse para indexar campos específicos o todos los campos de un documento.

Una nueva palabra clave introducida por esta ronda de mejoras de N1QL es SELF. Puede crear un índice adaptativo en todos los campos de todos los documentos "de referencia" del bucket de la muestra de viajes de la siguiente manera:

También puede especificar campos individuales que desee indexar en lugar de SELF.

Después de crear este índice, ejecute el comando SELECCIONE pregunta de nuevo.

Query with adaptive index

Fíjese en el escaneo de índices adicional que se produce para acomodar el estado que está consultando. Observe también que "filter" y "fetch" trabajan con menos documentos: sólo 1900. Teniendo en cuenta el tamaño relativamente pequeño del cubo "muestra-viaje", se trata de un ahorro global pequeño. Con un real cubo que contiene millones de documentos, el ahorro de tiempo puede ser considerable.

Además, a medida que sus consultas se hacen más complejas, índices adaptativos le ahorrará trabajo a la vez que mejora su rendimiento.

Réplicas de índices

Si usted está haciendo un uso intensivo de N1QL en su aplicación, es posible que desee crear múltiples índices que se distribuyen a través de su clúster. Estas mejoras de N1QL pueden mejorar el rendimiento, el equilibrio de carga y la disponibilidad.

Hasta Couchbase Server 5, la forma de hacer esto era crear múltiples índices idénticos con diferentes nombres. Como Venkat cubrió en este entrada anterior sobre réplicas de índicesPero eso tiene sus inconvenientes.

Así, en Couchbase Server 5, se han introducido réplicas de índices. Al crear un índice, simplemente usa un num_replica para especificar cuántos índices de réplica desea crear.

Aquí tiene un índice sobre el estado que utilicé anteriormente en el cubo "muestra-viaje". En este caso, voy a replicarlo dos veces.

Tenga en cuenta que para que esto funcione, necesitará al menos tres nodos que ejecuten el servicio de índices (1 para el índice, 2 para las réplicas).

Después de ejecutar la consulta anterior (en un clúster de 3 nodos), haga clic en "Índices". Debería ver que "ix_state" aparece 3 veces en tres nodos. Dos de ellos están marcados como "réplica".

Index replicas

También puede especificar los nodos exactos en los que desea las réplicas especificando direcciones IP en CREAR ÍNDICE.

Couchbase se encargará del resto por ti. Las réplicas de índices se utilizarán para las consultas entrantes.

Si no eres nuevo en Couchbase, echa un vistazo a esto guía sobre la transición de "índices equivalentes" a réplicas de índices.

Supervisión

La tarea más difícil al escribir consultas N1QL es asegurarse de que son eficientes y performantes. Para ello, Couchbase Server 5.0 ha introducido una serie de características que te ayudarán a monitorizar y perfilar tus consultas.

En marzo escribí sobre el nuevo visualización del plan de consulta. También escribí sobre el nuevos espacios clave del sistema para supervisar las consultas.

Puede consultar la historia completa en Supervisión de las consultas N1QL página de documentación.

Para este post, sólo quiero hacer un rápido repaso. Si haces clic en el botón "Plan" del Query Workbench, verás una representación gráfica del plan de consulta. Puedes obtener una guía visual de las partes de la consulta que requieren más tiempo. Por ejemplo, el plan de consulta para la consulta anterior SELECCIONE consulta:

Visual N1QL query plan

También hay un par de mejoras más en N1QL que te recordamos. Dos nuevos espacios de claves del sistema: sistema:solicitudes_realizadas y sistema:solicitudes_activas. Estos espacios de claves contienen información sobre las consultas que se han ejecutado o se están ejecutando actualmente: cuánto tiempo tardan, errores, en qué nodos se ejecutan, etc. Un ejemplo rápido:

Como tengo réplicas de índices, esta consulta podría haberse ejecutado en distintos nodos. Los resultados muestran que sí:

No deje de consultar los demás actualizaciones de herramientas en Couchbase Server 5.0. No solo N1QL está recibiendo mejoras.

Resumen

N1QL es uno de los principales puntos fuertes de Couchbase Server, y Couchbase se compromete a crear valiosas mejoras de N1QL.

Si aún no ha utilizado N1QL, ¿por qué no prueba la aplicación Tutorial en línea de 10 minutos ¿Hoy?

¿Tiene preguntas o comentarios? Encuéntrame en Twitter @mgroves o envíeme un correo electrónico matthew.groves@couchbase.com.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Matthew Groves

Matthew D. Groves es un apasionado de la programación. No importa si se trata de C#, jQuery o PHP: envía solicitudes de incorporación de cambios para cualquier cosa. Se dedica profesionalmente a la programación desde que escribió una aplicación QuickBASIC para el punto de venta de la pizzería de sus padres en los años 90. Actualmente trabaja como gerente sénior de marketing de productos para Couchbase. Dedica su tiempo libre a su familia, a ver los partidos de los Reds y a participar en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.