{"id":10560,"date":"2021-02-02T05:16:15","date_gmt":"2021-02-02T13:16:15","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=10560"},"modified":"2024-09-12T02:01:51","modified_gmt":"2024-09-12T09:01:51","slug":"recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/","title":{"rendered":"Temporizadores recursivos para agrega\u00e7\u00e3o de documentos e menor TCO com o Couchbase Server 6.6"},"content":{"rendered":"<h2>Onde isso come\u00e7a...<\/h2>\n<p>IOT, dispositivos de borda e NoSQL s\u00e3o tecnologias que ganharam popularidade nos \u00faltimos anos. Permitem que as pessoas criem confortavelmente aplicativos pesados de intera\u00e7\u00e3o, sem a preocupa\u00e7\u00e3o com a estabilidade e a disponibilidade. Um problema com a liberdade e a flexibilidade dessas novas tecnologias \u00e9 manter o custo. Agregar documentos e reduzir o espa\u00e7o ocupado pelos dados \u00e9 um caso de uso comum para aplicativos anal\u00edticos e de grava\u00e7\u00e3o pesada. O Couchbase 6.6 nos fornece ainda mais ferramentas para ajud\u00e1-lo a reduzir seu TCO. Vamos analisar onde o problema come\u00e7ou e como podemos usar o conjunto de ferramentas do Couchbase para resolv\u00ea-lo.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-10567 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2021\/02\/CostReduction-300x175.png\" alt=\"\" width=\"300\" height=\"175\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/CostReduction-300x175.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/CostReduction-768x448.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/CostReduction-20x12.png 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/CostReduction.png 1000w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h2>Aplicativos e intera\u00e7\u00f5es<\/h2>\n<p>Lembro-me da \u00e9poca em que os aplicativos costumavam ser simples, quando se propunham a atingir um objetivo simples. Por exemplo, um aplicativo de varejo que permitisse que o processo de compras fosse disponibilizado digitalmente, evitando que as pessoas tivessem que se deslocar at\u00e9 o varejista local para realizar a mesma tarefa. Filmes e m\u00fasicas sendo disponibilizados com o clique de um bot\u00e3o, em vez de ter que comprar CDs ou DVDs em uma loja de m\u00eddia. A transforma\u00e7\u00e3o digital inicial de quase tudo foi um grande salto na conveni\u00eancia do consumidor e devolveu mais tempo a todos, e por um tempo essa mudan\u00e7a foi suficiente para nos manter felizes. Quaisquer problemas t\u00e9cnicos pareciam menores porque eram ofuscados pela quantidade de conveni\u00eancia que isso proporcionava.<\/p>\n<p>No entanto, hoje em dia, um novo varejista que \"se torna digital\" n\u00e3o \u00e9 motivo de alarde, pois essas expectativas j\u00e1 existem; o que os consumidores agora se preocupam \u00e9 com as pequenas coisas que antes eram desconsideradas. Essas quest\u00f5es t\u00e9cnicas, que antes eram de menor import\u00e2ncia, agora ser\u00e3o o \"ponto de partida ou de chegada\" de qualquer aplicativo bem-sucedido. \u00c0 medida que a transforma\u00e7\u00e3o digital se incorpora \u00e0s atividades cotidianas das empresas, as expectativas em rela\u00e7\u00e3o a esses aplicativos e sistemas aumentaram e continuar\u00e3o a aumentar.<\/p>\n<p>&nbsp;<\/p>\n<h2>Bancos de dados<\/h2>\n<p>\u00c0 medida que desenvolvemos software para atender a essa alta expectativa de experi\u00eancia do usu\u00e1rio, proporcionamos mais intera\u00e7\u00e3o entre o usu\u00e1rio final e o aplicativo. Aplicativos mais complexos v\u00eam acompanhados de mais intera\u00e7\u00f5es. Esse n\u00famero cada vez maior de intera\u00e7\u00f5es precisar\u00e1 de uma quantidade cada vez maior de armazenamento para registr\u00e1-las, e \u00e9 nesse ponto que o nosso banco de dados se encaixa.<\/p>\n<p>Assim como os pr\u00f3prios aplicativos, houve um tempo em que os bancos de dados relacionais eram perfeitos para armazenar as informa\u00e7\u00f5es de praticamente todos os sistemas, e isso nos satisfazia. Entretanto, assim como as expectativas da experi\u00eancia do usu\u00e1rio come\u00e7aram a aumentar, o mesmo aconteceu com as expectativas do banco de dados subjacente. Agora estamos armazenando uma quantidade exponencial de dados com o passar do tempo e come\u00e7amos a ver onde o banco de dados relacional tinha suas falhas. Mais dados significam mais armazenamento e, essencialmente, \"mais banco de dados\". Aqueles que est\u00e3o familiarizados com bancos de dados relacionais sabem que isso n\u00e3o \u00e9 t\u00e3o simples quanto digitar ++. Para come\u00e7ar, fazer qualquer ajuste em um banco de dados relacional geralmente implicaria em tempo de inatividade, e esse tempo de inatividade no mundo de hoje n\u00e3o \u00e9 mais aceit\u00e1vel. O escalonamento dos n\u00f3s relacionais n\u00e3o \u00e9 f\u00e1cil de ser feito e, portanto, ficamos limitados ao escalonamento vertical, o problema \u00e9 que o escalonamento vertical tornou-se caro e tamb\u00e9m tem suas pr\u00f3prias limita\u00e7\u00f5es. Tamb\u00e9m seria de se esperar um aumento linear do desempenho, considerando o aumento da capacidade de computa\u00e7\u00e3o e do armazenamento dimensionado; no entanto, esse n\u00e3o \u00e9 o caso. Al\u00e9m disso, a abordagem de esquema imposto significava que a arquitetura geral era r\u00edgida, o que dificultava qualquer altera\u00e7\u00e3o no conjunto de dados subjacente. De modo geral, o TCO dos sistemas relacionais era insustent\u00e1vel e, em um mundo em que a tecnologia est\u00e1 mudando cada vez mais r\u00e1pido, \u00e9 poss\u00edvel ver por que o banco de dados relacional precisava ser substitu\u00eddo para esses aplicativos altamente interativos.<\/p>\n<p>A ideia das tecnologias NoSQL come\u00e7ou a surgir. O NoSQL incorporou uma abordagem distribu\u00edda, escal\u00e1vel e sem esquema para armazenar suas informa\u00e7\u00f5es. Ele possibilitava dimensionar o banco de dados tanto para fora quanto para cima sem a necessidade de tempo de inatividade. N\u00e3o havia restri\u00e7\u00f5es quanto ao conjunto de dados, o que permitia um desenvolvimento r\u00e1pido e flex\u00edvel. O TCO geral desses bancos de dados \u00e9 muito menor e de f\u00e1cil manuten\u00e7\u00e3o, o que \u00e9 adequado para os aplicativos que exigem esse alto n\u00edvel de intera\u00e7\u00e3o.<\/p>\n<p>&nbsp;<\/p>\n<h2>Dispositivos IOT e de borda<\/h2>\n<p>Uma introdu\u00e7\u00e3o importante no mundo do software foi o s\u00fabito boom da IOT e dos dispositivos de borda. Esses dispositivos normalmente consistem em uma combina\u00e7\u00e3o de hardware e software menores e podem atuar como pontos de entrada para a pilha de tecnologia subjacente. Um exemplo importante desses dispositivos \u00e9 o uso de sensores e a capacidade de registrar continuamente dados que podem ser alimentados no banco de dados. Os bancos de dados NoSQL permitiram que esses dispositivos se multiplicassem e crescessem sem a preocupa\u00e7\u00e3o com o dimensionamento, a rigidez e a alta disponibilidade, que um modelo relacional teria dificuldade em oferecer. Em muitos desses casos, o aplicativo abrangeria um alto n\u00edvel de opera\u00e7\u00f5es de grava\u00e7\u00e3o e as informa\u00e7\u00f5es seriam analisadas em um est\u00e1gio posterior.<\/p>\n<p>&nbsp;<\/p>\n<h2>Caso de uso<\/h2>\n<p>Agora, embora a capacidade de escalonar confortavelmente seja um suspiro de al\u00edvio para a maioria dos DBAs, rapidamente nos deparamos com um problema comum que todos est\u00e3o tentando resolver: o aumento do custo. A flexibilidade e a liberdade de armazenar a maior quantidade poss\u00edvel de dados tamb\u00e9m t\u00eam suas desvantagens e, como resultado, o tamanho desses clusters pode ficar rapidamente fora de controle.<\/p>\n<p>Se considerarmos uma equipe de corrida de F\u00f3rmula 1 durante uma corrida, por exemplo, ela poderia ter sensores embutidos no carro registrando estat\u00edsticas at\u00e9 o mil\u00e9simo de segundo, poderia ter centenas ou at\u00e9 milhares desses sensores ao redor do carro durante cada corrida. Embora as leituras individuais sejam pequenas, o n\u00famero total de documentos que est\u00e3o sendo armazenados ser\u00e1 da ordem de milh\u00f5es, e eu estou sendo conservador! Quando tiverem todos esses dados, eles precisar\u00e3o executar an\u00e1lises quase em tempo real. O resultado dessas an\u00e1lises permitir\u00e1 que a equipe fa\u00e7a ajustes durante a corrida e melhore \u00e0 medida que avan\u00e7a. O problema n\u00e3o surge em nenhum dos cen\u00e1rios acima, mas quando voc\u00ea observa o cluster que d\u00e1 suporte a isso, pode ver como a quantidade de dados e o TCO desse banco de dados podem ficar rapidamente fora de controle. No entanto, para essa equipe de F\u00f3rmula 1, acontece que, depois de 15 minutos, a granularidade das leituras do sensor em milissegundos n\u00e3o \u00e9 mais t\u00e3o necess\u00e1ria e, em vez disso, eles ficam satisfeitos em armazenar m\u00e9dias por segundo; depois de uma hora, eles ficam satisfeitos em armazenar m\u00e9dias por minuto, e esse processo pode ser repetido quantas vezes for necess\u00e1rio.<\/p>\n<p>Por exemplo, se analisarmos um conjunto de documentos que cont\u00e9m v\u00e1rias leituras de temperatura e press\u00e3o, poderemos obter um conjunto de documentos com a seguinte apar\u00eancia<\/p>\n<pre class=\"lang:default decode:true\">key = \"sensor::temp-press::2020-01-02T12:34:01\"\r\n{\r\n  \"ts\": \"2020-01-02 12:34:01\",\r\n  \"sensor\": \"tps-001\",\r\n  \"temperature\": 110.8,\r\n  \"pressure\": 21.2\r\n}\r\n\r\n...\r\n\r\nkey = \"sensor::temp-press::2020-01-02T12:34:58\"\r\n{\r\n  \"ts\": \"2020-01-02 12:34:58\",\r\n  \"sensor\": \"tps-001\",\r\n  \"temperature\": 112.7,\r\n  \"pressure\": 21.6\r\n}\r\n\r\nkey = \"sensor::temp-press::2020-01-02T12:34:59\"\r\n{\r\n  \"ts\": \"2020-01-02 12:34:59\",\r\n  \"sensor\": \"tps-001\",\r\n  \"temperature\": 113.1,\r\n  \"pressure\": 22.5<\/pre>\n<p>Para reduzir o conjunto de dados e compactar as informa\u00e7\u00f5es que temos, podemos agregar os resultados em matrizes de documentos muito menores<\/p>\n<pre class=\"lang:default decode:true\">key = \"sensor::tps-001::2020-01-02T12:34\"\r\n{\r\n  \"values\":\r\n  {\r\n    \"t\": [110.8, ... 112.7, 113.1],\r\n    \"p\": [21.2, ... 21.6, 22.5]\r\n  },\r\n  \"type\": \"temp-press\"\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<p>O Couchbase introduziu o servi\u00e7o de eventos na vers\u00e3o 5.5, que permite que os aplicativos atuem sobre os dados subjacentes no sistema, com l\u00f3gica de programa\u00e7\u00e3o JavaScript. H\u00e1 uma ferramenta \u00fatil no eventing chamada timers que pode atrasar a execu\u00e7\u00e3o da l\u00f3gica. Para a equipe de F\u00f3rmula 1, eles poderiam utilizar esses temporizadores e chamar repetidamente as fun\u00e7\u00f5es de eventos para agregar os documentos em um determinado per\u00edodo de tempo; no entanto, antes da vers\u00e3o 6.6, isso se tornou dif\u00edcil de repetir. Muitos dos meus clientes utilizaram os cron jobs do Linux para agendar essas tarefas e permitir que as fun\u00e7\u00f5es de eventos fossem executadas em intervalos regulares, acionando-as por meio de chamadas externas \u00e0 API REST.<\/p>\n<p>A vers\u00e3o 6.6 do Couchbase introduziu o cron\u00f4metro recursivo. Permitindo que os usu\u00e1rios criem temporizadores dentro da chamada de retorno de outro temporizador. No ponto de execu\u00e7\u00e3o, a l\u00f3gica agregaria os documentos dentro de um determinado per\u00edodo de tempo e, antes de sair, acionaria outro cron\u00f4metro para repetir o processo ap\u00f3s um per\u00edodo de tempo.<\/p>\n<p>Embora o recurso pare\u00e7a trivial, ele simplifica muito o processo de recurs\u00e3o e elimina a necessidade de utilizar tecnologias externas para realizar algo que poderia ser feito internamente.<\/p>\n<p>Portanto, talvez voc\u00ea n\u00e3o sinta a necessidade de agrega\u00e7\u00e3o de documentos quando estiver come\u00e7ando a usar um banco de dados NoSQL. Para casos de uso pesado de grava\u00e7\u00e3o ou mesmo apenas quando o TCO geral come\u00e7ar a aumentar, voc\u00ea procurar\u00e1 todas as ideias e respostas que puder encontrar para ajudar a reduzir a quantidade de dados que est\u00e1 armazenando.<\/p>","protected":false},"excerpt":{"rendered":"<p>Where does it begin&#8230; IOT, Edge devices and NoSQL are all technologies that have increased in popularity in recent years. Allowing people to comfortably create interaction heavy applications, without the worry of stability and availability. One problem with the freedom [&hellip;]<\/p>","protected":false},"author":74466,"featured_media":10566,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,1819,7666,2273],"tags":[],"ppma_author":[9167],"class_list":["post-10560","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-data-modeling","category-edge-computing","category-eventing"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.0 (Yoast SEO v26.0) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Recursive Timers for Document Aggregation and Lower TCO with Couchbase Server 6.6 - 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\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Recursive Timers for Document Aggregation and Lower TCO with Couchbase Server 6.6\" \/>\n<meta property=\"og:description\" content=\"Where does it begin&#8230; IOT, Edge devices and NoSQL are all technologies that have increased in popularity in recent years. Allowing people to comfortably create interaction heavy applications, without the worry of stability and availability. One problem with the freedom [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-02T13:16:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-09-12T09:01:51+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/Documents-Aggregation.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1280\" \/>\n\t<meta property=\"og:image:height\" content=\"720\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Daniel Bull, Associate Solutions 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=\"Daniel Bull, Associate Solutions Engineer\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/\"},\"author\":{\"name\":\"Daniel Bull, Associate Solutions Engineer\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7f9d5e0c7963a172db12fb5e5e2583e1\"},\"headline\":\"Recursive Timers for Document Aggregation and Lower TCO with Couchbase Server 6.6\",\"datePublished\":\"2021-02-02T13:16:15+00:00\",\"dateModified\":\"2024-09-12T09:01:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/\"},\"wordCount\":1389,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/Documents-Aggregation.jpg\",\"articleSection\":[\"Couchbase Server\",\"Data Modeling\",\"Edge computing\",\"Eventing\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/\",\"name\":\"Recursive Timers for Document Aggregation and Lower TCO with Couchbase Server 6.6 - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/Documents-Aggregation.jpg\",\"datePublished\":\"2021-02-02T13:16:15+00:00\",\"dateModified\":\"2024-09-12T09:01:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/Documents-Aggregation.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/Documents-Aggregation.jpg\",\"width\":1280,\"height\":720},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Recursive Timers for Document Aggregation and Lower TCO with Couchbase Server 6.6\"}]},{\"@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\/7f9d5e0c7963a172db12fb5e5e2583e1\",\"name\":\"Daniel Bull, Associate Solutions Engineer\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/1a793e281f03204d89cd07cc2163a58e\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/daniel-bull-couchbase-engineering.jpeg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/daniel-bull-couchbase-engineering.jpeg\",\"caption\":\"Daniel Bull, Associate Solutions Engineer\"},\"description\":\"Daniel Bull is an Associate Solutions Engineer at Couchbase\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/daniel-bull-00a102b5\/\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/daniel-bull\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Recursive Timers for Document Aggregation and Lower TCO with Couchbase Server 6.6 - 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\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/","og_locale":"pt_BR","og_type":"article","og_title":"Recursive Timers for Document Aggregation and Lower TCO with Couchbase Server 6.6","og_description":"Where does it begin&#8230; IOT, Edge devices and NoSQL are all technologies that have increased in popularity in recent years. Allowing people to comfortably create interaction heavy applications, without the worry of stability and availability. One problem with the freedom [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/","og_site_name":"The Couchbase Blog","article_published_time":"2021-02-02T13:16:15+00:00","article_modified_time":"2024-09-12T09:01:51+00:00","og_image":[{"width":1280,"height":720,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/Documents-Aggregation.jpg","type":"image\/jpeg"}],"author":"Daniel Bull, Associate Solutions Engineer","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Daniel Bull, Associate Solutions Engineer","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/"},"author":{"name":"Daniel Bull, Associate Solutions Engineer","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/7f9d5e0c7963a172db12fb5e5e2583e1"},"headline":"Recursive Timers for Document Aggregation and Lower TCO with Couchbase Server 6.6","datePublished":"2021-02-02T13:16:15+00:00","dateModified":"2024-09-12T09:01:51+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/"},"wordCount":1389,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/Documents-Aggregation.jpg","articleSection":["Couchbase Server","Data Modeling","Edge computing","Eventing"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/","url":"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/","name":"Recursive Timers for Document Aggregation and Lower TCO with Couchbase Server 6.6 - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/Documents-Aggregation.jpg","datePublished":"2021-02-02T13:16:15+00:00","dateModified":"2024-09-12T09:01:51+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/Documents-Aggregation.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/02\/Documents-Aggregation.jpg","width":1280,"height":720},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/recursive-timers-for-document-aggregation-and-lower-tco-with-couchbase-server-6-6\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Recursive Timers for Document Aggregation and Lower TCO with Couchbase Server 6.6"}]},{"@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\/7f9d5e0c7963a172db12fb5e5e2583e1","name":"Daniel Bull, engenheiro de solu\u00e7\u00f5es associado","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/1a793e281f03204d89cd07cc2163a58e","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/daniel-bull-couchbase-engineering.jpeg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/daniel-bull-couchbase-engineering.jpeg","caption":"Daniel Bull, Associate Solutions Engineer"},"description":"Daniel Bull \u00e9 engenheiro de solu\u00e7\u00f5es associado da Couchbase","sameAs":["https:\/\/www.linkedin.com\/in\/daniel-bull-00a102b5\/"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/daniel-bull\/"}]}},"authors":[{"term_id":9167,"user_id":74466,"is_guest":0,"slug":"daniel-bull","display_name":"Daniel Bull, Associate Solutions Engineer","avatar_url":{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/daniel-bull-couchbase-engineering.jpeg","url2x":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2021\/07\/daniel-bull-couchbase-engineering.jpeg"},"author_category":"","last_name":"Bull","first_name":"Daniel","job_title":"","user_url":"","description":"Daniel Bull \u00e9 engenheiro de solu\u00e7\u00f5es associado da Couchbase"}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/10560","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\/74466"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=10560"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/10560\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/10566"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=10560"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=10560"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=10560"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=10560"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}