Servidor Couchbase

Catálogos Couchbase para el DBA de SQL Server

En este post, introducimos los Catálogos de Sistema en Couchbase y recorremos un caso de uso específico comparado con SQL Server.

Si eres como yo, después de 20 años trabajando con SQL Server, tiendes a detectar cosas que te resultan molestas. Usted creará una solución elegante, pero después de cambiar de trabajo y no tener su solución, se encuentra con los mismos problemas una y otra vez. He tenido una experiencia similar con problemas molestos con las vistas del catálogo del sistema en SQL Server. Aquí muestro lo mucho más simple que esto puede ser usando Couchbase.

Vistas del catálogo de sistemas

Los catálogos de sistema son aquellas tablas y vistas internas que muestran metadatos a nivel de sistema sobre los objetos almacenados en la base de datos.

En SQL Server, puede consultar estos datos internos utilizando Transact-SQL (T-SQL) para acceder a las Vistas del Catálogo del Sistema y a los Objetos de Gestión Dinámica (DMO)*. 

Hay otras funciones y características que se pueden llamar, pero la mayoría de los usuarios se quedan con estas dos ya que la sintaxis es más fácil y hay mucho material de referencia disponible.

El alcance de SQL Server System Catalog Views siempre me molestó porque Microsoft lo estableció por base de datos en algunos casos, como veremos a continuación. Algunos piensan que este es un buen enfoque, pero esto puede hacer que sea más difícil comparar los resultados a través de varias bases de datos asociadas porque el alcance se limita a una base de datos a la vez.

* (Si estás acostumbrado a llamarlas Dynamic Management Views (DMVs), recuerda que también hay DMFs para Funciones. DMOs es el término genérico a utilizar).

Terminología de Couchbase vs. SQL Server

Antes de seguir adelante, vamos a comparar la terminología clave de algunos conceptos básicos de bases de datos entre SQL Server y Couchbase. Como Couchbase es una base de datos NoSQL con un lenguaje de consulta SQL para JSON, hay algunas coincidencias con SQL Server pero también algunas variaciones. Esta tabla describe los principales términos en ambos sistemas.

Servidor SQL Couchbase Notas
Grupo Grupo Un Cluster en SQL Server es para Alta Disponibilidad donde cada instancia solo está activa en un nodo. Couchbase se beneficia de una arquitectura distribuida; cada nodo puede contener datos activos si así se configura.
Instancia Clúster / Nodo La instalación del motor SQL Server se clasifica como una instancia. Más de una instancia puede residir en la misma máquina. Couchbase aplica la idea de nodos separados, donde cada nodo puede contener múltiples tipos de servicios. Los DBA también pueden distribuir los servicios entre varios nodos. Llamamos a este escalado multidimensional una característica central y poderosa de Couchbase.

Una Instancia de SQL Server puede compararse con un Cluster de Couchbase que potencialmente contiene múltiples nodos.

Base de datos Cubo
Esquema Alcance
Cuadro Colección
Registro/Fila Documento

Análisis de índices mediante catálogos de sistemas

Para nuestro caso de uso específico, queremos sacar una lista de índices de todas las bases de datos para comparar y comprobar si falta algún índice. Si usted es un proveedor de empresa a empresa y aloja muchos clientes en la misma instancia, esta es una pregunta común. A menudo, cada cliente tendrá una base de datos independiente y aplicará el mismo esquema y conjunto de índices.

El siguiente pseudocódigo esboza una solución. La idea no es resolver el problema por ti, sino demostrar cuánto más esfuerzo necesita SQL Server para obtener resultados similares. Como los catálogos de Couchbase tienen alcance a nivel de cluster, te permite comparar múltiples buckets en un cluster fácilmente.

Aquí no estamos utilizando la función incorporada de SQL Server para recorrer las bases de datos, ya que solía ser un poco buggy. Aaron Bertrand escribió una versión mucho mejor que se puede encontrar en MSSQLTips.

Pseudocódigo para SQL Server:

  1. Crear una tabla temporal para guardar los datos
  2. Iniciar bucle/cursor en función del número de bases de datos de usuarios
  3. Crear cadena dinámica para entrar en el ámbito de esa base de datos, Seleccionar datos del catálogo de índices o DMO junto con el Nombre de la BD, e Insertar datos en la tabla.
  4. Ejecutar cadena dinámica
  5. Siguiente base de datos
  6. A continuación, su consulta (ejemplo irónico a continuación):

Consulta N1QL para Couchbase:

En cambio, hacer lo mismo en Couchbase es sencillo porque el catálogo está a nivel de clúster en lugar de a nivel de base de datos. Aquí sólo necesitamos ejecutar una única consulta. En este escenario, estamos usando Couchbase 7 y no se están usando ámbitos por defecto. (Un ámbito en Couchbase sería análogo a un esquema en SQL Server). 

La consulta utiliza el catálogo del sistema para acceder a los índices activos:

Al ver la consulta, notarás inmediatamente su similitud con TSQL. Couchbase ha invertido mucho esfuerzo en crear N1QL, nuestro lenguaje SQL-for-JSON, así que cualquiera que esté familiarizado con SQL podrá aprender N1QL casi al instante. 

He creado tres buckets con un scope y una colección para probar lo anterior. Inserté algunos datos y creé algunos índices. Para hacer la vida más fácil, sólo puse un número codificado en la cláusula WHERE, pero podría haber hecho referencia a otros catálogos para sumar el número de cubos, ámbitos o colecciones que desee comparar.

Por supuesto, los índices no son los únicos objetos que podemos comprobar. También podríamos hacer lo mismo con ámbitos (esquemas) y colecciones (tablas) sin crear bucles como harías con SQL Server porque los catálogos del sistema de Couchbase tienen acceso a todos los objetos del clúster.

Próximos pasos

Como puedes ver, el acceso simplificado a los objetos de la base de datos a través de Couchbase puede ser muy conveniente. Acceder a los metadatos de la base de datos es importante para cualquier DBA y se puede hacer fácilmente con un código mínimo. Espero que pruebes esto y veas lo rápido que puedes ponerte en marcha en Couchbase con este enfoque.

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

Autor

Publicado por Richard Douglas - Ingeniero de soluciones

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.