{"id":1516,"date":"2025-10-06T07:53:15","date_gmt":"2025-10-06T07:53:15","guid":{"rendered":"https:\/\/cloudlab.urv.cat\/catedracloud\/?p=1516"},"modified":"2025-10-06T07:53:21","modified_gmt":"2025-10-06T07:53:21","slug":"de-vuelta-al-monolito-por-que-los-motores-de-consulta-de-un-solo-nodo-estan-en-auge-apache-datafusion","status":"publish","type":"post","link":"https:\/\/cloudlab.urv.cat\/catedracloud\/2025\/10\/06\/de-vuelta-al-monolito-por-que-los-motores-de-consulta-de-un-solo-nodo-estan-en-auge-apache-datafusion\/","title":{"rendered":"De vuelta al monolito: Por qu\u00e9 los motores de consulta de un solo nodo est\u00e1n en auge (Apache DataFusion)"},"content":{"rendered":"\n<p>Los analistas de datos son los detectives modernos. Examinan monta\u00f1as de datos en busca de pistas para responder preguntas cr\u00edticas de negocio. Su herramienta principal no es una lupa, sino un <strong>motor de consulta<\/strong>. En esencia, un motor de consulta es un software sofisticado que toma una solicitud del usuario, normalmente escrita en SQL, y recupera eficientemente los datos correspondientes del almacenamiento.<\/p>\n\n\n\n<p>Durante la d\u00e9cada de 2010, la historia de los datos fue una cuesti\u00f3n de escala. &#8220;Big Data&#8221; no era solo una palabra de moda; era una realidad que llev\u00f3 nuestra tecnolog\u00eda al l\u00edmite. El enorme volumen, velocidad y variedad de datos desbord\u00f3 a las m\u00e1quinas individuales, lo que llev\u00f3 a una conclusi\u00f3n inevitable: si no puedes escalar verticalmente, debes escalar horizontalmente. Esto dio lugar a los motores de consulta distribuidos, que dividen los datos y la carga de procesamiento entre un amplio conjunto de computadoras.<\/p>\n\n\n\n<p>Sin embargo, una tendencia contraria fascinante est\u00e1 ganando fuerza. Est\u00e1 surgiendo una nueva generaci\u00f3n de motores de consulta de un solo nodo altamente optimizados, que est\u00e1n llamando la atenci\u00f3n por su incre\u00edble rendimiento. Nombres como <strong>DuckDB<\/strong> o <strong>Apache DataFusion<\/strong> son cada vez m\u00e1s comunes en los c\u00edrculos de ingenier\u00eda de datos.<\/p>\n\n\n\n<p>Esto plantea una pregunta importante: en una industria que ha invertido tanto en computaci\u00f3n distribuida, \u00bfpor qu\u00e9 hay un resurgimiento tan fuerte de herramientas dise\u00f1adas para funcionar en una sola m\u00e1quina? \u00bfEstamos retrocediendo? La respuesta corta es no. Este cambio no es una regresi\u00f3n; es una evoluci\u00f3n pragm\u00e1tica y poderosa impulsada por avances tanto en hardware como en software. Veamos por qu\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">La era de los sistemas distribuidos<\/h2>\n\n\n\n<p>Para entender el cambio actual, debemos mirar atr\u00e1s al problema que defini\u00f3 los \u00faltimos quince a\u00f1os de la ingenier\u00eda de datos. A principios de los a\u00f1os 2000, empresas como Google y Yahoo estaban generando datos (registros de b\u00fasqueda, flujos de clics) a una escala que simplemente no pod\u00eda almacenarse f\u00edsicamente en el disco duro de una sola m\u00e1quina. La soluci\u00f3n fue &#8220;escalar horizontalmente&#8221;: en lugar de una m\u00e1quina masiva, se pod\u00eda utilizar un cl\u00faster de cientos o miles de computadoras baratas y comunes.<\/p>\n\n\n\n<p>Esta nueva realidad exigi\u00f3 un cambio de paradigma completo. La idea fundamental era <strong>desacoplar el almacenamiento del procesamiento<\/strong>. Los datos se fragmentaban y distribu\u00edan en un sistema de archivos distribuido (como HDFS de Hadoop), y la l\u00f3gica de procesamiento se enviaba a los nodos donde resid\u00edan los datos. <strong>Apache Hadoop<\/strong> surgi\u00f3 como el conjunto de herramientas de c\u00f3digo abierto para este mundo, popularizando el modelo <strong>MapReduce<\/strong> para ejecutar c\u00e1lculos en paralelo a trav\u00e9s del cl\u00faster.<\/p>\n\n\n\n<p>Aunque poderoso, este era un mundo construido por y para ingenieros de software. Para los analistas de datos, era inaccesible. El gran avance lleg\u00f3 con herramientas como <strong>Apache Hive<\/strong>, que ofrec\u00edan una interfaz SQL familiar sobre el backend distribuido. Los analistas pod\u00edan escribir SQL, y Hive lo traduc\u00eda en complejos trabajos distribuidos. El ecosistema continu\u00f3 evolucionando con <strong>Apache Spark<\/strong>, que abord\u00f3 los cuellos de botella de rendimiento de los sistemas iniciales. Al introducir el concepto de procesamiento en memoria mediante <strong>Resilient Distributed Datasets (RDDs)<\/strong>, Spark hizo que todo fuera mucho m\u00e1s r\u00e1pido y flexible, consolidando su papel como el motor preferido para el procesamiento de datos a gran escala, aprendizaje autom\u00e1tico y m\u00e1s. Este enfoque distribuido se convirti\u00f3 en el est\u00e1ndar indiscutible para cualquier trabajo serio con datos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Los problemas de un mundo centrado en sistemas distribuidos<\/h2>\n\n\n\n<p>El ecosistema distribuido, a pesar de su potencia, introdujo una fricci\u00f3n significativa. El problema principal es que <strong>los sistemas distribuidos son brutalmente complejos y costosos<\/strong>. Gestionar un cl\u00faster de nivel de producci\u00f3n requiere conocimientos t\u00e9cnicos especializados y conlleva altos costes operativos, tanto por la infraestructura como por los equipos necesarios para mantenerla. Esta complejidad se aplic\u00f3 con frecuencia a problemas que no lo justificaban. La obsesi\u00f3n de la industria por el &#8220;big data&#8221; llev\u00f3 al uso de estos pesados frameworks para conjuntos de datos en rangos de gigabytes o terabytes bajos\u2014una escala en la que la sobrecarga del intercambio de datos por red a menudo hac\u00eda que las consultas fueran <em>m\u00e1s lentas<\/em> y m\u00e1s fr\u00e1giles que una alternativa de nodo \u00fanico.<\/p>\n\n\n\n<p>Esta reevaluaci\u00f3n est\u00e1 impulsada por dos tendencias clave. Primero, el hardware ha evolucionado dr\u00e1sticamente. Un servidor moderno es una aut\u00e9ntica potencia, f\u00e1cilmente configurable con m\u00e1s de 100 n\u00facleos de CPU, terabytes de RAM y almacenamiento NVMe ultrarr\u00e1pido. <strong>La escalabilidad vertical vuelve a ser potente y rentable<\/strong>, ya que una sola m\u00e1quina hoy puede superar a todo un cl\u00faster de hace una d\u00e9cada.<\/p>\n\n\n\n<p>Segundo, los motores emergentes se construyen con una filosof\u00eda de software diferente. Muchos sistemas heredados basados en la JVM sufren pausas impredecibles de recolecci\u00f3n de basura (&#8220;stop-the-world&#8221;) que perjudican la latencia de las consultas. En cambio, los nuevos motores escritos en lenguajes como Rust o C++ ofrecen control directo sobre la memoria. Esto les permite eliminar la sobrecarga del GC y aprovechar al m\u00e1ximo las funciones modernas de CPU como el procesamiento vectorizado (SIMD), exprimiendo cada gota de rendimiento del hardware subyacente de una forma mucho m\u00e1s sencilla de lograr en una sola m\u00e1quina.<\/p>\n\n\n\n<p>Aqu\u00ed es donde proyectos como Apache Arrow se vuelven transformadores. Arrow no es una base de datos ni un motor \u2014 es un formato de datos en memoria compartido que estandariza c\u00f3mo se representa la informaci\u00f3n columnar en memoria. Su dise\u00f1o est\u00e1 cuidadosamente optimizado para la cach\u00e9 y el SIMD, almacenando cada columna como arrays contiguos y tipados que las CPUs pueden procesar directamente en lotes. Lo m\u00e1s importante es que Arrow permite mover datos entre herramientas \u2014 desde capas de almacenamiento hasta motores de ejecuci\u00f3n y bibliotecas de ciencia de datos \u2014 sin necesidad de serializaci\u00f3n ni copias. Todos hablan el mismo lenguaje en memoria.<\/p>\n\n\n\n<p>Esa interoperabilidad sin copias elimina uno de los mayores cuellos de botella en los sistemas de datos: la constante codificaci\u00f3n y decodificaci\u00f3n entre componentes. Con Arrow, los motores anal\u00edticos pueden operar directamente sobre datos residentes en memoria usando n\u00facleos vectorizados, agilizando la ejecuci\u00f3n y minimizando la sobrecarga de CPU. El resultado es que una sola m\u00e1quina puede manejar cargas de trabajo que antes estaban reservadas para cl\u00fasteres \u2014 no por fuerza bruta, sino gracias a un mejor dise\u00f1o de datos y una computaci\u00f3n m\u00e1s inteligente.<\/p>\n\n\n\n<p>En resumen, los formatos eficientes en memoria y la ejecuci\u00f3n vectorizada se han convertido en la nueva frontera de escalabilidad. Cambian la pregunta de \u201c\u00bfC\u00f3mo distribuimos esto?\u201d a \u201c\u00bfQu\u00e9 tan eficientemente puede una m\u00e1quina usar su hardware?\u201d. El resultado es una pila anal\u00edtica m\u00e1s r\u00e1pida, sencilla y f\u00e1cil de mantener \u2014 que prospera no con m\u00e1s m\u00e1quinas, sino con mejor dise\u00f1o.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Motores de consulta emergentes: una nueva generaci\u00f3n<\/h2>\n\n\n\n<p>Esta nueva ola de motores de consulta de un solo nodo no es un bloque uniforme; es un ecosistema diverso de herramientas, cada una con su propia filosof\u00eda y fortalezas. Un ejemplo destacado de este nuevo enfoque es <strong>Apache DataFusion<\/strong>. DataFusion se describe mejor como un <strong>framework extensible de ejecuci\u00f3n de consultas<\/strong>, escrito en Rust. Proporciona los componentes fundamentales\u2014el analizador, el optimizador de consultas y el motor de ejecuci\u00f3n\u2014para construir sistemas de datos de alto rendimiento. No lo pienses como un coche terminado, sino como un motor y chasis de alto rendimiento que puedes usar para construir tu propio veh\u00edculo personalizado.<\/p>\n\n\n\n<p>\u00bfQu\u00e9 lo hace diferente? Su poder radica en su modularidad y extensibilidad, construida sobre los cimientos de <strong>Apache Arrow<\/strong>. Al ser una biblioteca y no una aplicaci\u00f3n independiente, los desarrolladores pueden integrar DataFusion directamente en sus propias aplicaciones. Una empresa que est\u00e9 creando una nueva herramienta de BI, un framework personalizado de calidad de datos o incluso una nueva base de datos puede aprovechar el motor de ejecuci\u00f3n vectorizado y probado de DataFusion sin tener que construir uno desde cero. Esto reduce dr\u00e1sticamente la barrera para crear aplicaciones de alto rendimiento y centradas en datos.<\/p>\n\n\n\n<p>Pero ve\u00e1moslo desde el punto de vista de un analista: imagina que est\u00e1s trabajando en un notebook con un archivo Parquet grande y necesitas ejecutar consultas complejas sin montar un cl\u00faster distribuido. Aqu\u00ed es donde DataFusion brilla. Puedes cargar el archivo localmente y ejecutar consultas SQL directamente sobre \u00e9l, aprovechando la ejecuci\u00f3n vectorizada y el formato en memoria de Arrow para obtener resultados r\u00e1pidos y eficientes. Sin necesidad de configurar Spark, sin preocuparte por la infraestructura\u2014solo t\u00fa, tu notebook y una herramienta que maximiza el rendimiento del hardware moderno.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Apache DataFusion<\/h3>\n\n\n\n<p>Si eres un analista de datos frente a un archivo Parquet de varios gigabytes \u2014 demasiado grande para que Pandas lo maneje c\u00f3modamente, pero lo suficientemente peque\u00f1o como para caber en memoria \u2014 <strong>DataFusion podr\u00eda ser justo lo que necesitas<\/strong>.<\/p>\n\n\n\n<p>Con los bindings de Python (paquete <code>datafusion<\/code>), puedes iniciar un motor de consultas SQL <em>dentro de tu notebook<\/em> con solo unas pocas l\u00edneas de c\u00f3digo. Sin servidores, sin cl\u00fasteres, sin dolores de cabeza de configuraci\u00f3n \u2014 solo SQL de alto rendimiento sobre archivos locales.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from datafusion import SessionContext\n\nctx = SessionContext()\nctx.register_parquet(\"data\", \"my_big_file.parquet\")\ndf = ctx.sql(\"\"\"\n    SELECT category, SUM(revenue) AS total_revenue\n    FROM data\n    WHERE date &gt;= '2024-01-01'\n    GROUP BY category\n    ORDER BY total_revenue DESC\n\"\"\")\ndf.show()\n<\/code><\/pre>\n\n\n\n<p>Internamente, DataFusion utiliza <strong>Apache Arrow<\/strong> para su dise\u00f1o columnar en memoria y <strong>ejecuci\u00f3n vectorizada<\/strong> para aprovechar al m\u00e1ximo las CPUs modernas. El resultado: consultas anal\u00edticas complejas que se ejecutan a velocidad casi compilada \u2014 much\u00edsimo m\u00e1s r\u00e1pido que Pandas, PySpark o Dask para cargas de trabajo estilo SQL.<\/p>\n\n\n\n<p>Es ideal para:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Explorar grandes conjuntos de datos Parquet<\/strong> localmente sin necesidad de configurar Spark o Presto.<\/li>\n\n\n\n<li><strong>Ejecutar agregaciones y joins SQL pesados<\/strong> directamente desde Python.<\/li>\n\n\n\n<li><strong>Integrar an\u00e1lisis en aplicaciones ligeras<\/strong> o scripts ETL donde necesitas toda la potencia de SQL, no solo dataframes.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Un ejemplo concreto: ClickBench<\/h3>\n\n\n\n<p>Para entender c\u00f3mo se comparan los motores modernos de un solo nodo con los sistemas distribuidos, es \u00fatil observar un benchmark realista \u2014 no micropruebas sint\u00e9ticas, sino algo que refleje el trabajo anal\u00edtico del mundo real. El benchmark ClickBench es un excelente ejemplo. Utiliza 13,8 GB de datos Parquet comprimidos que representan registros an\u00f3nimos de clics y tr\u00e1fico de una de las plataformas de anal\u00edtica web m\u00e1s grandes del mundo. El benchmark est\u00e1 compuesto por 42 consultas que capturan los patrones esperados en el an\u00e1lisis de clics, anal\u00edtica web y de tr\u00e1fico, registros generados por m\u00e1quinas y datos de eventos en tiempo real \u2014 el tipo de cargas de trabajo que alimentan consultas ad-hoc y dashboards en muchas pilas anal\u00edticas modernas.<\/p>\n\n\n\n<div class=\"wp-block-uagb-image uagb-block-5139260b wp-block-uagb-image--layout-default wp-block-uagb-image--effect-static wp-block-uagb-image--align-none\"><figure class=\"wp-block-uagb-image__figure\"><img decoding=\"async\" srcset=\"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/Captura-de-pantalla-2025-10-06-a-las-9.04.09.png ,https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/Captura-de-pantalla-2025-10-06-a-las-9.04.09.png 780w, https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/Captura-de-pantalla-2025-10-06-a-las-9.04.09.png 360w\" sizes=\"auto, (max-width: 480px) 150px\" src=\"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/Captura-de-pantalla-2025-10-06-a-las-9.04.09.png\" alt=\"\" class=\"uag-image-1517\" width=\"899\" height=\"152\" title=\"Captura de pantalla 2025-10-06 a las 9.04.09\" loading=\"lazy\" role=\"img\"\/><\/figure><\/div>\n\n\n\n<p>En el conjunto de datos de ClickBench, la diferencia de dise\u00f1o entre un framework centrado en lo distribuido como PySpark y uno altamente optimizado de nodo \u00fanico como DataFusion se vuelve muy evidente. Mientras PySpark necesita iniciar su contexto de ejecuci\u00f3n local, analizar los trabajos y programar tareas, DataFusion puede simplemente abrir los archivos Parquet y comenzar a ejecutar consultas de inmediato. Para an\u00e1lisis ad-hoc y exploraci\u00f3n iterativa, esa capacidad de respuesta supone un gran impulso a la productividad. En la pr\u00e1ctica, la mayor\u00eda de las consultas tipo ClickBench \u2014 agregaciones, filtros, joins y group-bys \u2014 se completan significativamente m\u00e1s r\u00e1pido en DataFusion cuando se ejecutan en una estaci\u00f3n de trabajo moderna con suficiente RAM, sin necesidad de configurar ning\u00fan cl\u00faster.<\/p>\n\n\n\n<p>Para completar la comparaci\u00f3n, tambi\u00e9n se ha enfrentado DataFusion con otro motor local muy conocido: Pandas. DataFusion supera ampliamente a Pandas en rendimiento, lo que resalta la importancia del dise\u00f1o altamente optimizado de Apache Arrow para la computaci\u00f3n en memoria, sobre el cual se basa DataFusion.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusiones: La herramienta adecuada para el trabajo<\/h2>\n\n\n\n<p>El regreso de los motores de consulta de un solo nodo no es un paso atr\u00e1s hacia el pasado; es un salto hacia un futuro m\u00e1s pragm\u00e1tico y eficiente. La industria est\u00e1 madurando, dejando atr\u00e1s la mentalidad de &#8220;big data para todo&#8221; que domin\u00f3 la d\u00e9cada anterior. Estamos redescubriendo una verdad fundamental de la ingenier\u00eda: usar la herramienta m\u00e1s simple que pueda hacer el trabajo de manera efectiva.<\/p>\n\n\n\n<p>Esta evoluci\u00f3n est\u00e1 impulsada por dos grandes fuerzas: las incre\u00edbles capacidades de escalado vertical del hardware moderno y una nueva generaci\u00f3n de software dise\u00f1ado desde cero para aprovecharlas. Estos motores est\u00e1n extrayendo un rendimiento de una sola m\u00e1quina que antes era inimaginable.<\/p>\n\n\n\n<p>El futuro no es una elecci\u00f3n entre sistemas distribuidos y de nodo \u00fanico. Es un mundo <strong>h\u00edbrido donde se elige la arquitectura adecuada seg\u00fan el problema a resolver.<\/strong><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Para <strong>an\u00e1lisis interactivos sobre conjuntos de datos que van desde gigabytes hasta terabytes bajos<\/strong>, para aplicaciones embebidas y para desarrollo r\u00e1pido, la simplicidad, velocidad y bajo coste operativo de motores de nodo \u00fanico como Apache DataFusion o DuckDB ser\u00e1n insuperables.<\/li>\n\n\n\n<li>Para <strong>almacenamiento de datos a escala de petabytes, lagos de datos masivos y cargas de trabajo que requieren alta tolerancia a fallos y acceso concurrente<\/strong>, el paradigma distribuido de Spark y similares seguir\u00e1 siendo el campe\u00f3n indiscutible.<\/li>\n<\/ul>\n\n\n\n<p>El detective de datos moderno ahora cuenta con un conjunto de herramientas m\u00e1s sofisticado. En lugar de recurrir al mazo industrial de un cl\u00faster distribuido para cada problema, ahora puede elegir el bistur\u00ed preciso y de alto rendimiento de un motor de nodo \u00fanico. Este cambio les permite encontrar respuestas m\u00e1s r\u00e1pido, de forma m\u00e1s eficiente y con menos fricci\u00f3n, permiti\u00e9ndoles centrarse en lo que realmente importa: resolver el misterio oculto en los datos.<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Los analistas de datos son los detectives modernos. Examinan monta\u00f1as de datos en busca de pistas para responder preguntas cr\u00edticas de negocio. Su herramienta principal no es una lupa, sino un motor de consulta. En esencia, un motor de consulta es un software sofisticado que toma una solicitud del usuario, normalmente escrita en SQL, y [&hellip;]<\/p>\n","protected":false},"author":6,"featured_media":1518,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_uag_custom_page_level_css":"","_swt_meta_header_display":false,"_swt_meta_footer_display":false,"_swt_meta_site_title_display":false,"_swt_meta_sticky_header":false,"_swt_meta_transparent_header":false,"footnotes":""},"categories":[41,113],"tags":[],"class_list":["post-1516","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-big-data","category-cloud-computing"],"jetpack_featured_media_url":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/blog.png","uagb_featured_image_src":{"full":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/blog.png",1920,1080,false],"thumbnail":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/blog-150x150.png",150,150,true],"medium":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/blog-300x169.png",300,169,true],"medium_large":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/blog-768x432.png",768,432,true],"large":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/blog-1024x576.png",1024,576,true],"1536x1536":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/blog-1536x864.png",1536,864,true],"2048x2048":["https:\/\/cloudlab.urv.cat\/catedracloud\/wp-content\/uploads\/2025\/10\/blog.png",1920,1080,false]},"uagb_author_info":{"display_name":"Aitor Arjona","author_link":"https:\/\/cloudlab.urv.cat\/catedracloud\/author\/aitor\/"},"uagb_comment_info":8,"uagb_excerpt":"Los analistas de datos son los detectives modernos. Examinan monta\u00f1as de datos en busca de pistas para responder preguntas cr\u00edticas de negocio. Su herramienta principal no es una lupa, sino un motor de consulta. En esencia, un motor de consulta es un software sofisticado que toma una solicitud del usuario, normalmente escrita en SQL, y&hellip;","_links":{"self":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts\/1516","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/users\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/comments?post=1516"}],"version-history":[{"count":1,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts\/1516\/revisions"}],"predecessor-version":[{"id":1519,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/posts\/1516\/revisions\/1519"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/media\/1518"}],"wp:attachment":[{"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/media?parent=1516"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/categories?post=1516"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/cloudlab.urv.cat\/catedracloud\/wp-json\/wp\/v2\/tags?post=1516"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}