{"id":12989,"date":"2022-03-31T09:00:33","date_gmt":"2022-03-31T16:00:33","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=12989"},"modified":"2025-06-13T20:40:56","modified_gmt":"2025-06-14T03:40:56","slug":"optimize-performance-of-external-analytics-collections-in-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/optimize-performance-of-external-analytics-collections-in-couchbase\/","title":{"rendered":"Optimizar el rendimiento de las colecciones anal\u00edticas externas en Couchbase"},"content":{"rendered":"<p><span style=\"font-weight: 400\">Es crucial planificar la optimizaci\u00f3n del rendimiento y la utilizaci\u00f3n de recursos ahora que hay soporte para colecciones externas de Couchbase Analytics (<\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/external-datasets-extend-your-reach-with-couchbase-analytics\/?ref=blog\"><span style=\"font-weight: 400\">AWS S3<\/span><\/a><span style=\"font-weight: 400\"> y <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-analytics-now-supports-azure-blob-storage-using-external-analytics-collections\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Almacenamiento Azure Blob<\/span><\/a><span style=\"font-weight: 400\">). Las colecciones externas de Couchbase Analytics leen los datos del almacenamiento externo y no los almacenan localmente, lo que puede ser una operaci\u00f3n costosa si no se optimiza.<\/span><\/p>\n<p><span style=\"font-weight: 400\">En este art\u00edculo se analizan los factores que afectan significativamente al rendimiento y a la utilizaci\u00f3n de los recursos cuando se consultan datos de un almacenamiento externo. Tambi\u00e9n veremos un ejemplo detallado para comprobar la eficacia de nuestras optimizaciones.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Tendremos en cuenta los siguientes elementos y discutiremos su impacto en el rendimiento y la utilizaci\u00f3n de los recursos:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Ancho de banda de Internet y distancia del almacenamiento externo<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">N\u00famero de nodos y particiones de Couchbase Analytics y n\u00famero de archivos en almacenamiento externo<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Prefijos y filtros de inclusi\u00f3n\/exclusi\u00f3n<\/span><\/li>\n<\/ul>\n<h4><span style=\"font-weight: 400\">Ancho de banda y distancia de Internet<\/span><\/h4>\n<p><span style=\"font-weight: 400\">Dado que los datos externos no se almacenan en el almacenamiento nativo de Couchbase Analytics, cada petici\u00f3n de consulta transfiere la versi\u00f3n actual de los datos a trav\u00e9s de la red. Esto hace que el ancho de banda de la red sea un factor significativo en el rendimiento de dichas consultas. La latencia de la red es otro factor-la distancia que los datos tienen que viajar impactar\u00e1 en la latencia. Por lo tanto, se recomienda tener el almacenamiento de destino alojado en una regi\u00f3n cercana.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Nota: Algunos proveedores de servicios de almacenamiento no cobran ning\u00fan coste de transmisi\u00f3n si la aplicaci\u00f3n y el almacenamiento host se encuentran en la misma regi\u00f3n, lo que mejora el rendimiento y reduce los costes.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">Particiones frente a n\u00famero de archivos<\/span><\/h4>\n<p><span style=\"font-weight: 400\">Cuando se consulta una colecci\u00f3n externa de Couchbase Analytics, la carga de trabajo de escaneo de datos se distribuir\u00e1 uniformemente entre los nodos y particiones de Analytics disponibles para leer los datos en paralelo. (Esto es similar a c\u00f3mo el almacenamiento interno es <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/utilizing-multiple-disks-to-speed-up-couchbase-analytics-queries\/\"><span style=\"font-weight: 400\">leer en paralelo<\/span><\/a><span style=\"font-weight: 400\">). Para que esta capacidad de lectura paralela se aproveche al m\u00e1ximo, los datos del almacenamiento externo deben almacenarse en <\/span><i><span style=\"font-weight: 400\">varios archivos<\/span><\/i><span style=\"font-weight: 400\"> en lugar de en uno o varios archivos de gran tama\u00f1o.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Por ejemplo, supongamos que tenemos tres nodos Analytics con cuatro particiones por nodo. Esta configuraci\u00f3n da como resultado un grado paralelo de 12 (12 particiones en total). Cuando se consulta una colecci\u00f3n externa de Analytics, deber\u00eda poder leer 12 archivos en paralelo desde el almacenamiento externo.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Si tenemos los datos organizados en varios archivos, la configuraci\u00f3n anterior leer\u00e1 12 archivos a la vez, pero si s\u00f3lo tenemos unos pocos archivos (por ejemplo, cinco archivos grandes), entonces s\u00f3lo cinco particiones tendr\u00e1n trabajo que hacer, dejando el resto de los recursos disponibles de Analytics ociosos.<\/span><\/p>\n<p><span style=\"font-weight: 400\">El objetivo de Analytics es distribuir la carga de trabajo de escaneado uniformemente entre el n\u00famero total de particiones, no entre nodos. En el ejemplo anterior, cada una de las 12 particiones tendr\u00e1 1\/12 de la carga de trabajo total, y cada nodo tendr\u00e1 1\/3 de la carga. Si los nodos tuvieran diferentes n\u00fameros de particiones por alguna raz\u00f3n, la carga de trabajo por partici\u00f3n permanecer\u00eda uniforme, pero los nodos en s\u00ed mismos estar\u00edan cargados de forma no uniforme. Es por eso que se recomienda tener los datos distribuidos en m\u00faltiples archivos para que la carga de trabajo pueda ser distribuida.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Sin embargo, es igual de crucial evitar tener <\/span><i><span style=\"font-weight: 400\">demasiados archivos peque\u00f1os<\/span><\/i><span style=\"font-weight: 400\"> como cientos de miles o millones de archivos, ya que esto podr\u00eda resultar en un rendimiento pobre debido al manejo de metadatos de archivos y demasiadas operaciones de apertura\/cierre de archivos.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">Prefijos y filtros de inclusi\u00f3n\/exclusi\u00f3n<\/span><\/h4>\n<h5><span style=\"font-weight: 400\">Organizaci\u00f3n de datos<\/span><\/h5>\n<p><span style=\"font-weight: 400\">Empecemos por ver la estructura de los datos con los que trabajaremos aqu\u00ed a modo de ilustraci\u00f3n. Trabajaremos con tres a\u00f1os de <\/span><i><span style=\"font-weight: 400\">rese\u00f1as<\/span><\/i><span style=\"font-weight: 400\"> datos. Organizaremos nuestros datos por a\u00f1o, por trimestre y por mes. Los datos corresponden a los a\u00f1os 2018, 2019 y 2020.<\/span><\/p>\n<p><span style=\"font-weight: 400\">A continuaci\u00f3n se muestran ejemplos de la disposici\u00f3n del directorio y de un documento t\u00edpico:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:sh decode:true\">2018\/Q1\/Jan\/jan-1.json\r\n2018\/Q1\/Feb\/feb-1.json\r\n2018\/Q1\/\u2026\r\n2018\/Q2\/April\/apr-1.json\r\n2018\/\u2026\r\n\r\n2019\/Q1\/Jan\/jan-1.json\r\n\r\n2020\/Q1\/Jan\/jan-1.json\r\n2020\/Q4\/Dec\/dec-1.json<\/pre>\n<p><span style=\"font-weight: 400\">Muestra de documento:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">{\r\n\u00a0\u00a0\u00a0\u00a0\"id\": \"Review_0001764a17a844279a2227e137cc4e36\",\r\n\u00a0\u00a0\u00a0\u00a0\"docType\": \"Review\",\r\n\u00a0\u00a0\u00a0\u00a0\"reviewId\": \"0001764a17a844279a2227e137cc4e36\",\r\n\u00a0\u00a0\u00a0\u00a0\"productId\": 1,\r\n\u00a0\u00a0\u00a0\u00a0\"userId\": 5862,\r\n\u00a0\u00a0\u00a0\u00a0\"reviewerName\": \"M. Schaefer\",\r\n\u00a0\u00a0\u00a0\u00a0\"reviewerEmail\": \"...@mmail.com\",\r\n\u00a0\u00a0\u00a0\u00a0\"rating\": 5,\r\n\u00a0\u00a0\u00a0\u00a0\"title\": \"Works well and meets expectations.\",\r\n\u00a0\u00a0\u00a0\u00a0\"review\": \"Product works great and will buy one more for my extended family.\",\r\n\u00a0\u00a0\u00a0\u00a0\"reviewDate\": 1597273484,\r\n\u00a0\u00a0\u00a0\u00a0\"year\": 2019,\r\n\u00a0\u00a0\u00a0\u00a0\"month\": \"Mar\"\u00a0\r\n}<\/pre>\n<p><span style=\"font-weight: 400\">La estructura anterior nos permitir\u00e1 tener una granularidad por meses sobre los datos, que utilizaremos en ejemplos posteriores.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Supongamos que el tama\u00f1o total de nuestros datos para los tres a\u00f1os es de 720 GB. Esto nos da unos 240 GB de datos al a\u00f1o (tres a\u00f1os) y 20 GB al mes (36 meses en tres a\u00f1os).<\/span><\/p>\n<h5><span style=\"font-weight: 400\">\u00bfC\u00f3mo funcionan las Colecciones Exteriores?<\/span><\/h5>\n<p><span style=\"font-weight: 400\">Dado que la organizaci\u00f3n de los datos puede afectar significativamente al rendimiento, vamos a revisar c\u00f3mo Couchbase Analytics lee los datos del almacenamiento externo. <\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">Los datos de las colecciones de an\u00e1lisis externos se almacenan en un almacenamiento externo remoto, como AWS S3, Azure Blob\/Data Lake o Google Cloud Storage. Azure Blob Storage y Google Cloud Storage son <\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/developer-preview\/preview-mode.html\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">actualmente en vista previa para desarrolladores<\/span><\/a><span style=\"font-weight: 400\">.<\/span><span style=\"font-weight: 400\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Cuando se crean un enlace externo y una colecci\u00f3n externa de Analytics, son <\/span><i><span style=\"font-weight: 400\">definiciones<\/span><\/i><span style=\"font-weight: 400\"> de entidades configuradas para leer los datos de la fuente externa, pero los datos no son <\/span><i><span style=\"font-weight: 400\">almacenado<\/span><\/i><span style=\"font-weight: 400\"> en Analytics. Esto permite a Analytics ver siempre las \u00faltimas versiones de los datos externos, pero tambi\u00e9n puede resultar lento. Podemos optimizar el proceso de lectura utilizando <\/span><i><span style=\"font-weight: 400\">prefijos<\/span><\/i><span style=\"font-weight: 400\"> y otros <\/span><i><span style=\"font-weight: 400\">filtros para ahorrar tiempo y recursos<\/span><\/i><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">En el siguiente ejemplo veremos la gran diferencia que puede suponer un filtro si se utiliza con criterio junto con datos bien organizados.<\/span><\/p>\n<h5><span style=\"font-weight: 400\">Requisitos<\/span><\/h5>\n<p><span style=\"font-weight: 400\">Echemos un vistazo a las siguientes peticiones de consulta sencillas para ver la diferencia de rendimiento con y sin filtrado:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Obt\u00e9n el n\u00famero total de opiniones de clientes para 2018, 2019 y 2020.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Obt\u00e9n el n\u00famero total de opiniones de clientes para el a\u00f1o 2019.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Obt\u00e9n el n\u00famero total de opiniones de clientes para enero de 2020.<\/span><\/li>\n<\/ul>\n<h4><span style=\"font-weight: 400\">Soluci\u00f3n no filtrada<\/span><\/h4>\n<p><span style=\"font-weight: 400\">Supongamos que <\/span><span style=\"font-weight: 400\">ya existe un enlace externo<\/span><span style=\"font-weight: 400\"> llamado <em>myLink<\/em>\u00a0(v\u00e9ase <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/external-datasets-extend-your-reach-with-couchbase-analytics\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Conjuntos de datos externos: Acceso a AWS S3 en Couchbase Analytics<\/span><\/a><span style=\"font-weight: 400\"> para ver un ejemplo de c\u00f3mo se crea un enlace). Comenzamos creando una colecci\u00f3n externa de Analytics para todos los datos de revisi\u00f3n sin prefijo y sin filtros de inclusi\u00f3n\/exclusi\u00f3n. La sintaxis es sencilla:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">CREATE ANALYTICS COLLECTION myCollection\r\nON myReviewsDataContainer\r\nAT myLink\r\nWITH {\"format\": \"json\"};<\/pre>\n<p><span style=\"font-weight: 400\">Con esta colecci\u00f3n externa de Analytics creada, vamos a escribir las consultas, que son sencillas y directas, como sigue:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">SELECT COUNT(*) FROM myCollection;\r\nSELECT COUNT(*) FROM myCollection WHERE year = 2019;\r\nSELECT COUNT(*) FROM myCollection WHERE year = 2020 AND month = \"jan\";<\/pre>\n<p><span style=\"font-weight: 400\">Dado nuestro ancho de banda de Internet y la distancia al proveedor de servicios, podr\u00edamos obtener (y de hecho obtuvimos) lo siguiente:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Estas consultas llevaron <\/span><b>435<\/b><span style=\"font-weight: 400\">, <\/span><b>448<\/b><span style=\"font-weight: 400\"> y <\/span><b>430<\/b><span style=\"font-weight: 400\"> segundos para terminar, lo que demuestra que casi rindieron lo mismo.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Cada consulta dio como resultado <\/span><b>720 GB<\/b><span style=\"font-weight: 400\"> de transferencia de datos.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Lo que ocurre es que en cada una de estas consultas se leen todos los registros de datos (es decir, se transfieren todos los datos) y, a continuaci\u00f3n, se aplica el filtrado necesario para obtener el resultado correcto. Sin embargo, los datos ya se han transferido en el momento en que se filtran. Este es el principal factor determinante del rendimiento en el ejemplo anterior.<\/span><\/p>\n<p><span style=\"font-weight: 400\">En ausencia de optimizaciones adicionales, todas las consultas contra nuestras revisiones leer\u00e1n todo el conjunto de datos una y otra vez, lo que puede resultar muy caro. Aunque esto puede ser aceptable para datos externos a los que se accede con poca frecuencia, podemos hacerlo (mucho) mejor si lo deseamos.<\/span><\/p>\n<h5><span style=\"font-weight: 400\">Soluci\u00f3n filtrada<\/span><\/h5>\n<p><span style=\"font-weight: 400\">Ahora, vamos a examinar c\u00f3mo podemos utilizar el <\/span><i><span style=\"font-weight: 400\">prefijo<\/span><\/i><span style=\"font-weight: 400\"> y <\/span><i><span style=\"font-weight: 400\">incluir\/excluir<\/span><\/i><span style=\"font-weight: 400\"> filtros disponibles para las colecciones externas de Analytics y c\u00f3mo estructuramos nuestros datos para mejorar el rendimiento de nuestras consultas.<\/span><\/p>\n<p><span style=\"font-weight: 400\">La primera consulta requiere leer todos los datos, as\u00ed que dej\u00e9mosla como est\u00e1. Veamos en cambio las consultas 2 y 3.<\/span><\/p>\n<p><span style=\"font-weight: 400\">En la consulta 2, los datos necesarios corresponden \u00fanicamente al a\u00f1o 2019, por lo que podemos crear una nueva colecci\u00f3n externa de Analytics y utilizar el a\u00f1o como prefijo al hacerlo:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">CREATE ANALYTICS COLLECTION my2019Collection\u00a0\r\nON myReviewsDataContainer\u00a0\r\nAT myLink\u00a0\r\nUSING \"reviews\/2019\"\u00a0\r\nWITH {\"format\": \"json\"};<\/pre>\n<p><span style=\"font-weight: 400\">El DDL da como resultado una colecci\u00f3n externa de Analytics configurada para leer \u00fanicamente los datos del prefijo especificado, es decir, \"<\/span><i><span style=\"font-weight: 400\">revisiones\/2019<\/span><\/i><span style=\"font-weight: 400\">\". Es importante se\u00f1alar que esta colecci\u00f3n es <\/span><i><span style=\"font-weight: 400\">virtual<\/span><\/i><span style=\"font-weight: 400\">es s\u00f3lo otro punto de entrada con nombre a los mismos datos almacenados externamente. (No se est\u00e1 replicando ning\u00fan dato, y no se est\u00e1 utilizando espacio adicional debido a la creaci\u00f3n de esta colecci\u00f3n externa adicional - son s\u00f3lo metadatos).<\/span><\/p>\n<p><span style=\"font-weight: 400\">Para entender lo que ocurre, veamos lo que sucede internamente. Cuando se consulta una colecci\u00f3n externa de Analytics, el motor de consulta empieza por recuperar los metadatos de los archivos, que s\u00f3lo contienen informaci\u00f3n <\/span><i><span style=\"font-weight: 400\">acerca de <\/span><\/i><span style=\"font-weight: 400\">los archivos. El contenido de los archivos no se lee todav\u00eda. Parte de la informaci\u00f3n de metadatos devuelta es el nombre completo\/ruta de los archivos y los tama\u00f1os de su contenido.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Analytics utiliza esta informaci\u00f3n para realizar dos pasos:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Aplica cualquier prefijo, filtrado de inclusi\u00f3n\/exclusi\u00f3n en el nombre del archivo, para decidir si incluye cada archivo o lo excluye por completo, con el consiguiente ahorro de recursos.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Calcula el tama\u00f1o global de los datos, lo que lleva a distribuir la carga de trabajo uniformemente entre todas las particiones de los nodos Analytics para su acceso y procesamiento en paralelo.<\/span><\/li>\n<\/ul>\n<div style=\"width: 800px;\" class=\"wp-video\"><!--[if lt IE 9]><script>document.createElement('video');<\/script><![endif]-->\n<video class=\"wp-video-shortcode\" id=\"video-12989-1\" width=\"800\" height=\"450\" loop autoplay preload=\"metadata\" controls=\"controls\"><source type=\"video\/webm\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/03\/cb-external-analytics.gif.webm?_=1\" \/><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/03\/cb-external-analytics.gif.webm\">https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2022\/03\/cb-external-analytics.gif.webm<\/a><\/video><\/div>\n<p><span style=\"font-weight: 400\">Aplicando lo anterior, las consultas sobre el <\/span><i><span style=\"font-weight: 400\">Mi colecci\u00f3n 2019 <\/span><\/i><span style=\"font-weight: 400\">s\u00f3lo leer\u00e1 los archivos cuyo prefijo sea \"<\/span><i><span style=\"font-weight: 400\">revisiones\/2019<\/span><\/i><span style=\"font-weight: 400\">\", que s\u00f3lo incluir\u00e1 33% de los datos. La consulta pertinente puede escribirse ahora como:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">SELECT COUNT(*) FROM my2019Collection;<\/pre>\n<p><span style=\"font-weight: 400\">Ejecutando la consulta anterior, observamos lo siguiente:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">El tiempo total de ejecuci\u00f3n es ahora de 160 segundos, frente a los 448 segundos anteriores, es decir, s\u00f3lo 35% del tiempo original. Era de esperar, ya que s\u00f3lo hemos le\u00eddo 33% de los datos.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">La cantidad total de datos transferidos es de 240 GB, por debajo de los 720 GB anteriores.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Esto supone una mejora considerable tanto en rendimiento como en utilizaci\u00f3n de recursos.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Siguiendo el mismo patr\u00f3n, utilicemos la capacidad de filtrado de inclusi\u00f3n\/exclusi\u00f3n de las colecciones externas. La consulta 3 s\u00f3lo est\u00e1 interesada en los datos de enero de 2020.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Vamos a crear una colecci\u00f3n Analytics externa adecuada de la siguiente manera:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">CREATE ANALYTICS COLLECTION myJan2020Collection\r\nON myReviewsDataContainer\r\nAT myLink\r\nUSING \"reviews\/2020\"\r\nWITH {\"format\": \"json\", \"include\": \"*\/Jan\/*.json\"};<\/pre>\n<p><span style=\"font-weight: 400\">Cuando se lean datos de la colecci\u00f3n anterior, s\u00f3lo se incluir\u00e1n los archivos cuyo prefijo sea \"<\/span><i><span style=\"font-weight: 400\">rese\u00f1as\/2020<\/span><\/i><span style=\"font-weight: 400\">\"para incluir s\u00f3lo los datos de 2020 y, a continuaci\u00f3n (\u00a1tambi\u00e9n antes de leer los datos!), Analytics aplicar\u00e1 el filtro de inclusi\u00f3n. Como resultado, la consulta s\u00f3lo recuperar\u00e1 los archivos que coincidan con el patr\u00f3n \"<\/span><i><span style=\"font-weight: 400\">*\/Jan\/*.json<\/span><\/i><span style=\"font-weight: 400\">\"y, por tanto, s\u00f3lo incluir\u00e1 archivos JSON para enero. Una vez determinados los archivos de destino de la consulta, el motor de consulta distribuir\u00e1 la carga de trabajo entre las particiones y comenzar\u00e1 a leer los datos.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Ejecutando nuestra 3\u00aa consulta, escrita contra esta nueva colecci\u00f3n:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">SELECT COUNT(*) FROM myJan2020Collection;<\/pre>\n<p><span style=\"font-weight: 400\">Observamos lo siguiente:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">El tiempo total de ejecuci\u00f3n es ahora de s\u00f3lo 12 segundos, ya que estamos leyendo efectivamente s\u00f3lo 2,78% de los datos.<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">La cantidad total de datos transferidos es ahora de s\u00f3lo 20 GB.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Tenga en cuenta que los filtros include\/exclude tambi\u00e9n admiten expresiones comod\u00edn y que, por ejemplo, se pueden especificar varios filtros a la vez:<\/span><\/p>\n<pre class=\"decode-attributes:false lang:js decode:true\">\"Include\": [\"*\/Jan\/*.json\", \"*\/Mar\/*.json\"]<\/pre>\n<p><span style=\"font-weight: 400\">De este modo, s\u00f3lo se incluir\u00e1n los datos de enero y marzo.<\/span><\/p>\n<h4><span style=\"font-weight: 400\">Pr\u00f3ximos pasos<\/span><\/h4>\n<p><span style=\"font-weight: 400\">Dado que acceder a datos externos puede ser costoso, se recomienda aplicar las mejores pr\u00e1cticas de organizaci\u00f3n de datos y las correspondientes definiciones de colecciones externas. Esto contribuir\u00e1 en gran medida a obtener el mejor rendimiento posible al permitir a Couchbase Analytics utilizar los recursos disponibles en paralelo tanto como sea posible y mantener al m\u00ednimo los costes implicados en la ejecuci\u00f3n de consultas.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Sigue los siguientes enlaces utilizados en este art\u00edculo para aprender m\u00e1s sobre Couchbase Analytics:<\/span><\/p>\n<ul>\n<li>Descubra <a href=\"https:\/\/www.couchbase.com\/blog\/es\/analytics-customer-use-cases\/?ref=blog\" target=\"_blank\" rel=\"noopener\">c\u00f3mo utilizan los clientes Couchbase Analytics en este art\u00edculo<\/a>.<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">Uso de las colecciones de an\u00e1lisis con <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/external-datasets-extend-your-reach-with-couchbase-analytics\/?ref=blog\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">AWS S3<\/span><\/a><span style=\"font-weight: 400\"> y <\/span><a href=\"https:\/\/www.couchbase.com\/blog\/es\/couchbase-analytics-now-supports-azure-blob-storage-using-external-analytics-collections\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Almacenamiento Azure Blob<\/span><\/a><span style=\"font-weight: 400\">.<\/span><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/www.couchbase.com\/blog\/es\/utilizing-multiple-disks-to-speed-up-couchbase-analytics-queries\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">Uso de varios discos para acelerar las consultas de Couchbase Analytics<\/span><\/a><\/li>\n<li style=\"font-weight: 400\"><a href=\"https:\/\/www.couchbase.com\/blog\/es\/products\/analytics\/\" target=\"_blank\" rel=\"noopener\"><span style=\"font-weight: 400\">An\u00e1lisis JSON - NoETL con NoSQL y Couchbase<\/span><\/a><\/li>\n<li>Utilizando <a href=\"https:\/\/www.couchbase.com\/blog\/es\/sqlplusplus\/?ref=blog\" target=\"_blank\" rel=\"noopener\">SQL++ for Analytics (SQL para JSON)<\/a><\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>It is crucial to plan for performance optimization and resource utilization now that there is support for external Couchbase Analytics collections (AWS S3 and Azure Blob Storage). External Couchbase Analytics collections read the data from external storage and do not [&hellip;]<\/p>","protected":false},"author":77803,"featured_media":12682,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[2294,1816,1812],"tags":[10124,1261,1673],"ppma_author":[9364],"class_list":["post-12989","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-analytics","category-couchbase-server","category-n1ql-query","tag-amazon-web-services-aws","tag-json","tag-microsoft-azure"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Optimize Performance of External Analytics Collections in Couchbase - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"Learn to query external JSON data collections stored in remote storage - AWS S3, Azure Blob\/Data Lake, Google Cloud using Couchbase Analytics\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.couchbase.com\/blog\/es\/optimize-performance-of-external-analytics-collections-in-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Optimize Performance of External Analytics Collections in Couchbase\" \/>\n<meta property=\"og:description\" content=\"Learn to query external JSON data collections stored in remote storage - AWS S3, Azure Blob\/Data Lake, Google Cloud using Couchbase Analytics\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/optimize-performance-of-external-analytics-collections-in-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2022-03-31T16:00:33+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T03:40:56+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/01\/yuiizaa-september-kGnmW_xnIsA-unsplash-scaled.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"2560\" \/>\n\t<meta property=\"og:image:height\" content=\"1707\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Hussain Towaileb, Software Engineer\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Hussain Towaileb, Software Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/\"},\"author\":{\"name\":\"Hussain.Towaileb\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/edda50c9c6c3e528ecd7aa69deeba081\"},\"headline\":\"Optimize Performance of External Analytics Collections in Couchbase\",\"datePublished\":\"2022-03-31T16:00:33+00:00\",\"dateModified\":\"2025-06-14T03:40:56+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/\"},\"wordCount\":1775,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/01\/yuiizaa-september-kGnmW_xnIsA-unsplash-scaled.jpg\",\"keywords\":[\"Amazon Web Services (AWS)\",\"JSON\",\"Microsoft Azure\"],\"articleSection\":[\"Couchbase Analytics\",\"Couchbase Server\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/\",\"name\":\"Optimize Performance of External Analytics Collections in Couchbase - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/01\/yuiizaa-september-kGnmW_xnIsA-unsplash-scaled.jpg\",\"datePublished\":\"2022-03-31T16:00:33+00:00\",\"dateModified\":\"2025-06-14T03:40:56+00:00\",\"description\":\"Learn to query external JSON data collections stored in remote storage - AWS S3, Azure Blob\/Data Lake, Google Cloud using Couchbase Analytics\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/01\/yuiizaa-september-kGnmW_xnIsA-unsplash-scaled.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/01\/yuiizaa-september-kGnmW_xnIsA-unsplash-scaled.jpg\",\"width\":2560,\"height\":1707},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Optimize Performance of External Analytics Collections in Couchbase\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"name\":\"The Couchbase Blog\",\"description\":\"Couchbase, the NoSQL Database\",\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png\",\"width\":218,\"height\":34,\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/edda50c9c6c3e528ecd7aa69deeba081\",\"name\":\"Hussain.Towaileb\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/b4788e88d100e2dce25c61219a9d9392\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/Hussain-Towaileb-couchbase-software-engineer.jpeg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/Hussain-Towaileb-couchbase-software-engineer.jpeg\",\"caption\":\"Hussain.Towaileb\"},\"description\":\"Software Engineer working on Couchbase Analytics. Focusing on external links and external datasets.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/hussain-towaileb\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Optimize Performance of External Analytics Collections in Couchbase - The Couchbase Blog","description":"Learn to query external JSON data collections stored in remote storage - AWS S3, Azure Blob\/Data Lake, Google Cloud using Couchbase Analytics","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.couchbase.com\/blog\/es\/optimize-performance-of-external-analytics-collections-in-couchbase\/","og_locale":"es_MX","og_type":"article","og_title":"Optimize Performance of External Analytics Collections in Couchbase","og_description":"Learn to query external JSON data collections stored in remote storage - AWS S3, Azure Blob\/Data Lake, Google Cloud using Couchbase Analytics","og_url":"https:\/\/www.couchbase.com\/blog\/es\/optimize-performance-of-external-analytics-collections-in-couchbase\/","og_site_name":"The Couchbase Blog","article_published_time":"2022-03-31T16:00:33+00:00","article_modified_time":"2025-06-14T03:40:56+00:00","og_image":[{"width":2560,"height":1707,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/01\/yuiizaa-september-kGnmW_xnIsA-unsplash-scaled.jpg","type":"image\/jpeg"}],"author":"Hussain Towaileb, Software Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Hussain Towaileb, Software Engineer","Est. reading time":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/"},"author":{"name":"Hussain.Towaileb","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/edda50c9c6c3e528ecd7aa69deeba081"},"headline":"Optimize Performance of External Analytics Collections in Couchbase","datePublished":"2022-03-31T16:00:33+00:00","dateModified":"2025-06-14T03:40:56+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/"},"wordCount":1775,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/01\/yuiizaa-september-kGnmW_xnIsA-unsplash-scaled.jpg","keywords":["Amazon Web Services (AWS)","JSON","Microsoft Azure"],"articleSection":["Couchbase Analytics","Couchbase Server","SQL++ \/ N1QL Query"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/","name":"Optimize Performance of External Analytics Collections in Couchbase - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/01\/yuiizaa-september-kGnmW_xnIsA-unsplash-scaled.jpg","datePublished":"2022-03-31T16:00:33+00:00","dateModified":"2025-06-14T03:40:56+00:00","description":"Learn to query external JSON data collections stored in remote storage - AWS S3, Azure Blob\/Data Lake, Google Cloud using Couchbase Analytics","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/01\/yuiizaa-september-kGnmW_xnIsA-unsplash-scaled.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/01\/yuiizaa-september-kGnmW_xnIsA-unsplash-scaled.jpg","width":2560,"height":1707},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/optimize-performance-of-external-analytics-collections-in-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Optimize Performance of External Analytics Collections in Couchbase"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"El blog de Couchbase","description":"Couchbase, la base de datos NoSQL","publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.couchbase.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"El blog de Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/admin-logo.png","width":218,"height":34,"caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/edda50c9c6c3e528ecd7aa69deeba081","name":"Hussain.Towaileb","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/b4788e88d100e2dce25c61219a9d9392","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/Hussain-Towaileb-couchbase-software-engineer.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/Hussain-Towaileb-couchbase-software-engineer.jpeg","caption":"Hussain.Towaileb"},"description":"Software Engineer working on Couchbase Analytics. Focusing on external links and external datasets.","url":"https:\/\/www.couchbase.com\/blog\/es\/author\/hussain-towaileb\/"}]}},"authors":[{"term_id":9364,"user_id":77803,"is_guest":0,"slug":"hussain-towaileb","display_name":"Hussain Towaileb, Software Engineer","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/Hussain-Towaileb-couchbase-software-engineer.jpeg","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/08\/Hussain-Towaileb-couchbase-software-engineer.jpeg"},"first_name":"Hussain","last_name":"Towaileb, Software Engineer","user_url":"","author_category":"","description":"Hussain Towaileb es ingeniero de software y trabaja en Couchbase Analytics. Se centra en enlaces externos y conjuntos de datos externos."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12989","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/users\/77803"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=12989"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/12989\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/12682"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=12989"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=12989"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=12989"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=12989"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}