Nota: Este artículo utiliza el Lenguaje de Definición de Datos de Couchbase Analytics a partir de la versión 5.5. Para actualizaciones e información sobre cambios de última hora en versiones más recientes, consulta Cambios en el servicio Couchbase Analytics.
Couchbase Analytics Service, a veces conocido como CBAS, es una gran cosa para Couchbase y tus necesidades de datos NoSQL porque te permite crear y ejecutar consultas potencialmente complejas contra cantidades masivas de datos de manera eficiente utilizando un dialecto SQL familiar.
Vamos a ver cómo utilizar este servicio de análisis, nuevo a partir de Couchbase 5.5con el SDK de Node.js para Couchbase.
Para este ejemplo, vamos a trabajar con el archivo viaje-muestra Bucket de ejemplo que se puede instalar opcionalmente con Couchbase Server. No se considera un gran conjunto de datos, pero funcionará con este ejemplo.
Configuración de un conjunto de datos de Couchbase Analytics
Dentro del Analítica del Panel Administrativo de Couchbase, ejecute la siguiente consulta:
|
1 |
CREATE BUCKET travel WITH { "name":"travel-sample" }; |
La consulta anterior creará un viaje Cubo de análisis basado en Couchbase viaje-muestra Cubo.
Con el bucket creado, podemos crear un conjunto de datos sombra con el que trabajar. Ejecute las siguientes consultas:
|
1 2 |
CREATE SHADOW DATASET airlines ON travel WHERE `type` = "airline"; CREATE SHADOW DATASET airports ON travel WHERE `type` = "airport"; |
Las consultas anteriores crearán dos conjuntos de datos alternativos basados en los datos existentes en la base de datos viaje-muestra cubo. Mientras se crean los conjuntos de datos sombra, es necesario inicializarlos:
|
1 |
CONNECT BUCKET travel; |
Una vez inicializado, el servicio Analytics empezará a hacer su copia de los documentos y a monitorizar activamente los cambios. Podemos probar los datos ejecutando una consulta como la siguiente:
|
1 |
SELECT * FROM airports; |
La consulta anterior encontrará todos los documentos de nuestro conjunto de datos sombra. En otras palabras, obtendremos todos los documentos que tengan una etiqueta tipo propiedad de aerolínea.
Todo esto está muy bien, pero hasta ahora, sólo hemos utilizado el Dashboard Administrativo de Couchbase. Queremos ser capaces de ejecutar consultas contra nuestro conjunto de datos de Analytics desde Node.js.
Consulta de CBAS desde una aplicación Node.js
Asumiendo que tienes Node.js instalado, crea un nuevo directorio de proyecto y ejecuta el siguiente comando:
|
1 |
npm init -y |
El comando anterior creará un nuevo paquete.json en tu ruta CLI. Para comunicarnos con Couchbase, vamos a necesitar el SDK. Se puede instalar ejecutando lo siguiente desde el CLI:
|
1 |
npm install couchbase --save |
Ahora podemos empezar a desarrollar nuestra aplicación. Cree una app.js en su proyecto con lo siguiente:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
const Couchbase = require("couchbase"); var cluster = new Couchbase.Cluster("couchbase://localhost"); cluster.authenticate("travel", "123456"); cluster.enableCbas(["localhost:8095"]); var statement = "SELECT * FROM airports"; var query = Couchbase.CbasQuery.fromString(statement); cluster.query(query, (error, result) => { if(error) { throw error; } console.log(result); }); |
En el código anterior no ocurren demasiadas cosas, pero vamos a desglosarlo de todos modos.
|
1 2 3 |
var cluster = new Couchbase.Cluster("couchbase://localhost"); cluster.authenticate("travel", "123456"); cluster.enableCbas(["localhost:8095"]); |
Antes de poder empezar a ejecutar consultas, tenemos que conectarnos al clúster y habilitar las interacciones con el servicio Analytics. También debemos autenticarnos en el clúster con un usuario que tenga permiso para utilizar Analytics. En este ejemplo, Analytics está activo en el nodo al que nos estamos conectando.
Observa que no nos estamos conectando a un Bucket. Si quisiéramos usar N1QL, abriríamos un Bucket, pero no estamos usando N1QL aunque se parezca.
|
1 2 3 4 5 6 7 8 9 |
var statement = "SELECT * FROM airports"; var query = Couchbase.CbasQuery.fromString(statement); cluster.query(query, (error, result) => { if(error) { throw error; } console.log(result); }); |
Utilizando una simple consulta Analytics, podemos parsearla y ejecutarla. Los resultados de la consulta serán devueltos e impresos en los registros.
No está mal, ¿verdad?
Dado que Analytics utiliza SQL++, puede complicar mucho más sus consultas utilizando otros operadores como DONDEsubconsultas y operaciones sobre colecciones.
Conclusión
Acabas de ver cómo crear una simple aplicación Node.js que utiliza el Servicio de Análisis Couchbase (CBAS) en lugar de N1QL. Analytics y SQL++ no es un sustituto de N1QL, sino un complemento para conjuntos de datos mucho más grandes o complicados, mientras que N1QL brilla en conjuntos de datos más pequeños.
Para obtener más información sobre Analytics o el SDK para Node.js de Couchbase, visite la página Portal para desarrolladores de Couchbase. Conozca otras novedades disponibles en el Lanzamiento de Couchbase Server 5.5.