En el mundo de Big Data, donde tenemos gogolbytes de información disponible sobre todos los aspectos de nuestras aplicaciones y los usuarios que están interactuando con ellos, ser capaz de analizar todos estos datos y proporcionar inteligencia perspicaz es primordial. En Couchbase, estamos trabajando para construir plataformas de gestión de datos que permitan aprovechar estos datos. Con el tiempo, esto será accesible desde una variedad de plataformas de análisis estándar de la industria como Tableau, QlikView y Microstrategy, así como plataformas de análisis NoSQL de próxima generación como Nube9 y SlamDataSin embargo, también es importante que los desarrolladores dispongan de API para acceder a los sistemas que almacenan y analizan estos datos. Con este nivel de acceso directo, estos desarrolladores disponen de la flexibilidad necesaria para crear desde sencillos cuadros de mando hasta completos informes personalizados para sus usuarios.
A partir de la versión 2.2.4 de nuestro SDK de Node.js, ahora tenemos soporte experimental para realizar consultas de Couchbase Analytics contra un cluster. La API es muy similar a las APIs existentes disponibles para realizar consultas N1QL en el SDK de Node.js.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// Conéctate al cluster local y habilita el soporte experimental de Couchbase Analytics. var grupo = nuevo couchbase.Grupo(couchbase://localhost); grupo.enableCbas([localhost:8095]); // Realizar una consulta simple, seleccionando todos los usuarios con un email específico. var qs = 'SELECT * FROM usuarios WHERE email="tom@example.com"'; var q = couchbase.CbasQuery.fromString(qs); grupo.consulta(q, función(err, res) { si (err) { tirar err; } consola.registro(res); }); |
Como podrás notar, la diferencia entre nuestras APIs N1QL y las APIs de Couchbase Analytics es que con Couchbase Analytics debes realizar tus consultas a nivel de cluster y usar CbasQuery para instanciar tu objeto de consulta.
Con estas nuevas API, también hemos creado una nueva aplicación de demostración de cuadros de mando que reúne algunas bibliotecas muy conocidas en el mundo de Node.js para mostrar cómo se pueden convertir estas nuevas API en una interfaz útil que muestre métricas específicas de la empresa que sean útiles para usted y sus colegas.
Funcionamiento del cuadro de mandos
El panel de control que hemos creado consta de dos componentes separados. En primer lugar, un componente del lado del servidor que ejecuta el SDK de Node.js y proporciona una interfaz restful. En segundo lugar, un componente del lado del cliente que es una simple página HTML5. El componente del lado del servidor servirá al componente del lado del cliente desde la raíz de su servicio web para facilitar las cosas.
El lado cliente de la aplicación es una simple página HTML y Javascript que contiene un pequeño formulario que te permite especificar algunos parámetros, una gran sección de texto que muestra todas las consultas que se han ejecutado contra tu cluster de Couchbase Analytics, así como 3 gráficos que se utilizan para presentar los datos de tus consultas. Cuando se carga la página, o cuando se hace clic en el botón de actualización, enviamos peticiones a la aplicación del lado del servidor solicitando diversas piezas de información sobre los datos de nuestra muestra de viajes. Cuando recibimos una respuesta del servidor, pasamos esta información a Chart.js, que genera nuestros gráficos.
El código es bastante sencillo.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
$.consiga(¿"/pricestats? + formData) .hecho(función(datos) { añadirNarración(datos.narración); var información = datos.datos; config1.datos.etiquetas = []; config1.datos.conjuntos de datos[0].datos = []; para (var i = 0; i < información.longitud; ++i) { config1.datos.etiquetas.pulse(información[i].grpdate); config1.datos.conjuntos de datos[0].datos.pulse(información[i].métrico); } miGráfico1.actualización(); }).falla(función(err) { addNarrationText(err.toString()); }); |
Simplemente utiliza Express para iniciar un servidor web que responde a cualquier solicitud raíz con la página del lado del cliente para esta aplicación. Además, registra un par de puntos finales REST que la aplicación utiliza para actualizar sus gráficos. Cada uno de estos REST endpoints realiza una consulta SQL++ contra el cluster de Couchbase Analytics y devuelve los resultados de esa consulta al cliente de la aplicación para ser graficados.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
var qs = "SELECCIONAR + ' parse_date(SUBSTR(e.date, 0, 10), "Y-M-D") AS grpdate, ' + 'SUM(e.price) AS metric ' + FROM usuarios u ' + ' UNNEST u.flights e ' + WHERE parse_date(SUBSTR(e.date, 0, 10), "Y-M-D") >= parse_date("2016-10-01", "Y-M-D") ' + AND parse_date(SUBSTR(e.date, 0, 10), "A-M-D") < parse_date("2016-11-01", "A-M-D") ' + GROUP BY grpdate ' + ORDER BY grpdate;'; var q = couchbase.CbasQuery.fromString(qs); grupo.consulta(q, función(err, qres) { si (err) { res.estado(400).enviar(err); devolver; } res.enviar({ datos: qres, narración: [ [sql, qs] ] }); }); |
Además del servicio RESTful proporcionado por la aplicación del lado del servidor, hemos incluido la creación automática de los buckets sombra de Couchbase Analytics necesarios para la muestra de viajes y la inserción de 1000 entradas de datos de compra de vuelos generados aleatoriamente para ofrecernos algo interesante que ver.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
var qs = CREATE BUCKET tsBucket WITH {"nombre": "muestra-viaje", "nodos": "127.0.0.1"};' + CREATE SHADOW DATASET airlines ON tsBucket WHERE `type` = "airline";' + CREATE SHADOW DATASET airports ON tsBucket WHERE `type` = "airport";' + CREATE SHADOW DATASET hotels ON tsBucket WHERE `type` = "hotel";' + CREATE SHADOW DATASET landmarks ON tsBucket WHERE `type` = "landmark";' + CREATE SHADOW DATASET routes ON tsBucket WHERE `type` = "route";' + CREATE SHADOW DATASET users ON tsBucket WHERE `type` = "user";' + CONNECT BUCKET tsBucket WITH {"contraseña":""};'; var q = couchbase.CbasQuery.fromString(qs); grupo.consulta(q, función(err, res) { // Ignoramos los errores aquí ya que normalmente son sólo // 'dataset already exists'. devolución de llamada(null); }); |
Obtener el panel de control de ejemplo
Empezar a utilizar nuestra nueva demostración es tan sencillo como visitar nuestro repositorio de GitHub, que se encuentra en: https://github.com/couchbaselabs/node-cbasdashdemo y siguiendo la guía de inicio disponible en el README incluido.
Obtención de la versión de Node.js
Como con todas nuestras versiones de Node.js, hemos publicado esta versión en NPM y puede instalarse con una simple invocación a npm:
1 |
npm instale Couchbase@2.2.4 |
También enviamos binarios precompilados como parte de nuestro proceso de publicación npm, lo que te permite empezar a usar el SDK de Node.js sin más complicaciones (ten en cuenta que Node.js v7.0.0 no tiene actualmente disponibles binarios precompilados del módulo Couchbase y requiere un compilador que funcione para instalarlo).