{"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\/pt\/why-you-should-care-about-reactive-database-access\/","title":{"rendered":"Por que voc\u00ea deve se preocupar com o acesso reativo ao banco de dados"},"content":{"rendered":"<p>Desde que anunciamos que nosso novo Java SDK \u00e9 totalmente baseado em componentes reativos e ass\u00edncronos, nossos usu\u00e1rios continuam perguntando quais s\u00e3o os benef\u00edcios em rela\u00e7\u00e3o aos padr\u00f5es de acesso s\u00edncronos testados e verdadeiros. Embora muitas vezes o \"desempenho\" seja um dos fatores determinantes, h\u00e1 muito mais a ser considerado. Al\u00e9m do tratamento de erros (que ser\u00e1 abordado em um post separado), os seguintes recursos se destacam:<\/p>\n<ol>\n<li>Cria\u00e7\u00e3o de fluxos de dados com fluxos de dados<\/li>\n<li>Melhor utiliza\u00e7\u00e3o de recursos sem dores de cabe\u00e7a<\/li>\n<\/ol>\n<p>O objetivo desta postagem do blog \u00e9 converter padr\u00f5es comuns de acesso a dados de s\u00edncronos para reativos e, como resultado, dar a voc\u00ea uma ideia do que \u00e9 poss\u00edvel com essa nova abordagem. N\u00e3o se preocupe se voc\u00ea nunca escreveu um c\u00f3digo \"reativo\" - voc\u00ea aprender\u00e1 algumas no\u00e7\u00f5es b\u00e1sicas ao longo do caminho. Al\u00e9m disso, lembre-se de que ainda oferecemos suporte a uma API s\u00edncrona. A API s\u00edncrona \u00e9 apenas um inv\u00f3lucro fino em torno da API reativa, permitindo que voc\u00ea migre gradualmente o seu aplicativo para uma abordagem mais avan\u00e7ada, sem precisar mergulhar de cabe\u00e7a imediatamente.<\/p>\n<p>Ah, e a prop\u00f3sito, temos um <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/resources\/webinars\/\">Webinar em breve<\/a> no dia 22 de janeiro, quando Simon Basle, um de nossos engenheiros de SDK, apresentar\u00e1 o novo Java SDK e tamb\u00e9m mostrar\u00e1 algumas das partes reativas. Junte-se a ele e fa\u00e7a perguntas!<\/p>\n<h2>O padr\u00e3o de pesquisa<\/h2>\n<p>Um padr\u00e3o muito comum ao acessar um banco de dados ou um armazenamento de chave\/valor \u00e9 o padr\u00e3o de pesquisa. Voc\u00ea carrega um documento e, com base no conte\u00fado do documento, carrega mais documentos. Vamos considerar o exemplo cl\u00e1ssico de \"postagem de blog e coment\u00e1rios\". Imagine que voc\u00ea tenha o seguinte post de blog armazenado no Couchbase:<\/p>\n<\/p>\n<p>Ele cont\u00e9m uma lista de IDs de coment\u00e1rios que podem ser usados para carregar os detalhes completos de cada conte\u00fado, conforme necess\u00e1rio. Um coment\u00e1rio pode ter a seguinte apar\u00eancia:<\/p>\n<\/p>\n<p>Agora, digamos que queremos carregar os dois primeiros coment\u00e1rios publicados quando a postagem do blog for carregada, para que sejam exibidos abaixo da postagem real. Esta \u00e9 uma maneira de conseguir isso com acesso s\u00edncrono e o novo SDK:<\/p>\n<\/p>\n<p>Deixando de lado o tratamento de erros, essa abordagem tem algumas desvantagens:<\/p>\n<ul>\n<li>Precisamos esperar pelo menos tr\u00eas vezes para que a rede responda, mantendo nosso thread ocioso enquanto ele poderia realizar um trabalho valioso.<\/li>\n<li>\u00c9 muito dif\u00edcil aplicar um tempo limite global a todo o processo, pois cada opera\u00e7\u00e3o tem um tempo limite individual.<\/li>\n<\/ul>\n<p>\u00a0<\/p>\n<p>Vamos converter isso em uma abordagem reativa, tamb\u00e9m usando lambdas do Java 8 (o Java 6\/7 tamb\u00e9m \u00e9 compat\u00edvel, basta usar classes an\u00f4nimas em vez de retornos de chamada):<\/p>\n<\/p>\n<p>Com base na nomenclatura dos operadores, fica bem claro o que est\u00e1 acontecendo. O c\u00f3digo carrega a publica\u00e7\u00e3o do blog. Quando chega, ele extrai a lista de IDs de coment\u00e1rios e a passa para o pr\u00f3ximo m\u00e9todo, que de fato carrega os documentos de coment\u00e1rios. O m\u00e9todo de filtro deixa passar apenas os coment\u00e1rios que foram publicados. Depois disso, pegamos apenas os dois primeiros coment\u00e1rios e cancelamos a assinatura para evitar mais trabalho (como carregar mais documentos, quando j\u00e1 temos o suficiente). Por fim, agregamos todos os coment\u00e1rios encontrados em uma lista, aplicamos um tempo limite global e, em seguida, bloqueamos.<\/p>\n<p>Esse c\u00f3digo \"se expande\" para carregar todos os coment\u00e1rios necess\u00e1rios em paralelo, atingindo mais n\u00f3s no cluster ao mesmo tempo e, consequentemente, retornando os resultados desejados mais rapidamente. Al\u00e9m disso, o c\u00f3digo aplica um tempo limite global a toda a \"opera\u00e7\u00e3o\", o que \u00e9 muito dif\u00edcil de acertar com o c\u00f3digo s\u00edncrono. Por fim, todo o c\u00f3digo pode ser composto. Voc\u00ea pode encapsular a l\u00f3gica em um m\u00e9todo sem aplicar um tempo limite ou especificar a quantidade de coment\u00e1rios a serem feitos. A camada superior pode ent\u00e3o encadear os operadores necess\u00e1rios para executar o trabalho conforme desejado.<\/p>\n<p>Al\u00e9m disso, voc\u00ea pode ver que \u00e9 muito f\u00e1cil passar do conceito mais avan\u00e7ado (ass\u00edncrono, reativo) para o menos avan\u00e7ado (sincroniza\u00e7\u00e3o). O contr\u00e1rio n\u00e3o \u00e9 poss\u00edvel.<\/p>\n<p>Observe que ainda bloqueamos bem no final, e n\u00e3o h\u00e1 problema nisso. A maioria dos aplicativos bloquear\u00e1 em algum momento (talvez at\u00e9 mesmo logo antes de retornar uma resposta ao usu\u00e1rio). Embora a ado\u00e7\u00e3o de uma pilha completa \"reativa\" proporcione o melhor desempenho e a melhor utiliza\u00e7\u00e3o de recursos, voc\u00ea ainda pode fazer com que partes maiores do seu c\u00f3digo sejam executadas de forma ass\u00edncrona e se beneficiar enormemente.<\/p>\n<h2>Execu\u00e7\u00e3o de consultas<\/h2>\n<p>Naturalmente, todo banco de dados permite que voc\u00ea consulte seus documentos armazenados com base em alguns crit\u00e9rios. Na maioria das vezes, mais de um registro ser\u00e1 retornado, \u00e0s vezes at\u00e9 milhares em um \u00fanico lote. Depois que os dados s\u00e3o retornados, muitas vezes voc\u00ea tamb\u00e9m precisa modificar, combinar ou filtrar o conte\u00fado com base nos requisitos do seu aplicativo.<\/p>\n<p>Vamos considerar o seguinte exemplo: voc\u00ea \u00e9 um provedor de telecomunica\u00e7\u00f5es e est\u00e1 armazenando registros de usu\u00e1rios em seu bucket. No final do m\u00eas, voc\u00ea quer ter certeza de que todos os seus novos clientes que se inscreveram neste m\u00eas realmente receberam o novo telefone. Sua empresa de transporte de encomendas contratada fornece um servi\u00e7o da Web em que voc\u00ea pode consultar o status da entrega.<\/p>\n<p>Aqui est\u00e1 a implementa\u00e7\u00e3o simulada do provedor:<\/p>\n<\/p>\n<p>Dado um UUID que representa o ID do pacote, retornamos aleatoriamente se um pacote j\u00e1 foi entregue ou n\u00e3o.<\/p>\n<p>Veja como pode ser um registro de usu\u00e1rio:<\/p>\n<\/p>\n<p>Usamos o N1QL para obter todos os usu\u00e1rios no \u00faltimo m\u00eas e, em seguida, passamos o ID do pacote para o nosso provedor. Aqui est\u00e1 a vers\u00e3o s\u00edncrona:<\/p>\n<\/p>\n<p>Esse c\u00f3digo n\u00e3o parece t\u00e3o ruim, certo? E se eu lhe disser que seu provedor de encomendas tem um servidor da Web incrivelmente ruim que, \u00e0s vezes, retorna consultas em 10 segundos em vez de 500 milissegundos? Al\u00e9m disso, perdemos a possibilidade de transmitir nossos resultados e executar a\u00e7\u00f5es assim que eles chegam.<\/p>\n<p>Imagine que tivemos sorte e 2000 novos clientes se inscreveram. Primeiro, precisamos esperar at\u00e9 que os 2.000 usu\u00e1rios sejam consultados e, em seguida, precisamos executar 2.000 consultas em s\u00e9rie no servidor da Web do nosso provedor de encomendas. \u00c9 claro que podemos distribu\u00ed-las para um servi\u00e7o executor, mas depois precisamos fazer a orquestra\u00e7\u00e3o e a agrega\u00e7\u00e3o por conta pr\u00f3pria.<\/p>\n<p>Podemos fazer muito melhor com a vers\u00e3o reativa:<\/p>\n<\/p>\n<p>Aqui, estamos transmitindo os resultados \u00e0 medida que eles chegam do servidor. Quando temos um resultado, extra\u00edmos o ID do pacote e o enviamos para o servidor de pacotes. Quando a resposta chega, n\u00f3s a pegamos e a agrupamos pelo estado de envio. Por fim, aplicamos uma boa formata\u00e7\u00e3o e imprimimos o resultado. Como nunca bloqueamos, enviamos todas as solicita\u00e7\u00f5es para o servidor de encomendas e as agrupamos assim que elas retornam (em qualquer ordem). Se algumas das solicita\u00e7\u00f5es demorarem mais, n\u00e3o nos importamos, pois podemos terminar de processar as outras primeiro e n\u00e3o ficaremos presos. Tamb\u00e9m podemos aplicar um tempo limite geral.<\/p>\n<h2>Resumo<\/h2>\n<p>Esses dois exemplos mostram claramente como seu aplicativo pode se beneficiar da execu\u00e7\u00e3o ass\u00edncrona e reativa. Ele oferece um caminho claro para evitar o bloqueio e os drivers de banco de dados que consomem muitos recursos e deixam os servidores de aplicativos e os tempos de resposta mais lentos.<\/p>\n<p>N\u00f3s mal arranhamos a superf\u00edcie do que \u00e9 poss\u00edvel. Estamos trabalhando em projetos de exemplo e em documenta\u00e7\u00e3o ampliada para oferecer a voc\u00ea um caminho claro de orienta\u00e7\u00e3o nessa nova maneira de escrever aplicativos de acesso a bancos de dados. Informe-nos se deseja ver seu caso de uso abordado e\/ou como ele pode ser transformado.<\/p>\n<p>Por fim, mais uma vez um lembrete r\u00e1pido de que, em alguns dias, haver\u00e1 um <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/resources\/webinars\/\">webinar<\/a> sobre o novo Java SDK. Participe, ou\u00e7a a introdu\u00e7\u00e3o e depois n\u00e3o hesite em fazer suas perguntas!<\/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.9 (Yoast SEO v25.9) - 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\/pt\/why-you-should-care-about-reactive-database-access\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\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\/pt\/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\":\"pt-BR\",\"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\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\",\"name\":\"The Couchbase Blog\",\"url\":\"https:\/\/www.couchbase.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@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\":\"pt-BR\",\"@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\/pt\/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\/pt\/why-you-should-care-about-reactive-database-access\/","og_locale":"pt_BR","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\/pt\/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":"pt-BR","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":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/why-you-should-care-about-reactive-database-access\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@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":"Blog do Couchbase","description":"Couchbase, o banco de dados 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":"pt-BR"},{"@type":"Organization","@id":"https:\/\/www.couchbase.com\/blog\/#organization","name":"Blog do Couchbase","url":"https:\/\/www.couchbase.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@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":"pt-BR","@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 trabalha como engenheiro de software principal na Couchbase. Ele \u00e9 o arquiteto e mantenedor do Couchbase Java SDK, um dos primeiros drivers de banco de dados totalmente reativos na JVM. Ele tamb\u00e9m \u00e9 o autor e mantenedor do Couchbase Spark Connector. Michael participa ativamente da comunidade de c\u00f3digo aberto e contribui para v\u00e1rios outros projetos, como RxJava e Netty.","sameAs":["https:\/\/nitschinger.at","https:\/\/x.com\/daschl"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/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","author_category":"","last_name":"Nitschinger, Principal Software Engineer, Couchbase","first_name":"Michael","job_title":"","user_url":"https:\/\/nitschinger.at","description":"Michael Nitschinger trabalha como engenheiro de software principal na Couchbase. Ele \u00e9 o arquiteto e mantenedor do Couchbase Java SDK, um dos primeiros drivers de banco de dados totalmente reativos na JVM. Ele tamb\u00e9m \u00e9 o autor e mantenedor do Couchbase Spark Connector. Michael participa ativamente da comunidade de c\u00f3digo aberto e contribui para v\u00e1rios outros projetos, como RxJava e Netty."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1858","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/users\/19"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1858"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1858\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=1858"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1858"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1858"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1858"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}