{"id":1858,"date":"2015-01-13T16:15:32","date_gmt":"2015-01-13T16:15:31","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1858"},"modified":"2023-06-27T23:06:05","modified_gmt":"2023-06-28T06:06:05","slug":"why-you-should-care-about-reactive-database-access","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/es\/why-you-should-care-about-reactive-database-access\/","title":{"rendered":"Por qu\u00e9 debe preocuparle el acceso reactivo a bases de datos"},"content":{"rendered":"<p>Desde que anunciamos que nuestro nuevo SDK de Java se basa por completo en componentes reactivos y as\u00edncronos, nuestros usuarios no dejan de preguntarnos cu\u00e1les son las ventajas con respecto a sus patrones de acceso s\u00edncronos de toda la vida. Aunque muy a menudo el \"rendimiento\" es uno de los factores determinantes, hay mucho m\u00e1s a tener en cuenta. Adem\u00e1s de la gesti\u00f3n de errores (que se tratar\u00e1 en otro art\u00edculo), destacan las siguientes caracter\u00edsticas:<\/p>\n<ol>\n<li>Construir flujos de datos con flujos de datos<\/li>\n<li>Mejor aprovechamiento de los recursos sin quebraderos de cabeza<\/li>\n<\/ol>\n<p>El prop\u00f3sito de esta entrada de blog es convertir patrones comunes de acceso a datos de s\u00edncronos a reactivos y, como resultado, darte una idea de lo que es posible con este nuevo enfoque. No te preocupes si nunca has escrito c\u00f3digo \"reactivo\" - aprender\u00e1s algunas nociones b\u00e1sicas por el camino. Adem\u00e1s, ten en cuenta que seguimos soportando una API s\u00edncrona. La API s\u00edncrona es s\u00f3lo una fina envoltura alrededor de la reactiva, lo que le permite migrar gradualmente su aplicaci\u00f3n a un enfoque m\u00e1s potente, sin tener que saltar en el extremo profundo de inmediato.<\/p>\n<p>Ah, y por cierto, tenemos un <a href=\"https:\/\/www.couchbase.com\/blog\/es\/resources\/webinars\/\">Pr\u00f3ximo seminario web<\/a> el 22 de enero, Simon Basle, uno de nuestros ingenieros del SDK, presentar\u00e1 el nuevo SDK de Java y mostrar\u00e1 algunas de las partes reactivas. \u00danete a \u00e9l y hazle preguntas.<\/p>\n<h2>El patr\u00f3n de b\u00fasqueda<\/h2>\n<p>Un patr\u00f3n muy com\u00fan cuando se accede a una base de datos o a un almac\u00e9n de claves\/valores es el patr\u00f3n de b\u00fasqueda. Se carga un documento y, en funci\u00f3n de su contenido, se cargan m\u00e1s documentos. Consideremos el ejemplo cl\u00e1sico de \"entrada de blog y comentarios\". Imagina que tienes la siguiente entrada de blog almacenada en Couchbase:<\/p>\n<\/p>\n<p>Contiene una lista de identificadores de comentarios que puede utilizarse para cargar los detalles completos de cada contenido seg\u00fan sea necesario. Un comentario puede tener este aspecto<\/p>\n<\/p>\n<p>Ahora digamos que queremos cargar los dos primeros comentarios que se publican cuando se carga la entrada del blog, para que se muestren debajo de la publicaci\u00f3n real. Aqu\u00ed hay una manera de lograr esto con el acceso s\u00edncrono y el nuevo SDK:<\/p>\n<\/p>\n<p>Dejando a un lado la gesti\u00f3n de errores, este enfoque tiene algunos inconvenientes:<\/p>\n<ul>\n<li>Tenemos que esperar al menos 3 veces a que la red responda, manteniendo nuestro hilo inactivo mientras que potencialmente podr\u00eda realizar un trabajo valioso en su lugar.<\/li>\n<li>Es muy dif\u00edcil aplicar un tiempo de espera global a todo el proceso, ya que cada operaci\u00f3n tiene un tiempo de espera individual.<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p>Vamos a convertir esto en un enfoque reactivo, tambi\u00e9n utilizando Java 8 lambdas (Java 6\/7 tambi\u00e9n son compatibles, s\u00f3lo tiene que utilizar clases an\u00f3nimas en lugar de callbacks):<\/p>\n<\/p>\n<p>Bas\u00e1ndonos en el nombre de los operadores, est\u00e1 bastante claro lo que est\u00e1 pasando. El c\u00f3digo carga la entrada del blog. Una vez que llega, extrae la lista de IDs de comentarios y la pasa al siguiente m\u00e9todo que carga realmente los documentos de comentarios. El m\u00e9todo de filtrado s\u00f3lo deja pasar los comentarios que est\u00e1n publicados. Despu\u00e9s, s\u00f3lo tomamos los 2 primeros comentarios y nos damos de baja para evitar m\u00e1s trabajo (como cargar m\u00e1s documentos, cuando ya tenemos suficientes). Finalmente, agregamos todos los comentarios encontrados en una lista, aplicamos un tiempo de espera global y luego bloqueamos.<\/p>\n<p>Este c\u00f3digo se \"despliega\" para cargar todos los comentarios necesarios en paralelo, llegando a m\u00e1s nodos del cl\u00faster al mismo tiempo y, como resultado, devolviendo los resultados deseados m\u00e1s r\u00e1pidamente. Adem\u00e1s, el c\u00f3digo aplica un tiempo de espera global a toda la \"operaci\u00f3n\", algo muy dif\u00edcil de conseguir con c\u00f3digo s\u00edncrono. Por \u00faltimo, todo el c\u00f3digo es componible. Puedes encapsular la l\u00f3gica en un m\u00e9todo sin aplicar un tiempo de espera o especificar cu\u00e1ntos comentarios \"tomar\". La capa superior puede entonces encadenar los operadores que necesite para realizar el trabajo como desee.<\/p>\n<p>Adem\u00e1s, puedes ver que es muy f\u00e1cil pasar del concepto m\u00e1s potente (async, reactivo) al menos potente (sync). Al rev\u00e9s no es posible.<\/p>\n<p>Tenga en cuenta que seguimos bloqueando al final, y eso est\u00e1 bien. La mayor\u00eda de las aplicaciones se bloquear\u00e1n en alg\u00fan momento (quiz\u00e1s incluso justo antes de devolver una respuesta al usuario). Aunque ser \"reactivo\" en toda la pila te da el mejor rendimiento y utilizaci\u00f3n de recursos, puedes hacer que grandes partes de tu c\u00f3digo se ejecuten de forma as\u00edncrona y beneficiarte enormemente.<\/p>\n<h2>Ejecuci\u00f3n de consultas<\/h2>\n<p>Naturalmente, toda base de datos permite consultar sus documentos almacenados en funci\u00f3n de determinados criterios. La mayor\u00eda de las veces, se devolver\u00e1 m\u00e1s de un registro, a veces incluso miles en un solo lote. Una vez obtenidos los datos, a menudo es necesario modificar, combinar o filtrar el contenido en funci\u00f3n de los requisitos de la aplicaci\u00f3n.<\/p>\n<p>Consideremos el siguiente ejemplo: usted es un proveedor de telecomunicaciones y almacena registros de usuarios en su cubo. A final de mes quiere asegurarse de que todos los nuevos clientes que se han dado de alta este mes han recibido realmente su nuevo tel\u00e9fono. Su empresa de paqueter\u00eda contratada ofrece un servicio web en el que puede consultar el estado de la entrega.<\/p>\n<p>Esta es la implementaci\u00f3n simulada del proveedor:<\/p>\n<\/p>\n<p>Dado un UUID que representa el ID del paquete, devolvemos aleatoriamente si un paquete ya ha sido entregado o no.<\/p>\n<p>Este es el aspecto que podr\u00eda tener un registro de usuario:<\/p>\n<\/p>\n<p>Usamos N1QL para obtener todos los usuarios del \u00faltimo mes y luego pasamos el ID del paquete a nuestro proveedor. Aqu\u00ed est\u00e1 la versi\u00f3n sincr\u00f3nica:<\/p>\n<\/p>\n<p>Este c\u00f3digo no parece tan malo, \u00bfverdad? \u00bfY si te digo que tu proveedor de paquetes tiene un servidor web incre\u00edblemente malo que a veces devuelve las consultas en 10 segundos en lugar de en 500 milisegundos? Adem\u00e1s, perdemos la posibilidad de transmitir nuestros resultados y realizar acciones justo cuando llegan.<\/p>\n<p>Imaginemos que hemos tenido suerte y se han registrado 2000 nuevos clientes. Primero tenemos que esperar a que los 2000 usuarios sean consultados y luego tenemos que realizar 2000 consultas en serie contra el servidor web de nuestro proveedor de paquetes. Por supuesto, podemos enviarlas a un servicio ejecutor, pero entonces tendremos que realizar la orquestaci\u00f3n y la agregaci\u00f3n por nuestra cuenta.<\/p>\n<p>Podemos hacerlo mucho mejor con la versi\u00f3n reactiva:<\/p>\n<\/p>\n<p>Aqu\u00ed, estamos transmitiendo los resultados a medida que llegan desde el servidor. Una vez que tenemos un resultado, extraemos el ID del paquete y lo enviamos al servidor de paquetes. Una vez que llega una respuesta, la tomamos y la agrupamos por el estado de env\u00edo. Por \u00faltimo, aplicamos un buen formato y lo imprimimos. Como nunca bloqueamos, enviamos todas las solicitudes al servidor de paquetes y las agrupamos una vez que vuelven (en cualquier orden). Si algunas de las peticiones tardan m\u00e1s, no nos importa realmente porque podemos terminar de procesar las otras primero y no estamos atascados. Tambi\u00e9n podemos aplicar un tiempo de espera global.<\/p>\n<h2>Resumen<\/h2>\n<p>Estos dos ejemplos muestran claramente c\u00f3mo su aplicaci\u00f3n puede beneficiarse hoy de la ejecuci\u00f3n as\u00edncrona y reactiva. Proporciona un camino claro para alejarse de los controladores de bases de datos bloqueantes y acaparadores de recursos que ralentizan sus servidores de aplicaciones y sus tiempos de respuesta.<\/p>\n<p>Apenas hemos ara\u00f1ado la superficie de lo que es posible. Estamos trabajando en proyectos de ejemplo y documentaci\u00f3n ampliada para ofrecerte una gu\u00eda clara en esta nueva forma de escribir aplicaciones de acceso a bases de datos. H\u00e1ganos saber si desea ver su caso de uso cubierto y \/ o c\u00f3mo se puede transformar.<\/p>\n<p>Por \u00faltimo, de nuevo un r\u00e1pido recordatorio de que dentro de unos d\u00edas habr\u00e1 un <a href=\"https:\/\/www.couchbase.com\/blog\/es\/resources\/webinars\/\">seminario web<\/a> sobre el nuevo SDK de Java. \u00a1\u00danete, escucha la introducci\u00f3n y luego no dudes en hacer tus preguntas!<\/p>","protected":false},"excerpt":{"rendered":"<p>Since we&#039;ve announced that our new Java SDK is completely based on reactive and asynchronous components, our users keep asking what the benefits over their tried and true synchronous access patterns are. While very often &#8220;performance&#8221; is one of the [&hellip;]<\/p>","protected":false},"author":19,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1],"tags":[],"ppma_author":[8987],"class_list":["post-1858","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-uncategorized"],"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>Why you should care about reactive database access - The Couchbase Blog<\/title>\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\/why-you-should-care-about-reactive-database-access\/\" \/>\n<meta property=\"og:locale\" content=\"es_MX\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Why you should care about reactive database access\" \/>\n<meta property=\"og:description\" content=\"Since we&#039;ve announced that our new Java SDK is completely based on reactive and asynchronous components, our users keep asking what the benefits over their tried and true synchronous access patterns are. While very often &#8220;performance&#8221; is one of the [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/es\/why-you-should-care-about-reactive-database-access\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2015-01-13T16:15:31+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-28T06:06:05+00:00\" \/>\n<meta name=\"author\" content=\"Michael Nitschinger\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@daschl\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Michael Nitschinger\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/\"},\"author\":{\"name\":\"Michael Nitschinger\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d\"},\"headline\":\"Why you should care about reactive database access\",\"datePublished\":\"2015-01-13T16:15:31+00:00\",\"dateModified\":\"2023-06-28T06:06:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/\"},\"wordCount\":1250,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Uncategorized\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/\",\"name\":\"Why you should care about reactive database access - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2015-01-13T16:15:31+00:00\",\"dateModified\":\"2023-06-28T06:06:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Why you should care about reactive database access\"}]},{\"@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\/e5d4d332756da6f361dd88c1576de61d\",\"name\":\"Michael Nitschinger\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/95e178617974d46e3b02dd1754a3f60b\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g\",\"caption\":\"Michael Nitschinger\"},\"description\":\"Michael Nitschinger works as a Principal Software Engineer at Couchbase. He is the architect and maintainer of the Couchbase Java SDK, one of the first completely reactive database drivers on the JVM. He also authored and maintains the Couchbase Spark Connector. Michael is active in the open source community, a contributor to various other projects like RxJava and Netty.\",\"sameAs\":[\"https:\/\/nitschinger.at\",\"https:\/\/x.com\/daschl\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/es\/author\/michael-nitschinger\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Why you should care about reactive database access - The Couchbase Blog","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\/why-you-should-care-about-reactive-database-access\/","og_locale":"es_MX","og_type":"article","og_title":"Why you should care about reactive database access","og_description":"Since we&#039;ve announced that our new Java SDK is completely based on reactive and asynchronous components, our users keep asking what the benefits over their tried and true synchronous access patterns are. While very often &#8220;performance&#8221; is one of the [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/es\/why-you-should-care-about-reactive-database-access\/","og_site_name":"The Couchbase Blog","article_published_time":"2015-01-13T16:15:31+00:00","article_modified_time":"2023-06-28T06:06:05+00:00","author":"Michael Nitschinger","twitter_card":"summary_large_image","twitter_creator":"@daschl","twitter_misc":{"Written by":"Michael Nitschinger","Est. reading time":"6 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/"},"author":{"name":"Michael Nitschinger","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/e5d4d332756da6f361dd88c1576de61d"},"headline":"Why you should care about reactive database access","datePublished":"2015-01-13T16:15:31+00:00","dateModified":"2023-06-28T06:06:05+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/"},"wordCount":1250,"commentCount":1,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Uncategorized"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/","url":"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/","name":"Why you should care about reactive database access - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2015-01-13T16:15:31+00:00","dateModified":"2023-06-28T06:06:05+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Why you should care about reactive database access"}]},{"@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\/e5d4d332756da6f361dd88c1576de61d","name":"Michael Nitschinger","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/95e178617974d46e3b02dd1754a3f60b","url":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","caption":"Michael Nitschinger"},"description":"Michael Nitschinger trabaja como Ingeniero de Software Principal en Couchbase. Es el arquitecto y mantenedor del SDK Java de Couchbase, uno de los primeros controladores de bases de datos completamente reactivos en la JVM. Tambi\u00e9n es autor y mantiene el conector Spark de Couchbase. Michael participa activamente en la comunidad de c\u00f3digo abierto, contribuyendo a otros proyectos como RxJava y Netty.","sameAs":["https:\/\/nitschinger.at","https:\/\/x.com\/daschl"],"url":"https:\/\/www.couchbase.com\/blog\/es\/author\/michael-nitschinger\/"}]}},"authors":[{"term_id":8987,"user_id":19,"is_guest":0,"slug":"michael-nitschinger","display_name":"Michael Nitschinger","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/dad99b5e02a74ca4bec14352e9da710160647a97290814b669babb3aac0ea675?s=96&d=mm&r=g","first_name":"Michael","last_name":"Nitschinger, Principal Software Engineer, Couchbase","user_url":"https:\/\/nitschinger.at","author_category":"","description":"Michael Nitschinger trabaja como Ingeniero de Software Principal en Couchbase. Es el arquitecto y mantenedor del SDK Java de Couchbase, uno de los primeros controladores de bases de datos completamente reactivos en la JVM. Tambi\u00e9n es autor y mantiene el conector Spark de Couchbase. Michael participa activamente en la comunidad de c\u00f3digo abierto, contribuyendo a otros proyectos como RxJava y Netty."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1858","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\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/comments?post=1858"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/posts\/1858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/media?parent=1858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/categories?post=1858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/tags?post=1858"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/es\/wp-json\/wp\/v2\/ppma_author?post=1858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}