Introducción a los conjuntos de datos externos
Couchbase se complace en anunciar sus nuevos "Conjuntos de datos externos". Servicios analíticos en el último Lanzamiento de Couchbase Server 6.6. Los conjuntos de datos externos permiten a los clientes acceder a datos almacenados externamente en tiempo real desde Amazon Web Services (AWS) Simple Storage Service (S3) y combinar datos residentes en S3 con datos existentes de Couchbase para su análisis.
Caso práctico del cliente
Algunos clientes utilizan AWS S3 para reducir los costos de almacenamiento y almacenar datos (p. ej., varios años de datos históricos, datos empresariales sin conexión para aprendizaje automático, revisiones de productos, etc.). Han expresado su deseo de combinar, consultar y utilizar los datos de S3 en tiempo real para poner estos datos a disposición de los usuarios empresariales para el análisis. Más información sobre otros casos de uso de Analytics aquí.
¿Cómo funcionan los conjuntos de datos externos?
Los conjuntos de datos externos ofrecen la posibilidad de consultar y analizar dinámicamente datos que residen en AWS S3, lo que permite a los usuarios combinar fácilmente datos en tiempo real desde dentro y fuera de sus nodos de análisis de Couchbase. Esto se consigue en tres sencillos pasos:
- Configure un enlace S3 mediante Llamada a la API REST o el interfaz de línea de comandos (CLI)
- Crear un conjunto de datos externo en el enlace S3
- Consultar el conjunto de datos mediante SQL (o su herramienta BI favorita)
Veamos un ejemplo sencillo. iMaz, una empresa de comercio electrónico, vende productos de consumo online. Sus datos de pedidos, productos y usuarios se almacenan en un clúster de Couchbase con servicios de datos y análisis (en conjuntos separados de nodos del clúster). Utilizan el servicio Analytics para ejecutar consultas ad hoc y complejas para analizar su negocio. iMaz también almacena las reseñas de sus productos en AWS S3, y les gustaría combinar y analizar los 3 productos más valorados utilizando el servicio Couchbase Analytics.
Muestra de datos del producto:
1 2 3 4 5 6 7 8 9 10 11 |
[ { "id": "Producto_1", "docType": "Producto, "productId": 1, "precio": 811.76, "precio de venta": 70.14, "nombredelproducto": "Bola de algodón ergonómica", "desc": "Bola de Algodón Ergonómica Metálica Fundida de Plástico", } ] |
Muestra de datos de revisión:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "id": "Review_0001764a17a844279a2227e137cc4e36", "docType": "Revisión", "reviewId": "0001764a17a844279a2227e137cc4e36", "productId": 1, "userId": 5862, "reviewerName": "M. Schaefer", "reviewerEmail": "...@mmail.com", "rating": 5, "título: "Funciona bien y cumple las expectativas"., "revisión": "El producto funciona de maravilla y compraré uno más para mi extensa familia"., "reviewDate": 1597273484 } |
Sigamos los tres pasos anteriores con un ejemplo de código de configuración junto con una consulta SQL++.
Paso 1: Configurar el enlace S3
Crearemos un enlace S3 utilizando un archivo Llamada a la API REST. (Como alternativa, puede utilizar la función CLI para crear enlaces S3.). Tendremos que proporcionar:
- Nombre de host del servicio de análisis
- Credenciales de usuario de Analytics
- Nombre del enlace S3 (en este caso myS3Link)
- Nombre del dataverse (si es diferente del predeterminado)
- Tipo de enlace (S3)
- ID de la clave de acceso requerida de AWS S3
- Clave de acceso secreta requerida de AWS S3
- Región requerida de AWS S3 (por ejemplo, us-west-2)
1 2 3 4 5 6 7 8 |
rizo -u <nombre de usuario>:<pwd> -X POST "http:///analytics/link" -d universo de datos=Por defecto -d nombre=myS3Link -d tipo=S3 -d accessKeyId=... -d secretAccessKey=... -d región=us-oeste-2 |
Paso 2: Crear un conjunto de datos externo
Utilizando el banco de trabajo Analytics, crearemos ahora un conjunto de datos externo denominado "S3productreviews". Tendremos que especificar:
- Nombre del bucket S3
- Nombre del dataverse (si es diferente del predeterminado) y nombre del bucket S3 (en este caso cb-analytics-6.6-demo)
- Ubicación del directorio (opcionalmente) dentro del bucket desde el que se leerán y recopilarán recursivamente los archivos (en este caso, las reseñas de productos se almacenan en una carpeta "reseñas").
- Formato de archivo (en este caso utilizaremos JSON) con la posibilidad de especificar un patrón de búsqueda (en este caso *.json indica que se incluirán todos los archivos JSON al consultar los datos).
1 2 3 4 5 |
CREAR EXTERNO DATASET S3revisiones de productos EN cb-análisis-6.6-demo EN myS3Link USO DE "reseñas" CON { "formato": "json", "incluir": "*.json" } ; |
En la actualidad, la función de conjuntos de datos externos admite las funciones json, csv (valores separados por comas), y tsv (valores separados por tabuladores) incluidos los archivos comprimidos con gzip (los nombres de archivo terminan en .gz o .gzip). Los formatos csv y tsv requieren que se especifique una definición de tipo en línea (más información al respecto en breve). En futuras versiones se admitirán otros formatos de archivo. Puede obtener más información al respecto aquí.
Paso 3: Consulta con SQL
Como último paso, ahora podemos ejecutar la consulta SQL++ que se indica a continuación (que tiene exactamente el mismo aspecto que SQL :)). Une el conjunto de datos de productos existentes de Couchbase Analytics Service y los datos de reseñas de productos de AWS S3 para obtener los 3 productos mejor valorados.
1 2 3 4 5 6 7 8 |
SELECCIONE p.nombreDelProducto, AVG(s.valoración) AS 'Clasificación' DESDE S3revisiones de productos s, productos p DONDE s.productId = p.productId GRUPO POR. p.nombreDelProducto PEDIR POR AVG(s.valoración) DESC LÍMITE 3; |
Aquí están los resultados de la consulta json:
1 2 3 4 5 |
[ { "Clasificación": 4.33, "nombredelproducto": "Licencia Atún de Goma"}, { "Clasificación": 4.29, "nombredelproducto": "Preciosa ensalada de plástico"}, { "Clasificación": 3.86, "nombredelproducto": "Bicicleta inteligente de algodón"} ] |
Esto es genial: ahora podemos combinar y analizar datos externos ubicados en AWS S3 desde Couchbase Analytics Service. Fíjate en los pocos pasos que hemos necesitado para poder analizar nuestros datos; no ha sido necesario ningún ETL, ¡y los datos han estado disponibles inmediatamente!
Ahora te estarás preguntando: ¿Cómo habría funcionado esto si el formato del archivo de revisiones de S3 hubiera sido de tipo csv en lugar de JSON? La respuesta es sencilla; simplemente habría construido su conjunto de datos externo en consecuencia. A continuación, mostramos el aspecto que tendría la sentencia create external dataset anterior si fuera compatible con csv:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
CREAR EXTERNO DATASET S3revisiones de productos ( id CADENA NO DESCONOCIDO, docType CADENA NO DESCONOCIDO, reviewId CADENA NO DESCONOCIDO, productId BIGINT, userId BIGINT, revisorNombre CADENA NO DESCONOCIDO, revisorCorreo electrónico CADENA NO DESCONOCIDO, valoración BIGINT, título CADENA NO DESCONOCIDO, revise CADENA NO DESCONOCIDO, reviewDate BIGINT ) EN `cb-análisis-6.6-demo` EN myS3link USO DE "revisiones" CON { "formato": "csv", "incluir": "*.csv", "cabecera": falso }; |
Observe cómo la sentencia create incluye ahora información de tipo en línea. Esto es necesario para indicar a Analytics cómo interpretar los datos csv (por ejemplo, no sólo como cadenas).
La consulta SQL++ sigue siendo exactamente la misma. Así es, ¡sin ningún cambio! Los conjuntos de datos externos son fáciles de configurar, flexibles y sencillos de utilizar gracias a la potencia del lenguaje SQL++. Los usuarios pueden desarrollar consultas ad hoc complejas para explorar más a fondo los datos, responder a nuevas preguntas de negocio y combinar datos externos con datos de Enlaces remotos para traer también otras fuentes de datos Couchbase.
Beneficios
Estas son las principales ventajas de utilizar conjuntos de datos externos:
- Enriquecimiento de datos. Los datos de Couchbase ahora se pueden enriquecer con información adicional obtenida de archivos que residen en el lago de datos existente basado en S3 de una empresa.
- Acceso dinámico a los datos. Los datos más recientes se pueden recuperar, transmitir, combinar y analizar dinámicamente desde cualquier bucket de S3 en cualquier región de AWS durante la ejecución de consultas de Analytics.
- Procesamiento paralelo de consultas. Los usuarios pueden configurar y organizar el acceso a los datos de S3 mediante la arquitectura de procesamiento de consultas en paralelo masivo (MPP) de Analytics para responder con rapidez a las consultas con datos externos.
Resumen
Los conjuntos de datos externos desbloquean el valor de los datos externos en vivo y archivados que residen en los lagos de datos basados en S3. Los usuarios pueden combinar y analizar datos en tiempo real, procedentes tanto de AWS S3 como de Couchbase Analytics Service. Esto permite un análisis de datos más rápido y exhaustivo y una toma de decisiones ágil.
Recursos
Más información sobre las declaraciones de los conjuntos de datos externos aquí. Regístrese en aquí para nuestro próximo seminario web "Novedades de la versión 6.6 de Couchbase Server".
Explorar los recursos de Couchbase Server 6.6
Gracias a Till Westmann como coautor y a Michael Carey por sus valiosas aportaciones y la revisión de este post.

Coautor
Till Westmann, Director de Ingeniería de Couchbase
Till Westmann es Director de Ingeniería en Couchbase y trabaja en el Servicio de Análisis. Antes de unirse a Couchbase, Till desarrolló software de gestión de datos en Oracle, 28msec, SAP, BEA Systems, XQRL y Xyleme. Es miembro de la Apache Software Foundation y Vicepresidente del proyecto Apache AsterixDB. Till es doctor por la Universidad de Mannheim (Alemania).
¡Esta es una característica revolucionaria ! ¡Me encanta!