{"id":15505,"date":"2024-03-25T12:10:35","date_gmt":"2024-03-25T19:10:35","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=15505"},"modified":"2025-06-13T16:37:01","modified_gmt":"2025-06-13T23:37:01","slug":"couchbase-server-7-6-top-developer-features","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-server-7-6-top-developer-features\/","title":{"rendered":"Principais recursos novos do Couchbase Server 7.6 para desenvolvedores"},"content":{"rendered":"<p><span style=\"font-weight: 400\">\u00c9 com grande satisfa\u00e7\u00e3o que anunciamos o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/announcing-vector-search\/\">lan\u00e7amento do Couchbase 7.6<\/a>uma atualiza\u00e7\u00e3o inovadora, pronta para redefinir o cen\u00e1rio da tecnologia de banco de dados. Esta \u00faltima vers\u00e3o \u00e9 uma prova do nosso compromisso com o aprimoramento da tecnologia de banco de dados, com um salto significativo na integra\u00e7\u00e3o de IA e aprendizado de m\u00e1quina com o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/vector-search\/\">Pesquisa de vetores<\/a>A integra\u00e7\u00e3o com o LangChain permite que os desenvolvedores criem aplicativos mais inteligentes e responsivos.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">A chave para esta vers\u00e3o \u00e9 a introdu\u00e7\u00e3o de recursos avan\u00e7ados de Graph Traversal, abrindo novos caminhos para relacionamentos de dados complexos e an\u00e1lise de rede. Aprimorando a efici\u00eancia do desenvolvedor e integrando perfeitamente os casos de uso de RDBMS com a agilidade e o dimensionamento do NoSQL.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Juntamente com essas inova\u00e7\u00f5es, nos concentramos em elevar a experi\u00eancia do usu\u00e1rio com o monitoramento aprimorado do desempenho de consultas e pesquisas, garantindo efici\u00eancia e capacidade de resposta ideais em opera\u00e7\u00f5es de dados em tempo real.  Esta vers\u00e3o tamb\u00e9m expande nossos recursos de BI com ferramentas de visualiza\u00e7\u00e3o de BI enriquecidas, permitindo insights de dados mais profundos e an\u00e1lises mais poderosas.\u00a0<\/span><\/p>\n<p><strong>O Couchbase 7.6 n\u00e3o \u00e9 apenas uma atualiza\u00e7\u00e3o; \u00e9 uma transforma\u00e7\u00e3o, fornecendo as ferramentas e os recursos de que os desenvolvedores, SREs e cientistas de dados precisam para impulsionar o futuro da tecnologia de banco de dados. Aqui est\u00e3o alguns deles.<\/strong><\/p>\n<hr \/>\n<h2><span style=\"font-weight: 400\">Integra\u00e7\u00e3o de IA\u00a0<\/span><\/h2>\n<h3><span style=\"font-weight: 400\">Pesquisa de vetores<\/span><\/h3>\n<p><span style=\"font-weight: 400\">O Couchbase apresenta um novo recurso de pesquisa vetorial com a vers\u00e3o 7.6, um aprimoramento significativo dos nossos recursos de pesquisa que se alinha \u00e0s demandas tecnol\u00f3gicas em evolu\u00e7\u00e3o dos aplicativos modernos. \u00c0 medida que a complexidade dos dados aumenta, a necessidade de mecanismos de pesquisa avan\u00e7ados torna-se cr\u00edtica. O Vector Search oferece uma solu\u00e7\u00e3o, permitindo que os desenvolvedores implementem a pesquisa sem\u00e2ntica, enrique\u00e7am os modelos de aprendizado de m\u00e1quina e ofere\u00e7am suporte a aplicativos de IA diretamente no ambiente do Couchbase.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Com a pesquisa vetorial, a pesquisa vai al\u00e9m da correspond\u00eancia de palavras-chave ou da pesquisa de frequ\u00eancia de termos. Ela permite que a pesquisa se baseie no significado sem\u00e2ntico, no contexto em que \u00e9 usada nas consultas. De fato, ela captura a inten\u00e7\u00e3o das consultas, fornecendo resultados mais relevantes mesmo quando palavras-chave ou termos exatos n\u00e3o est\u00e3o presentes no conte\u00fado.\u00a0<\/span><\/p>\n<p><i><span style=\"font-weight: 400\">Para obter mais informa\u00e7\u00f5es, consulte o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/products\/vector-search\/\">Documenta\u00e7\u00e3o do Couchbase<\/a>.<\/span><\/i><\/p>\n<h3><span style=\"font-weight: 400\">Pesquisa vetorial com SQL++<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Voc\u00ea pode usar os recursos de banco de dados NoSQL do Couchbase para armazenar qualquer conte\u00fado, como perfis de usu\u00e1rio, dados hist\u00f3ricos de intera\u00e7\u00e3o ou metadados de conte\u00fado. Em seguida, use um modelo de aprendizado de m\u00e1quina, como o OpenAI, para gerar os embeddings. O Couchbase Vector Search pode ent\u00e3o indexar os embeddings e fornecer pesquisa sem\u00e2ntica e h\u00edbrida.\u00a0<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-25_121858091.png\"><img loading=\"lazy\" decoding=\"async\" class=\"size-large wp-image-15509 alignnone\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-25_121858091-1024x711.png\" alt=\"Hybrid vector search with OpenAI embeddings in Couchbase\" width=\"900\" height=\"625\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_121858091-1024x711.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_121858091-300x208.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_121858091-768x534.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_121858091-1536x1067.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_121858091-2048x1423.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_121858091-1320x917.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">Voc\u00ea tamb\u00e9m pode usar o SQL++ para executar a pesquisa vetorial diretamente e combinar os predicados de pesquisa com a flexibilidade do Couchbase SQL++ para pesquisa h\u00edbrida:<\/span><\/p>\n<pre class=\"nums:false lang:default decode:true\">SELECT b.book_name, b.categories, b.summaries\r\nFROM `books` AS b\r\nWHERE SEARCH(b, { \/* chamando Couchbase SEARCH() *\/\r\n    \"query\": {\"match_none\": {} },\r\n    \"knn\": [{\"field\": \"embedding\",\r\n              \"vector\": [ -0.014143292,-0.005013913,..],\r\n\r\n              \"k\": 3\r\n          }],\r\n    \"fields\": [\"book_name\", \"summaries\"],\r\n    \"sort\": [\"-_score\"],\r\n    \"limit\": 5\r\n\r\n    })\r\n\r\n    AND b.catogories='N\u00e3o fic\u00e7\u00e3o';<\/pre>\n<p><span style=\"font-weight: 400\">Por que n\u00e3o queremos adicionar uma se\u00e7\u00e3o sobre como obter os embeddings para a consulta acima? O motivo \u00e9 que, para fazer isso em um UDF, seria necess\u00e1rio que o UDF\/JS suportasse CURL, algo que n\u00e3o \u00e9 suportado no Capella.  Os usu\u00e1rios podem obter os embeddings em sua camada de aplicativo.<\/span><\/p>\n<h2><span style=\"font-weight: 400\">CTE recursivo<\/span><\/h2>\n<h3><span style=\"font-weight: 400\">Travessia de gr\u00e1fico<\/span><\/h3>\n<p><span style=\"font-weight: 400\">A introdu\u00e7\u00e3o do CTE recursivo nos recursos do Couchbase SQL++ significa que agora voc\u00ea pode realizar an\u00e1lises e manipula\u00e7\u00f5es complexas de dados, especialmente na \u00e1rea de dados de gr\u00e1ficos. Voc\u00ea pode navegar e analisar estruturas de dados hier\u00e1rquicas e em rede sem esfor\u00e7o, revelando insights com facilidade e efici\u00eancia sem precedentes. Seja para explorar redes sociais, hierarquias organizacionais ou sistemas interconectados, nosso novo recurso simplifica essas tarefas, tornando sua an\u00e1lise de dados mais intuitiva e produtiva do que nunca.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Aqui est\u00e1 um exemplo de consulta CTE recursiva do Couchbase SQL++ para encontrar todos os voos de LAX para MAD com menos de duas paradas desse conjunto de dados de amostra. <\/span><i><span style=\"font-weight: 400\">Observe que esses dados de amostra n\u00e3o se baseiam na amostra de viagens, mas em uma vers\u00e3o simplificada das rotas AA para 2008. <\/span><\/i><\/p>\n<table>\n<tbody>\n<tr>\n<td><b>c\u00f3digo_do_aeroporto_de_origem<\/b><\/td>\n<td><b>c\u00f3digo_do_aeroporto_destino<\/b><\/td>\n<td><b>companhia a\u00e9rea<\/b><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">LAX<\/span><\/td>\n<td><span style=\"font-weight: 400\">MAD<\/span><\/td>\n<td><span style=\"font-weight: 400\">AA<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">LAX<\/span><\/td>\n<td><span style=\"font-weight: 400\">LHR<\/span><\/td>\n<td><span style=\"font-weight: 400\">AA<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">LHR<\/span><\/td>\n<td><span style=\"font-weight: 400\">MAD<\/span><\/td>\n<td><span style=\"font-weight: 400\">AA<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">LAX<\/span><\/td>\n<td><span style=\"font-weight: 400\">OPO<\/span><\/td>\n<td><span style=\"font-weight: 400\">AA<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">OPO<\/span><\/td>\n<td><span style=\"font-weight: 400\">MAD<\/span><\/td>\n<td><span style=\"font-weight: 400\">AA<\/span><\/td>\n<\/tr>\n<tr>\n<td><span style=\"font-weight: 400\">MAD<\/span><\/td>\n<td><span style=\"font-weight: 400\">OPO<\/span><\/td>\n<td><span style=\"font-weight: 400\">AA<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Consulta SQL++<\/b><\/td>\n<td><b>Resultados<\/b><\/td>\n<\/tr>\n<tr>\n<td><i><span style=\"font-weight: 400\">\/* Lista de todas as rotas de LAX para MAD com &lt; 2 paradas *\/<\/span><\/i><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">COM RECURSIVO RouteCTE COMO (<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 <\/span><b>SELECIONAR<\/b><span style=\"font-weight: 400\"> [r.source_airport_code,<br \/>\n<\/span>r.destination_airport_code] <b style=\"font-family: inherit;font-size: inherit\">AS<\/b><span style=\"font-weight: 400\"> rota,<br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 r.destination_airport_code <\/span><b>AS<\/b><span style=\"font-weight: 400\"> lastStop,<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"font-weight: 400\">1<\/span> <b>AS<\/b><span style=\"font-weight: 400\"> profundidade<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 <\/span><b>DE<\/b><span style=\"font-weight: 400\"> rotas r<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 <\/span><b>ONDE<\/b><span style=\"font-weight: 400\"> r.source_airport_code = <\/span><span style=\"font-weight: 400\">\"LAX<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>UNI\u00c3O<\/b> <b>TODOS<\/b><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 <\/span><b>SELECIONAR<\/b> <span style=\"font-weight: 400\">ARRAY_APPEND<\/span><span style=\"font-weight: 400\">(r.route,f.destination_airport_code) <\/span><span style=\"font-weight: 400\"><b>AS <\/b><\/span><span style=\"font-weight: 400\">rota,<br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 f.destination_airport_code <\/span><b>AS<\/b><span style=\"font-weight: 400\"> lastStop,<br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 r.profundidade + <\/span><span style=\"font-weight: 400\">1<\/span> <b>AS<\/b><span style=\"font-weight: 400\"> profundidade<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 <\/span><b>DE<\/b><span style=\"font-weight: 400\"> RouteCTE r<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 <\/span><b>JUNTAR<\/b><span style=\"font-weight: 400\"> rotas f <\/span><b>ON<\/b><span style=\"font-weight: 400\"> r.lastStop = f.source_airport_code<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 <\/span><b>ONDE<\/b><span style=\"font-weight: 400\"> f.destination_airport_code != <\/span><span style=\"font-weight: 400\">\"LAX<\/span><br \/>\n<b>\u00a0 \u00a0 E<\/b><span style=\"font-weight: 400\"> r.depth &lt; <\/span><span style=\"font-weight: 400\">3<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">)<\/span><b>OP\u00c7\u00d5ES<\/b><span style=\"font-weight: 400\"> {\"levels\":3}<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>SELECIONAR<\/b><span style=\"font-weight: 400\"> r.*<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>DE<\/b><span style=\"font-weight: 400\"> RouteCTE <\/span><b>AS<\/b><span style=\"font-weight: 400\"> r<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>ONDE<\/b><span style=\"font-weight: 400\"> r.lastStop = <\/span><span style=\"font-weight: 400\">'MAD'<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">E r.depth &lt; 3;<\/span><\/td>\n<td><span style=\"font-weight: 400\">[ <\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 \"route\": [<\/span>\u00a0<span style=\"font-weight: 400\">\"LAX\", <\/span><span style=\"font-weight: 400\">\"MAD\"<\/span><span style=\"font-weight: 400\">\u00a0]<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 },<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"route\": [<\/span>\u00a0<span style=\"font-weight: 400\">\"LAX\", <\/span><span style=\"font-weight: 400\">\"LHR\", <\/span><span style=\"font-weight: 400\">\"MAD\" <\/span><span style=\"font-weight: 400\">]<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 },<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"route\": [<\/span>\u00a0<span style=\"font-weight: 400\">\"LAX\", <\/span><span style=\"font-weight: 400\">\"OPO\", <\/span><span style=\"font-weight: 400\">\"MAD\" <\/span><span style=\"font-weight: 400\">]<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 }<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">]<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h3><span style=\"font-weight: 400\">Estrutura de dados hier\u00e1rquica<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Voc\u00ea tamb\u00e9m pode usar o CTE recursivo para percorrer uma estrutura de dados hier\u00e1rquica, como uma hierarquia de organiza\u00e7\u00e3o.\u00a0 <\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image2-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-15510\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image2-2.png\" alt=\"Hierarchical data structure\" width=\"321\" height=\"126\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image2-2.png 321w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image2-2-300x118.png 300w\" sizes=\"auto, (max-width: 321px) 100vw, 321px\" \/><\/a><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image4-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-15511\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image4-2.png\" alt=\"\" width=\"272\" height=\"186\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image4-2.png 272w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image4-2-235x160.png 235w\" sizes=\"auto, (max-width: 272px) 100vw, 272px\" \/><\/a><\/p>\n<table>\n<tbody>\n<tr>\n<td><b>Consulta SQL++<\/b><\/td>\n<td><b>Resultados<\/b><\/td>\n<\/tr>\n<tr>\n<td><i><span style=\"font-weight: 400\">\/* Lista de todos os funcion\u00e1rios e sua hierarquia organizacional *\/<\/span><\/i><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">WITH RECURSIVE orgHier as (<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 <\/span><b>SELECIONAR<\/b><span style=\"font-weight: 400\"> [<\/span><span style=\"font-weight: 400\">e<\/span><span style=\"font-weight: 400\">.emp_name] hier, <\/span><span style=\"font-weight: 400\">e<\/span><span style=\"font-weight: 400\">.emp_id, <\/span><span style=\"font-weight: 400\">0<\/span><span style=\"font-weight: 400\"> n\u00edvel <\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 <\/span><b>DE<\/b><span style=\"font-weight: 400\"> funcion\u00e1rio <\/span><span style=\"font-weight: 400\">e<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 \u00a0 <\/span><b>ONDE<\/b> <span style=\"font-weight: 400\">e<\/span><span style=\"font-weight: 400\">.manager_id <\/span><b>\u00e9<\/b> <span style=\"font-weight: 400\">nulo<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 <\/span><b>UNI\u00c3O<\/b><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 <\/span><b>SELECIONAR<\/b> <span style=\"font-weight: 400\">ARRAY_APPEND<\/span><span style=\"font-weight: 400\">(o.hier, e1.emp_name) hier,<br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"font-weight: 400\">e1.emp_id, o.lvl+<\/span><span style=\"font-weight: 400\">1<\/span><span style=\"font-weight: 400\">\u00a0 n\u00edvel<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 <\/span><b>DE<\/b><span style=\"font-weight: 400\"> funcion\u00e1rio e1<br \/>\n<\/span><b>\u00a0 \u00a0 JUNTAR<\/b><span style=\"font-weight: 400\"> orgHier o <\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>\u00a0 \u00a0ON<\/b><span style=\"font-weight: 400\"> e1.manager_id=o.emp_id<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">)<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>SELECIONAR<\/b><span style=\"font-weight: 400\"> o.* <\/span><b>DE<\/b><span style=\"font-weight: 400\"> orgHier o;<\/span><\/td>\n<td><span style=\"font-weight: 400\">[ <\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"emp_id\": 1,<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"hier\": [ \"matt\" ],<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"lvl\": 0<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 },<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"emp_id\": 2,<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"hier\": [ \"matt\", \"emily\" ],<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"lvl\": 1<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 },<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"emp_id\": 3,<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"hier\": [ \"matt\", \"mike\" ],<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"lvl\": 1<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 },<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"emp_id\": 5,<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"hier\": [ \"matt\", \"mike\", \"alex\" ],<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"lvl\": 2<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 },<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 {\"emp_id\": 4,<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"hier\": [ \"matt\", \"emily\", \"sarah\" ],<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"lvl\": 2<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 },<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"emp_id\": 6,<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"hier\": [ \"matt\", \"emily\", \"lisa\" ],<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \"lvl\": 2<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 }<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">]<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><i><span style=\"font-weight: 400\">Para obter mais informa\u00e7\u00f5es, consulte a documenta\u00e7\u00e3o do Couchbase em <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/with-recursive.html\">consultas recursivas<\/a>.\u00a0<\/span><\/i><\/p>\n<hr \/>\n<h2><span style=\"font-weight: 400\">Efici\u00eancia do desenvolvedor<\/span><\/h2>\n<h3><span style=\"font-weight: 400\">Varredura da faixa de KV<\/span><\/h3>\n<p><span style=\"font-weight: 400\">As opera\u00e7\u00f5es de chave\/valor (K\/V) no Couchbase s\u00e3o a maneira mais eficiente de acessar os dados armazenados no banco de dados. Essas opera\u00e7\u00f5es usam a chave exclusiva de um documento para executar a\u00e7\u00f5es de leitura, grava\u00e7\u00e3o e atualiza\u00e7\u00e3o.  No entanto, essas opera\u00e7\u00f5es funcionam em uma base de documento individual. Para casos de uso de recupera\u00e7\u00e3o de dados maiores, recomendamos usar o SQL++ do servi\u00e7o Query para seus aplicativos.<\/span><\/p>\n<p><span style=\"font-weight: 400\">No entanto, em alguns casos em que n\u00e3o \u00e9 economicamente vi\u00e1vel configurar n\u00f3s de consulta e indexa\u00e7\u00e3o, agora voc\u00ea tem a op\u00e7\u00e3o de usar o KV Range Scan. O novo recurso permite que seus aplicativos iterem sobre todos os documentos com base em um intervalo de chaves, um prefixo de chave ou uma amostragem aleat\u00f3ria. As APIs enviam internamente as solicita\u00e7\u00f5es para v\u00e1rios vbuckets com base no <em>max_concurrency<\/em> para equilibrar a carga entre os n\u00f3s de dados. Os fluxos do vbucket s\u00e3o ent\u00e3o mesclados logicamente e retornados como um \u00fanico <em>fluxo<\/em>\u00a0para o aplicativo.<\/span><\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>KV Obter<\/b><\/td>\n<td><b>Varredura da faixa de KV<\/b><\/td>\n<\/tr>\n<tr>\n<td><b>p\u00fablico<\/b> <b>classe<\/b> <b>CouchbaseReadHotelExample<\/b><span style=\"font-weight: 400\"> {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 <\/span><b>p\u00fablico<\/b> <b>est\u00e1tico<\/b> <b>vazio<\/b> <b>principal<\/b><span style=\"font-weight: 400\">(String[] args) {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><i><span style=\"font-weight: 400\">\u00a0 \u00a0 \/\/ Conectar-se ao cluster<\/span><\/i><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 Cluster cluster = Cluster.connect(<\/span><span style=\"font-weight: 400\">\"couchbase:\/\/localhost\"<\/span><span style=\"font-weight: 400\">,<\/span><span style=\"font-weight: 400\"> \"nome de usu\u00e1rio\"<\/span><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">\"senha\"<\/span><span style=\"font-weight: 400\">);<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><i><span style=\"font-weight: 400\">\u00a0 \u00a0 \/\/ Obter uma refer\u00eancia ao bucket \"travel-sample\".<\/span><\/i><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0Bucket bucket = cluster.bucket(<\/span><span style=\"font-weight: 400\">\"amostra de viagem\"<\/span><span style=\"font-weight: 400\">);<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><i><span style=\"font-weight: 400\">\u00a0 \u00a0\/\/ Acesse o escopo 'inventory' e a cole\u00e7\u00e3o 'hotel'<br \/>\n<\/span><\/i>\u00a0 \u00a0Scope inventoryScope = bucket.scope(<span style=\"font-weight: 400\">\"invent\u00e1rio\"<\/span><span style=\"font-weight: 400\">);<br \/>\n<\/span>\u00a0 \u00a0Collection hotelCollection = inventoryScope.collection(<span style=\"font-weight: 400\">\"hotel\"<\/span><span style=\"font-weight: 400\">);<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 String documentKey = <\/span><span style=\"font-weight: 400\">\"hotel_12345\"<\/span><span style=\"font-weight: 400\">;\u00a0<\/span><span style=\"font-weight: 400\">\u00a0 GetResult getResult = hotelCollection.get(documentKey);<\/span><\/td>\n<td><b><br \/>\npublic static void main(String... args) {<br \/>\n<\/b><span style=\"font-weight: 400\">\u00a0 \u00a0 Cluster cluster = Cluster.connect(<\/span><span style=\"font-weight: 400\">\"couchbase:\/\/localhost\"<\/span><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">\"nome de usu\u00e1rio\"<\/span><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">\"senha\"<\/span><span style=\"font-weight: 400\">);<\/span><b><span style=\"font-weight: 400\">\u00a0 \u00a0 <\/span>Bucket bucket = cluster.bucket(\"travel-sample\");<br \/>\n<\/b><b><span style=\"font-weight: 400\">\u00a0 \u00a0 <\/span>Escopo do escopo = bucket.scope(\"_default\");<br \/>\n<\/b><b><span style=\"font-weight: 400\">\u00a0 \u00a0 <\/span>Collection collection = scope.collection(\"_default\");<\/b><span style=\"font-weight: 400\">\u00a0 \u00a0 System.out.println(\"\\nExemplo: [range-scan-range]\");<\/span><\/p>\n<p><span style=\"font-weight: 400\">\u00a0 \u00a0 \/\/ tag::rangeScanAllDocuments[]<br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 Stream results = collection.scan(<br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ScanType.rangeScan(null, null)<br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 );<br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 results.forEach(System.out::println);<br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \/\/ end::rangeScanAllDocuments[]<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400\">Para obter mais informa\u00e7\u00f5es, consulte o <a href=\"https:\/\/docs.couchbase.com\/nodejs-sdk\/current\/howtos\/kv-operations.html#kv-range-scan\">Documenta\u00e7\u00e3o de opera\u00e7\u00f5es do Couchbase KV<\/a>.<\/span><\/p>\n<h3><span style=\"font-weight: 400\">Consulta de varredura sequencial<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Com base na funcionalidade KV Range Scan, a Query Sequential Scan agora permite que voc\u00ea execute todas as opera\u00e7\u00f5es CRUD do banco de dados usando o SQL++ sem a necessidade de um \u00edndice. Esse recurso permite que os desenvolvedores comecem a trabalhar com o banco de dados com pequenos conjuntos de dados sem ter que considerar os \u00edndices necess\u00e1rios para as opera\u00e7\u00f5es.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Da perspectiva da consulta, o plano de consulta escolher\u00e1 todos os \u00edndices dispon\u00edveis para a consulta. Mas se nenhum for encontrado, ele voltar\u00e1 a usar a varredura sequencial. O plano de consulta tamb\u00e9m mostrar\u00e1 o uso da varredura sequencial, em vez da varredura de \u00edndice.<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">\/\/ N\u00famero de voos de SFO-&gt;LHR por companhia a\u00e9rea<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>SELECIONAR<\/b><span style=\"font-weight: 400\"> a.nome, <\/span><span style=\"font-weight: 400\">contagem de matriz<\/span><span style=\"font-weight: 400\">(r.schedule) voos<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>DE<\/b><span style=\"font-weight: 400\"> rota r <\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>INNER<\/b> <b>JUNTAR<\/b><span style=\"font-weight: 400\"> companhia a\u00e9rea a <\/span><b>ON<\/b><span style=\"font-weight: 400\"> r.airline = a.iata<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>ONDE<\/b><span style=\"font-weight: 400\"> r.sourceairport=<\/span><span style=\"font-weight: 400\">\"SFO<\/span> <b>E<\/b><span style=\"font-weight: 400\"> r.destinationairport=<\/span><span style=\"font-weight: 400\">\"LHR<\/span><span style=\"font-weight: 400\">;<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-25_123324193.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-large wp-image-15514\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image_2024-03-25_123324193-1024x497.png\" alt=\"\" width=\"900\" height=\"437\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_123324193-1024x497.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_123324193-300x146.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_123324193-768x373.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_123324193-1536x746.png 1536w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_123324193-2048x995.png 2048w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image_2024-03-25_123324193-1320x641.png 1320w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">Observe que o Sequential Scan \u00e9 adequado para pequenos conjuntos de dados de desenvolvimento. Os \u00edndices ainda devem ser usados quando o desempenho da consulta for uma prioridade.<\/span><\/p>\n<p><i><span style=\"font-weight: 400\">Para obter mais informa\u00e7\u00f5es, consulte a documenta\u00e7\u00e3o do Couchbase em <a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/services-and-indexes\/indexes\/query-without-index.html#sequential-scans\">varreduras sequenciais<\/a>.<\/span><\/i><i><\/i><\/p>\n<h3><span style=\"font-weight: 400\">Consulta de leitura da r\u00e9plica<\/span><\/h3>\n<p><span style=\"font-weight: 400\">A leitura da r\u00e9plica faz parte do recurso de alta disponibilidade que est\u00e1 dispon\u00edvel em todos os servi\u00e7os do Couchbase. Ao usar o SDK para as opera\u00e7\u00f5es KV, uma leitura de r\u00e9plica permite que o aplicativo leia de um n\u00f3 de dados com vbucket de r\u00e9plica quando a c\u00f3pia ativa pode n\u00e3o estar dispon\u00edvel, como durante um failover.\u00a0<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><b>tentar<\/b><span style=\"font-weight: 400\"> {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><i><span style=\"font-weight: 400\">\/\/ Tentativa de leitura do n\u00f3 ativo<\/span><\/i><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 GetResult result = collection.get(documentKey);<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(<\/span><span style=\"font-weight: 400\">\"Documento do n\u00f3 ativo: \"<\/span><span style=\"font-weight: 400\"> + result.contentAsObject());<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 } <\/span><b>captura<\/b><span style=\"font-weight: 400\"> (DocumentNotFoundException activeNodeException) {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 System.out.println(<\/span><span style=\"font-weight: 400\">\"Falha na leitura do n\u00f3 ativo, tentativa de leitura da r\u00e9plica...\"<\/span><span style=\"font-weight: 400\">);<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><i><span style=\"font-weight: 400\">\/\/ Se a leitura do n\u00f3 ativo falhar, tente ler de qualquer r\u00e9plica dispon\u00edvel<\/span><\/i><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><b>tentar<\/b><span style=\"font-weight: 400\"> {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 GetReplicaResult replicaResult = collection.getAnyReplica(documentKey);<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 System.out.println(<\/span><span style=\"font-weight: 400\">\"Documento da r\u00e9plica: \"<\/span><span style=\"font-weight: 400\"> + replicaResult.contentAsObject());<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 } <\/span><b>captura<\/b><span style=\"font-weight: 400\"> (Exce\u00e7\u00e3o replicaReadException) {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 System.err.println(<\/span><span style=\"font-weight: 400\">\"Erro ao buscar o documento da r\u00e9plica: \"<\/span><span style=\"font-weight: 400\">\u00a0+ replicaReadException.getMessage());<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 }<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400\">Entretanto, essa abordagem n\u00e3o pode ser aplicada quando o aplicativo usa o SDK para executar uma consulta SQL++. Isso ocorre porque a opera\u00e7\u00e3o de busca de dados acontece na camada de servi\u00e7o de consulta. No exemplo abaixo, sem Query Read from Replica, se houver um problema com o n\u00f3 de dados ativo de onde a consulta est\u00e1 sendo obtida, a consulta retornar\u00e1 um erro de tempo limite para o aplicativo. Executar uma nova tentativa no aplicativo abaixo significaria reexecutar a consulta inteira novamente.<\/span><\/p>\n<p>&nbsp;<\/p>\n<table>\n<tbody>\n<tr>\n<td><b>tentar<\/b><span style=\"font-weight: 400\"> {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 \u00a0 <\/span><i><span style=\"font-weight: 400\">\/\/ Executar uma consulta N1QL<\/span><\/i><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 \u00a0 Declara\u00e7\u00e3o de string = <\/span><span style=\"font-weight: 400\">\"SELECT * FROM `<\/span><span style=\"font-weight: 400\">amostra de viagem<\/span><span style=\"font-weight: 400\">.inventory.hotel WHERE city = 'San Francisco' LIMIT 10;\"<\/span><span style=\"font-weight: 400\">;<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 \u00a0 QueryResult result = cluster.query(statement);<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><i><span style=\"font-weight: 400\">\/\/ Iterar pelas linhas do conjunto de resultados<\/span><\/i><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 <\/span><b>para<\/b><span style=\"font-weight: 400\"> (QueryRow row : result.rows()) {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 System.out.println(row);<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 }<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 } <\/span><b>captura<\/b><span style=\"font-weight: 400\"> (QueryException e) {<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 System.err.println(<\/span><span style=\"font-weight: 400\">\"A consulta falhou: \"<\/span><span style=\"font-weight: 400\"> + e.getMessage());<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"> \u00a0 \u00a0 }<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><span style=\"font-weight: 400\">O Couchbase 7.6 agora oferece suporte \u00e0 leitura de consulta da r\u00e9plica. Isso significa que o servi\u00e7o de consulta pode mudar a conex\u00e3o para um n\u00f3 de dados alternativo, se receber um <em>kvTimeout<\/em> do n\u00f3 de dados do qual estava fazendo a busca. A l\u00f3gica de alternar para um n\u00f3 de dados diferente \u00e9 executada de forma transparente no servi\u00e7o de consulta, n\u00e3o sendo necess\u00e1ria nenhuma a\u00e7\u00e3o por parte do aplicativo.<\/span><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image1-2.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-15513\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2024\/03\/image1-2.png\" alt=\"\" width=\"509\" height=\"318\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image1-2.png 509w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/image1-2-300x187.png 300w\" sizes=\"auto, (max-width: 509px) 100vw, 509px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400\">Ao usar o Query Read from Replica, os aplicativos devem estar atentos \u00e0s poss\u00edveis inconsist\u00eancias de dados, especialmente em ambientes com muita atividade de grava\u00e7\u00e3o. A replica\u00e7\u00e3o cont\u00ednua de dados entre os n\u00f3s de dados significa que, como o servi\u00e7o de consulta alterna entre os n\u00f3s durante as opera\u00e7\u00f5es de busca, podem surgir inconsist\u00eancias. Esse cen\u00e1rio \u00e9 mais prov\u00e1vel em sistemas com atualiza\u00e7\u00f5es frequentes de dados, em que o processo de replica\u00e7\u00e3o pode levar a pequenos atrasos na sincroniza\u00e7\u00e3o entre os n\u00f3s.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Por esse motivo, o aplicativo tem a op\u00e7\u00e3o de controlar a consulta de leitura da r\u00e9plica. Isso pode ser ativado\/desativado na configura\u00e7\u00e3o em n\u00edvel de solicita\u00e7\u00e3o, n\u00f3 ou cluster.<\/span><\/p>\n<p><i><span style=\"font-weight: 400\">Para obter mais informa\u00e7\u00f5es, consulte o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/manage\/manage-settings\/general-settings.html#query-settings\">Documenta\u00e7\u00e3o das configura\u00e7\u00f5es de consulta do Couchbase<\/a>.<\/span><\/i><\/p>\n<h3><span style=\"font-weight: 400\">Sequ\u00eancia SQL++<\/span><\/h3>\n<p><span style=\"font-weight: 400\">Agora voc\u00ea pode usar o SQL++ para criar um objeto de sequ\u00eancia que \u00e9 mantido no servidor Couchbase. O objeto de sequ\u00eancia gera uma sequ\u00eancia de valores num\u00e9ricos que s\u00e3o garantidos como \u00fanicos no banco de dados. Os aplicativos podem usar a sequ\u00eancia SQL++ do Couchbase para garantir um \u00fanico contador para atender a v\u00e1rios clientes.<\/span><\/p>\n<table>\n<tbody>\n<tr>\n<td><span style=\"font-weight: 400\">\/\/ Criar sintaxe de SEQUENCE<\/span><\/p>\n<p><b>CRIAR<\/b><span style=\"font-weight: 400\"> SEQUENCE [<\/span><b>IF<\/b> <b>N\u00c3O<\/b> <b>EXISTE<\/b><span style=\"font-weight: 400\">]  [<\/span><b>IF<\/b> <b>N\u00c3O<\/b> <b>EXISTE<\/b><span style=\"font-weight: 400\">] <\/span><span style=\"font-weight: 400\">[ <\/span><b>COM<\/b><span style=\"font-weight: 400\"> ]<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>ALTER<\/b><span style=\"font-weight: 400\"> SEQUENCE  [<\/span><b>COM<\/b><span style=\"font-weight: 400\"> ]<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>DROP<\/b><span style=\"font-weight: 400\"> SEQUENCE  [<\/span><b>IF<\/b> <b>EXISTE<\/b><span style=\"font-weight: 400\">]<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">NEXTVAL <\/span><b>PARA<\/b><span style=\"font-weight: 400\"> &lt;name&gt;<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">PREVAL\u00caNCIA <\/span><b>PARA<\/b><span style=\"font-weight: 400\"> &lt;name&gt;<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">\/\/ Exemplos<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>CRIAR<\/b><span style=\"font-weight: 400\"> SEQUENCE myBucket.myScope.ordNum <\/span><b>INICIAR<\/b> <b>COM<\/b> <span style=\"font-weight: 400\">1000<\/span><span style=\"font-weight: 400\"> CACHE <\/span><span style=\"font-weight: 400\">100<\/span><span style=\"font-weight: 400\">;<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">ALTER SEQUENCE myBucket.myScope.ordNum <\/span><span style=\"font-weight: 400\">WITH {\"max\": 2000};<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>INSERIR<\/b> <b>PARA<\/b><span style=\"font-weight: 400\"> pedidos <\/span><b>VALORES<\/b><span style=\"font-weight: 400\"> (<\/span><span style=\"font-weight: 400\">uuid<\/span><span style=\"font-weight: 400\">(),<\/span><span style=\"font-weight: 400\">\u00a0{<\/span><span style=\"font-weight: 400\">\"num\"<\/span><span style=\"font-weight: 400\">:NEXT <\/span><b>VALOR<\/b> <b>PARA<\/b><span style=\"font-weight: 400\"> ordNum,<\/span><span style=\"font-weight: 400\">\"cliente\"<\/span><span style=\"font-weight: 400\">:<\/span><span style=\"font-weight: 400\">\"Alex\"<\/span><span style=\"font-weight: 400\">});<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><b>DROP<\/b><span style=\"font-weight: 400\"> SEQUENCE myBucket.myScope.ordNum <\/span><b>IF<\/b> <b>EXISTE<\/b><span style=\"font-weight: 400\">;<\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p><i><span style=\"font-weight: 400\">Para obter mais informa\u00e7\u00f5es, consulte o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/n1ql\/n1ql-language-reference\/createsequence.html\">Documenta\u00e7\u00e3o da sequ\u00eancia do Couchbase<\/a>.\u00a0<\/span><\/i><\/p>\n<hr \/>\n<p>Obrigado por ler, esperamos que voc\u00ea goste desses novos recursos. Mais postagens relacionadas \u00e0 vers\u00e3o 7.6 ser\u00e3o publicadas em breve.<\/p>\n<ul>\n<li style=\"list-style-type: none\">\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/downloads\/?family=couchbase-server\">Download do servidor Couchbase 7.6<\/a><\/li>\n<li><a href=\"https:\/\/cloud.couchbase.com\/sign-up\">Experimente o Couchbase Capella<\/a><\/li>\n<\/ul>\n<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>\u00c9 com grande satisfa\u00e7\u00e3o que anunciamos o lan\u00e7amento do Couchbase 7.6, uma atualiza\u00e7\u00e3o inovadora que redefinir\u00e1 o cen\u00e1rio da tecnologia de banco de dados. Essa \u00faltima vers\u00e3o \u00e9 uma prova do nosso compromisso com o aprimoramento da tecnologia de banco de dados, com um salto significativo em IA [...]<\/p>","protected":false},"author":26326,"featured_media":15515,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[10122,1816,9381,9936,1812,9937],"tags":[9945,1952,1726],"ppma_author":[8919],"class_list":["post-15505","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-artificial-intelligence-ai","category-couchbase-server","category-indexing","category-search","category-n1ql-query","category-vector-search","tag-couchbase-7-6","tag-data-replication","tag-graph-database"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Couchbase Server 7.6 Features That Developers Will Love<\/title>\n<meta name=\"description\" content=\"With a leap in AI\/ML integration, Couchbase Server 7.6 empowers developers to build more intelligent and responsive applications. View them all here.\" \/>\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\/couchbase-server-7-6-top-developer-features\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Couchbase Server 7.6 Top New Features For Developers\" \/>\n<meta property=\"og:description\" content=\"With a leap in AI\/ML integration, Couchbase Server 7.6 empowers developers to build more intelligent and responsive applications. View them all here.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-server-7-6-top-developer-features\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-25T19:10:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-13T23:37:01+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/couchbase-7.6.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"628\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Binh Le\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Binh Le\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/\"},\"author\":{\"name\":\"Binh Le\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63\"},\"headline\":\"Couchbase Server 7.6 Top New Features For Developers\",\"datePublished\":\"2024-03-25T19:10:35+00:00\",\"dateModified\":\"2025-06-13T23:37:01+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/\"},\"wordCount\":1899,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/couchbase-7.6.jpg\",\"keywords\":[\"Couchbase 7.6\",\"Data Replication\",\"graph database\"],\"articleSection\":[\"Artificial Intelligence (AI)\",\"Couchbase Server\",\"Indexing\",\"Search\",\"SQL++ \/ N1QL Query\",\"Vector Search\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/\",\"name\":\"Couchbase Server 7.6 Features That Developers Will Love\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/couchbase-7.6.jpg\",\"datePublished\":\"2024-03-25T19:10:35+00:00\",\"dateModified\":\"2025-06-13T23:37:01+00:00\",\"description\":\"With a leap in AI\/ML integration, Couchbase Server 7.6 empowers developers to build more intelligent and responsive applications. View them all here.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/couchbase-7.6.jpg\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/couchbase-7.6.jpg\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Couchbase Server 7.6 Top New Features For Developers\"}]},{\"@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\/f89064928e262c71eb43bee996c48c63\",\"name\":\"Binh Le\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g\",\"caption\":\"Binh Le\"},\"description\":\"Binh Le is a Principal Product Manager for Couchbase Query service. Prior to Couchbase, he worked at Oracle and led the product management team for Sales Cloud Analytics and CRM OnDemand. Binh holds a Bachelor's Degree in Computer Science from the University of Brighton, UK.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/binh-le-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Recursos do Couchbase Server 7.6 que os desenvolvedores v\u00e3o adorar","description":"Com um salto na integra\u00e7\u00e3o de IA\/ML, o Couchbase Server 7.6 permite que os desenvolvedores criem aplicativos mais inteligentes e responsivos. Veja todos eles aqui.","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\/couchbase-server-7-6-top-developer-features\/","og_locale":"pt_BR","og_type":"article","og_title":"Couchbase Server 7.6 Top New Features For Developers","og_description":"With a leap in AI\/ML integration, Couchbase Server 7.6 empowers developers to build more intelligent and responsive applications. View them all here.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/couchbase-server-7-6-top-developer-features\/","og_site_name":"The Couchbase Blog","article_published_time":"2024-03-25T19:10:35+00:00","article_modified_time":"2025-06-13T23:37:01+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/couchbase-7.6.jpg","type":"image\/jpeg"}],"author":"Binh Le","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Binh Le","Est. reading time":"10 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/"},"author":{"name":"Binh Le","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/f89064928e262c71eb43bee996c48c63"},"headline":"Couchbase Server 7.6 Top New Features For Developers","datePublished":"2024-03-25T19:10:35+00:00","dateModified":"2025-06-13T23:37:01+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/"},"wordCount":1899,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/couchbase-7.6.jpg","keywords":["Couchbase 7.6","Data Replication","graph database"],"articleSection":["Artificial Intelligence (AI)","Couchbase Server","Indexing","Search","SQL++ \/ N1QL Query","Vector Search"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/","url":"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/","name":"Recursos do Couchbase Server 7.6 que os desenvolvedores v\u00e3o adorar","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/couchbase-7.6.jpg","datePublished":"2024-03-25T19:10:35+00:00","dateModified":"2025-06-13T23:37:01+00:00","description":"Com um salto na integra\u00e7\u00e3o de IA\/ML, o Couchbase Server 7.6 permite que os desenvolvedores criem aplicativos mais inteligentes e responsivos. Veja todos eles aqui.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/couchbase-7.6.jpg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2024\/03\/couchbase-7.6.jpg","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/couchbase-server-7-6-top-developer-features\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Couchbase Server 7.6 Top New Features For Developers"}]},{"@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\/f89064928e262c71eb43bee996c48c63","name":"Binh Le","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/5b68c37e30928a9d7b2c8470b1a303b7","url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","caption":"Binh Le"},"description":"Binh Le \u00e9 gerente de produto principal do servi\u00e7o Couchbase Query. Antes da Couchbase, ele trabalhou na Oracle e liderou a equipe de gerenciamento de produtos para Sales Cloud Analytics e CRM OnDemand. Binh \u00e9 bacharel em Ci\u00eancia da Computa\u00e7\u00e3o pela Universidade de Brighton, no Reino Unido.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/binh-le-2\/"}]}},"authors":[{"term_id":8919,"user_id":26326,"is_guest":0,"slug":"binh-le-2","display_name":"Binh Le","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/a939f48df6447844a8780bec264bb3be21d589336f3915fabc557075a68fa374?s=96&d=mm&r=g","author_category":"","last_name":"Le","first_name":"Binh","job_title":"","user_url":"","description":"Binh Le \u00e9 gerente de produto principal do servi\u00e7o de consulta do Couchbase. Antes da Couchbase, ele trabalhou na Oracle e liderou a equipe de gerenciamento de produtos para Sales Clould Analytics e CRM OnDemand. Binh \u00e9 bacharel em Ci\u00eancia da Computa\u00e7\u00e3o pela Universidade de Brighton, no Reino Unido."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/15505","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\/26326"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=15505"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/15505\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/15515"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=15505"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=15505"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=15505"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=15505"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}