{"id":8882,"date":"2020-07-20T00:44:00","date_gmt":"2020-07-20T07:44:00","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=8882"},"modified":"2023-09-22T09:32:00","modified_gmt":"2023-09-22T16:32:00","slug":"a-tale-of-two-ejection-methods-value-only-vs-full","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/a-tale-of-two-ejection-methods-value-only-vs-full\/","title":{"rendered":"Uma hist\u00f3ria de dois m\u00e9todos de eje\u00e7\u00e3o: Somente valor vs. Completo"},"content":{"rendered":"<h2>Introdu\u00e7\u00e3o<\/h2>\n<p><em>Gostaria de agradecer \u00e0 nossa equipe de engenharia do Couchbase Server - especialmente a Dave Rigby e Jim Walker - pela enorme ajuda com este artigo e pela paci\u00eancia infinita com todas as minhas perguntas.  Muito obrigado, pessoal, eu realmente aprecio seu vasto conhecimento e sua disposi\u00e7\u00e3o em compartilh\u00e1-lo!<\/em><\/p>\n<p>No Couchbase Server, os dados s\u00e3o armazenados em buckets.  O padr\u00e3o <a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/buckets-memory-and-storage\/buckets.html\" target=\"_blank\" rel=\"noopener noreferrer\">tipo de ca\u00e7amba<\/a> - chamado de forma n\u00e3o criativa <strong>Couchbase<\/strong> assegura a persist\u00eancia ass\u00edncrona dos dados no disco.  O servidor tentar\u00e1 ter todos os seus dados, o conjunto ativo e o(s) conjunto(s) de r\u00e9plica, na mem\u00f3ria.  No entanto, se os dados na mem\u00f3ria atingirem 85% da cota de mem\u00f3ria do bucket (esse n\u00edvel \u00e9 chamado de <strong>marca d'\u00e1gua alta<\/strong>), o servidor come\u00e7ar\u00e1 a ejetar (despejar) alguns dos documentos que n\u00e3o foram usados recentemente da mem\u00f3ria.  Os documentos ativos t\u00eam 40% de chance de serem removidos, e os documentos de r\u00e9plica t\u00eam 60% de chance de serem removidos.  O motivo \u00e9 o seguinte: \u00e9 mais importante ter um documento ativo residente na mem\u00f3ria; no entanto, tamb\u00e9m queremos ter algumas r\u00e9plicas de documentos na mem\u00f3ria, para o caso de um n\u00f3 falhar e as r\u00e9plicas precisarem se tornar ativas.  O processo de despejo continua at\u00e9 que os dados na mem\u00f3ria fiquem abaixo de 75% da cota de mem\u00f3ria do bucket (esse n\u00edvel \u00e9 chamado de <strong>marca d'\u00e1gua baixa<\/strong>).<\/p>\n<p>Apenas um breve lembrete sobre a estrutura dos documentos armazenados no Couchbase:<\/p>\n<ul>\n<li>Documento <strong>chave<\/strong> ou <strong>ID<\/strong>Comprimento vari\u00e1vel - at\u00e9 250 bytes, deve ser exclusivo para os documentos armazenados no mesmo bucket<\/li>\n<li>Documento <strong>metadados<\/strong>Comprimento fixo - 56 bytes para documentos armazenados no tipo de bucket Couchbase, 72 bytes para documentos armazenados no tipo de bucket Ephemeral (esse tipo de bucket est\u00e1 fora do escopo deste artigo)<\/li>\n<li>Documento <strong>valor<\/strong>: comprimento vari\u00e1vel - at\u00e9 20 MB, geralmente JSON, outros formatos tamb\u00e9m podem ser usados<\/li>\n<\/ul>\n<h2>Dois m\u00e9todos de eje\u00e7\u00e3o<\/h2>\n<p>Por padr\u00e3o, um bucket do Couchbase usa <strong>Somente valor<\/strong> m\u00e9todo de eje\u00e7\u00e3o (ou despejo).  Muitas vers\u00f5es atr\u00e1s, essa era a \u00fanica op\u00e7\u00e3o dispon\u00edvel.  Como o nome indica, o processo de eje\u00e7\u00e3o <strong>remover\u00e1 apenas o valor<\/strong> dos documentos e <strong>manter\u00e1 as chaves e os metadados do documento na mem\u00f3ria o tempo todo<\/strong>.<\/p>\n<p>A partir da vers\u00e3o 3.0 (<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/downloads\/\" target=\"_blank\" rel=\"noopener noreferrer\">Servidor Couchbase<\/a> est\u00e1 na vers\u00e3o 6.5.1 no momento em que este artigo foi escrito), adicionamos a fun\u00e7\u00e3o <strong>Completo<\/strong> m\u00e9todo de eje\u00e7\u00e3o.  \u00c9 f\u00e1cil supor que um balde configurado para expuls\u00e3o total <strong>remover\u00e1 as chaves, os metadados e os valores dos documentos<\/strong> como parte do processo de eje\u00e7\u00e3o.<\/p>\n<h2>Compensa\u00e7\u00e3o: desempenho vs. tamanho da mem\u00f3ria<\/h2>\n<p>Ent\u00e3o, qual op\u00e7\u00e3o voc\u00ea deve escolher para seus buckets?  Aqui est\u00e1 o que a dica de ferramenta explica na GUI da nossa vers\u00e3o mais recente do Couchbase Server:<\/p>\n<ul>\n<li><em><strong>Eje\u00e7\u00e3o de valor:<\/strong> Durante a eje\u00e7\u00e3o, somente o valor ser\u00e1 ejetado (a chave e os metadados permanecer\u00e3o na mem\u00f3ria).<\/em><\/li>\n<li><em><strong>Eje\u00e7\u00e3o total:<\/strong>\u00a0Durante a eje\u00e7\u00e3o, tudo (incluindo chave, metadados e valor) ser\u00e1 ejetado.<\/em><br \/>\n<em>O Value Ejection precisa de mais mem\u00f3ria do sistema, mas oferece o melhor desempenho. A eje\u00e7\u00e3o total reduz o requisito de sobrecarga de mem\u00f3ria.<\/em><\/li>\n<\/ul>\n<p>Para ser mais preciso, <strong>nem<\/strong> m\u00e9todo \"<em>precisa de mais mem\u00f3ria do sistema<\/em>&#8220;: <strong>Completo<\/strong> A eje\u00e7\u00e3o permite que o conjunto de dados exceda significativamente a mem\u00f3ria, enquanto <strong>Valor<\/strong> A eje\u00e7\u00e3o permite que o conjunto de dados seja maior do que a mem\u00f3ria at\u00e9 certo ponto, pois ele deve manter as chaves e os metadados na mem\u00f3ria.<\/p>\n<p>Se <strong>lat\u00eancia de leitura consistente<\/strong> dos aplicativos que trabalham com os dados no Couchbase Server \u00e9 (muito) importante, voc\u00ea deve optar pela eje\u00e7\u00e3o de valores.  Isso tamb\u00e9m exige que voc\u00ea <strong>dimensionar seu cluster<\/strong> corretamente, atribua <strong>cotas de mem\u00f3ria suficientes<\/strong> em seus buckets, implemente <strong>reten\u00e7\u00e3o de documentos<\/strong> pol\u00edticas (arquivar ou remover documentos antigos regularmente), e <strong>monitorar o uso da mem\u00f3ria<\/strong>.<\/p>\n<p>Se estiver dentro de <strong>limites or\u00e7ament\u00e1rios ou tecnol\u00f3gicos existentes<\/strong> \u00e9 (muito) importante, ent\u00e3o voc\u00ea deve considerar o despejo completo para seus grandes buckets.  Esse pode ser o caso quando seus recursos de hardware no local estiverem esgotados e n\u00e3o houver como colocar mais RAM nos n\u00f3s do Couchbase.  Quando o dinheiro \u00e9 escasso para gastos com tecnologia local ou na nuvem, a troca de desempenho pode salvar o dia.<\/p>\n<p>Outro motivo para considerar a eje\u00e7\u00e3o total \u00e9 quando voc\u00ea espera que seu conjunto de dados seja <strong>grande<\/strong>para que ele <strong>exceder<\/strong> configura\u00e7\u00f5es de mem\u00f3ria razo\u00e1veis.  Qual \u00e9 o tamanho do <strong>grande<\/strong>?  Digamos que sejam bilh\u00f5es (sim, no plural!) de documentos, dezenas (tamb\u00e9m no plural!) de terabytes de dados.  Nossos engenheiros de solu\u00e7\u00f5es e arquitetos de solu\u00e7\u00f5es est\u00e3o sempre aqui para ajud\u00e1-lo <a href=\"https:\/\/docs.couchbase.com\/server\/current\/install\/sizing-general.html\" target=\"_blank\" rel=\"noopener noreferrer\">dimensionar seu cluster do Couchbase<\/a> corretamente - por favor, fale conosco.<\/p>\n<p>Embora seja poss\u00edvel mudar de um m\u00e9todo de eje\u00e7\u00e3o para outro, essa \u00e9 uma das poucas opera\u00e7\u00f5es que exigem a reinicializa\u00e7\u00e3o do balde e, portanto, algum tempo de inatividade.  Mostramos o seguinte aviso em fonte vermelha na interface do usu\u00e1rio quando voc\u00ea tenta alterar o m\u00e9todo de eje\u00e7\u00e3o: <span style=\"color: #ff0000\">A altera\u00e7\u00e3o da pol\u00edtica de despejo reiniciar\u00e1 o bucket. Isso levar\u00e1 ao fechamento de todas as conex\u00f5es abertas e a algum tempo de inatividade<span style=\"color: #000000\">.  Portanto, \u00e9 aconselh\u00e1vel decidir sobre o m\u00e9todo de eje\u00e7\u00e3o de suas ca\u00e7ambas antes de coloc\u00e1-las em produ\u00e7\u00e3o.<\/span><\/span><\/p>\n<h2>Por que a diferen\u00e7a de desempenho?<\/h2>\n<p>Vamos analisar os diferentes cen\u00e1rios dos m\u00e9todos de eje\u00e7\u00e3o de balde e da resid\u00eancia de dados.  Isso nos ajudar\u00e1 a entender como o desempenho \u00e9 afetado.<\/p>\n<h3>1. Resid\u00eancia de dados completos<\/h3>\n<p>Quando seus dados est\u00e3o totalmente residentes (ou seja, cabem em ~85% da cota de mem\u00f3ria do bucket), o desempenho dos buckets de eje\u00e7\u00e3o completa e somente de valor deve ser semelhante.  As opera\u00e7\u00f5es de documentos funcionam como mostrado abaixo:<\/p>\n<ul>\n<li>Obter (ler) um documento com chave = profile::john-doe::123\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>Verificar na mem\u00f3ria se essa chave existe.\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Se sim, retorne o documento da mem\u00f3ria.<\/li>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Caso contr\u00e1rio, retorna o erro \"o documento n\u00e3o existe\".<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Inserir um documento com a chave = profile::john-doe::123\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>Verificar na mem\u00f3ria se essa chave existe.\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Se sim, retorne o erro \"o documento j\u00e1 existe\".<\/li>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Caso contr\u00e1rio, grave o documento na mem\u00f3ria.  Em seguida, persista e replique-o de forma ass\u00edncrona.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Substituir um documento com a chave = = profile::john-doe::123\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>Verificar na mem\u00f3ria se essa chave existe.\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Se sim, salve as altera\u00e7\u00f5es na mem\u00f3ria.  Em seguida, persista e replique-as de forma ass\u00edncrona.<\/li>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Caso contr\u00e1rio, retorna o erro \"o documento n\u00e3o existe\".<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>2. Resid\u00eancia parcial de dados, eje\u00e7\u00e3o somente de valor<\/h3>\n<p>Quando a resid\u00eancia de dados estiver abaixo de 100% para um bucket com <strong>somente valor<\/strong> eje\u00e7\u00e3o, o Couchbase Server sabe que <strong>as chaves e os metadados do documento ainda est\u00e3o na mem\u00f3ria<\/strong>.  Portanto, as opera\u00e7\u00f5es de documentos ser\u00e3o parecidas com as seguintes:<\/p>\n<ul>\n<li>Obter (ler) um documento com chave = profile::john-doe::123\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>Verificar na mem\u00f3ria se essa chave existe.\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Se sim, verifique se o valor do documento est\u00e1 na mem\u00f3ria\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Se sim, retorne o documento da mem\u00f3ria.<\/li>\n<li><span style=\"color: #ff6600\">LENTO<\/span>: Caso contr\u00e1rio, leia o documento do disco para a mem\u00f3ria e retorne-o.<\/li>\n<\/ul>\n<\/li>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Caso contr\u00e1rio, retorna o erro \"o documento n\u00e3o existe\".<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Inserir um documento com a chave = profile::john-doe::123\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>Verificar na mem\u00f3ria se essa chave existe.\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Se sim, retorne o erro \"o documento j\u00e1 existe\".<\/li>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Caso contr\u00e1rio, grave o documento na mem\u00f3ria.  Em seguida, persista e replique-o de forma ass\u00edncrona.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Substituir um documento com a chave = = profile::john-doe::123\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>Verificar na mem\u00f3ria se essa chave existe.\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Se sim, salve as altera\u00e7\u00f5es na mem\u00f3ria.  Em seguida, persista e replique-as de forma ass\u00edncrona.<\/li>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Caso contr\u00e1rio, retorna o erro \"o documento n\u00e3o existe\".<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<h3>3. Resid\u00eancia parcial de dados, eje\u00e7\u00e3o total<\/h3>\n<p>Quando a resid\u00eancia de dados estiver abaixo de 100% para um bucket com <strong>completo<\/strong> ejection, Couchbase Server <strong>n\u00e3o pode confiar<\/strong> na presen\u00e7a de chaves de documentos e metadados na mem\u00f3ria, porque eles poderiam ter sido removidos.  Portanto, as opera\u00e7\u00f5es de documentos ser\u00e3o parecidas com as seguintes:<\/p>\n<ul>\n<li>Obter (ler) um documento com chave = profile::john-doe::123\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>Verificar na mem\u00f3ria se essa chave existe.\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Se sim, verifique se o valor do documento est\u00e1 na mem\u00f3ria\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Se sim, retorne o documento da mem\u00f3ria.<\/li>\n<li><span style=\"color: #ff6600\">LENTO<\/span>: Caso contr\u00e1rio, verifique o disco\n<ul>\n<li><span style=\"color: #ff6600\">LENTO<\/span>: Se o documento for encontrado no disco, leia o documento do disco para a mem\u00f3ria e retorne-o.<\/li>\n<li><span style=\"color: #ff6600\">LENTO<\/span>: Caso contr\u00e1rio, retorna o erro \"o documento n\u00e3o existe\".<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Inserir um documento com a chave = profile::john-doe::123\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>Verificar na mem\u00f3ria se essa chave existe.\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Se sim, retorne o erro \"o documento j\u00e1 existe\".<\/li>\n<li><span style=\"color: #ff6600\">LENTO<\/span>: Caso contr\u00e1rio, verifique o disco\n<ul>\n<li><span style=\"color: #ff6600\">LENTO<\/span>: Caso contr\u00e1rio, grave o documento na mem\u00f3ria.  Em seguida, persista e replique-o de forma ass\u00edncrona.<\/li>\n<li><span style=\"color: #ff6600\">LENTO<\/span>: Se sim, retorne o erro \"o documento j\u00e1 existe\".<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<li>Substituir um documento com a chave = = profile::john-doe::123\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>Verificar na mem\u00f3ria se essa chave existe.\n<ul>\n<li><span style=\"color: #008000\">R\u00c1PIDO<\/span>: Se sim, salve as altera\u00e7\u00f5es na mem\u00f3ria.  Em seguida, persista e replique-as de forma ass\u00edncrona.<\/li>\n<li><span style=\"color: #ff6600\">LENTO<\/span>: Caso contr\u00e1rio, verifique o disco\n<ul>\n<li><span style=\"color: #ff6600\">LENTO<\/span>: Caso contr\u00e1rio, retorna o erro \"o documento n\u00e3o existe\".<\/li>\n<li><span style=\"color: #ff6600\">LENTO<\/span>: Se sim, grave o documento na mem\u00f3ria.  Em seguida, persista e replique-o de forma ass\u00edncrona.<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p>Com baldes de despejo completo que n\u00e3o s\u00e3o 100% residentes na mem\u00f3ria, <strong>muitos <span style=\"color: #ff0000\"><em>Existe<\/em><\/span> as opera\u00e7\u00f5es precisam ir para o disco<\/strong>.  O n\u00famero de buscas em segundo plano (leitura de documentos do disco para a mem\u00f3ria, tamb\u00e9m conhecido como \"erros de cache\") provavelmente tamb\u00e9m ser\u00e1 maior para os buckets de eje\u00e7\u00e3o total.<\/p>\n<h2>Existem maneiras de melhorar o desempenho?<\/h2>\n<p>Al\u00e9m de <em>Inserir<\/em> e <em>Substituir<\/em> opera\u00e7\u00f5es, os SDKs do Couchbase suportam <strong><em>Upserts<\/em><\/strong>.  O\u00a0<em>upsert<\/em> inserir\u00e1 um documento, caso n\u00e3o exista, ou substituir\u00e1 o documento existente.  Devido \u00e0 natureza somente de acr\u00e9scimo do tratamento de muta\u00e7\u00f5es de dados no Couchbase Server, <strong>o\u00a0<em>upsert<\/em><\/strong><strong> opera\u00e7\u00f5es <span style=\"color: #ff0000\">n\u00e3o requerem<\/span> correspondente\u00a0<em>existe<\/em><\/strong><strong> opera\u00e7\u00e3o.<\/strong>\u00a0 Portanto, o uso de <em>inser\u00e7\u00f5es superiores<\/em> em vez de\u00a0<em>inser\u00e7\u00f5es<\/em> e\u00a0<em>substitui<\/em> melhorar\u00e1 o desempenho do aplicativo, desde que o caso de uso permita essa substitui\u00e7\u00e3o.<\/p>\n<p>Os discos r\u00e1pidos dedicados tamb\u00e9m melhorar\u00e3o o desempenho dos buckets de eje\u00e7\u00e3o total.  Essa \u00e9 uma das configura\u00e7\u00f5es recomendadas para os n\u00f3s do Couchbase: discos dedicados por n\u00f3 sobre armazenamento virtualizado.<\/p>\n<h2>Quando mudar de Eje\u00e7\u00e3o somente de valor para Eje\u00e7\u00e3o total<\/h2>\n<p>Vamos considerar a seguinte situa\u00e7\u00e3o:<\/p>\n<ul>\n<li>Voc\u00ea tem um balde configurado com eje\u00e7\u00e3o somente de valor<\/li>\n<li>O bucket cresceu at\u00e9 o ponto em que menos de 15-20% dos dados est\u00e3o residentes na mem\u00f3ria, que \u00e9 a nossa taxa de resid\u00eancia m\u00ednima recomendada<\/li>\n<li>Voc\u00ea prev\u00ea a entrada de mais dados, j\u00e1 arquiva\/exclui os documentos de acordo com os requisitos do caso de uso e n\u00e3o h\u00e1 como fornecer mais RAM ao bucket<\/li>\n<\/ul>\n<p><strong>Voc\u00ea deve mudar para o m\u00e9todo de eje\u00e7\u00e3o total?<\/strong><\/p>\n<p>H\u00e1 uma boa m\u00e9trica que pode ajud\u00e1-lo a responder a essa pergunta: a quantidade de metadados na RAM, em compara\u00e7\u00e3o com os dados do usu\u00e1rio na RAM para o mesmo bucket.  Por \"metadados\", queremos dizer documentos <strong>chaves + metadados<\/strong>neste caso espec\u00edfico.  \"Dados do usu\u00e1rio\", neste caso, significa documento <strong>valor<\/strong>.<\/p>\n<p>Voc\u00ea pode encontrar essas m\u00e9tricas na se\u00e7\u00e3o <strong>Recursos do vBucket<\/strong> na interface do usu\u00e1rio.  Na captura de tela abaixo, vemos que os metadados ocupam cerca de 42% dos dados do bucket na mem\u00f3ria:<\/p>\n<div id=\"attachment_8888\" style=\"width: 910px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8888\" class=\"size-large wp-image-8888\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/cb-vbucket-metadata-949x1024.jpg\" alt=\"Metadata overhead\" width=\"900\" height=\"971\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cb-vbucket-metadata-949x1024.jpg 949w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cb-vbucket-metadata-278x300.jpg 278w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cb-vbucket-metadata-768x829.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cb-vbucket-metadata-300x324.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cb-vbucket-metadata-1320x1424.jpg 1320w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cb-vbucket-metadata.jpg 1394w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><p id=\"caption-attachment-8888\" class=\"wp-caption-text\">Estat\u00edsticas de sobrecarga de metadados<\/p><\/div>\n<p>Em um determinado momento, voc\u00ea pode come\u00e7ar a ver mensagens como as abaixo na interface do usu\u00e1rio e nos logs do Couchbase:<\/p>\n<div id=\"attachment_8889\" style=\"width: 910px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-8889\" class=\"size-large wp-image-8889\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/cb-metadata-overhead-1024x258.jpg\" alt=\"Metadata overhead warning\" width=\"900\" height=\"227\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cb-metadata-overhead-1024x258.jpg 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cb-metadata-overhead-300x76.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cb-metadata-overhead-768x194.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cb-metadata-overhead-20x5.jpg 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2020\/07\/cb-metadata-overhead.jpg 1058w\" sizes=\"auto, (max-width: 900px) 100vw, 900px\" \/><p id=\"caption-attachment-8889\" class=\"wp-caption-text\">Aviso de sobrecarga de metadados<\/p><\/div>\n<p>Com grande parte da cota de mem\u00f3ria ocupada pelas chaves e metadados do documento, h\u00e1 pouco ou nenhum espa\u00e7o para manter os valores do documento.  Nesse caso, voc\u00ea ver\u00e1 o servidor fazendo muitas buscas em segundo plano para carregar dados do disco para a mem\u00f3ria, apenas para serem ejetados em um futuro pr\u00f3ximo, j\u00e1 que a mem\u00f3ria dispon\u00edvel \u00e9 muito pequena.<\/p>\n<p>Se voc\u00ea n\u00e3o puder adicionar mais n\u00f3s ao cluster e\/ou realocar a mem\u00f3ria de outros buckets, \u00e9 recomend\u00e1vel mudar para o m\u00e9todo de eje\u00e7\u00e3o total do bucket em quest\u00e3o.  Lembre-se: haver\u00e1 algum tempo de inatividade enquanto seu bucket \u00e9 reiniciado e passa pelo processo de aquecimento.<\/p>\n<h2>Resumo<\/h2>\n<ul>\n<li><strong>Somente valor<\/strong> ejection\/eviction remove apenas os valores de documentos da mem\u00f3ria, enquanto <strong>completo<\/strong> O despejo tamb\u00e9m remove as chaves e os metadados do documento.<\/li>\n<li>Voc\u00ea deve fazer um <strong>escolha informada<\/strong> do m\u00e9todo de eje\u00e7\u00e3o antes de colocar um balde em produ\u00e7\u00e3o.  Casos de uso de grava\u00e7\u00e3o pesada com muitos milh\u00f5es de documentos s\u00e3o bons candidatos para a eje\u00e7\u00e3o total.  Alterar o m\u00e9todo de eje\u00e7\u00e3o posteriormente na produ\u00e7\u00e3o pode ser dispendioso devido a algum tempo de inatividade.<\/li>\n<li><strong>Upsert<\/strong> e os discos r\u00e1pidos dedicados sempre melhoram o desempenho dos aplicativos, e isso \u00e9 ainda mais importante para os buckets de eje\u00e7\u00e3o total.<\/li>\n<li>Monitorar o balde <strong>sobrecarga de metadados<\/strong>.  Esse \u00e9 um bom indicador de que seu cluster pode estar precisando de mais RAM.  Se voc\u00ea n\u00e3o conseguir obter mais mem\u00f3ria para seu cluster do Couchbase e seu <strong>a sobrecarga de metadados \u00e9 igual ou superior a 40%<\/strong>Se voc\u00ea n\u00e3o tiver um bucket de grava\u00e7\u00e3o, pode considerar mudar seus buckets grandes e pesados para eje\u00e7\u00e3o total.<\/li>\n<\/ul>","protected":false},"excerpt":{"rendered":"<p>Introduction I would like to thank our Couchbase Server engineering team &#8211; especially, Dave Rigby and Jim Walker &#8211; for their tremendous help with this article and endless patience with all my questions.\u00a0 Thanks a lot guys, I really appreciate [&hellip;]<\/p>","protected":false},"author":1414,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1815,1821,1816],"tags":[],"ppma_author":[9081],"class_list":["post-8882","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-architecture","category-couchbase-server"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.7.1 (Yoast SEO v25.7) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Value-Only Ejection vs. Full Ejection | Two Ejection Methods<\/title>\n<meta name=\"description\" content=\"Value-only ejection vs. full ejection - which is best for your buckets? Learn what the tooltip explains in the GUI of our latest Couchbase Server version.\" \/>\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\/a-tale-of-two-ejection-methods-value-only-vs-full\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A Tale of Two Ejection Methods: Value-only vs. Full\" \/>\n<meta property=\"og:description\" content=\"Value-only ejection vs. full ejection - which is best for your buckets? Learn what the tooltip explains in the GUI of our latest Couchbase Server version.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/a-tale-of-two-ejection-methods-value-only-vs-full\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2020-07-20T07:44:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-09-22T16:32:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/cb-vbucket-metadata-949x1024.jpg\" \/>\n<meta name=\"author\" content=\"Oleg Kuzmin, Sr. Solutions Engineer, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Oleg Kuzmin, Sr. Solutions Engineer, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/\"},\"author\":{\"name\":\"Oleg Kuzmin, Solutions Architect, Databricks\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/567ed489e7c498f0b9ff0014374c2bcd\"},\"headline\":\"A Tale of Two Ejection Methods: Value-only vs. Full\",\"datePublished\":\"2020-07-20T07:44:00+00:00\",\"dateModified\":\"2023-09-22T16:32:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/\"},\"wordCount\":1936,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Architecture\",\"Couchbase Server\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/\",\"name\":\"Value-Only Ejection vs. Full Ejection | Two Ejection Methods\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2020-07-20T07:44:00+00:00\",\"dateModified\":\"2023-09-22T16:32:00+00:00\",\"description\":\"Value-only ejection vs. full ejection - which is best for your buckets? Learn what the tooltip explains in the GUI of our latest Couchbase Server version.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#primaryimage\",\"url\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"width\":1800,\"height\":630},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A Tale of Two Ejection Methods: Value-only vs. Full\"}]},{\"@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\/567ed489e7c498f0b9ff0014374c2bcd\",\"name\":\"Oleg Kuzmin, Solutions Architect, Databricks\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/3c430b3fd08e47e71c288418a9321d65\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/1bbfe682ab4a0341e520c779f47ba96d7930bb09c6e881f66c953e13579ff10f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/1bbfe682ab4a0341e520c779f47ba96d7930bb09c6e881f66c953e13579ff10f?s=96&d=mm&r=g\",\"caption\":\"Oleg Kuzmin, Solutions Architect, Databricks\"},\"sameAs\":[\"https:\/\/databricks.com\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/oleg-kuzmincouchbase-com\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Value-Only Ejection vs. Full Ejection | Two Ejection Methods","description":"Value-only ejection vs. full ejection - which is best for your buckets? Learn what the tooltip explains in the GUI of our latest Couchbase Server version.","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\/a-tale-of-two-ejection-methods-value-only-vs-full\/","og_locale":"pt_BR","og_type":"article","og_title":"A Tale of Two Ejection Methods: Value-only vs. Full","og_description":"Value-only ejection vs. full ejection - which is best for your buckets? Learn what the tooltip explains in the GUI of our latest Couchbase Server version.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/a-tale-of-two-ejection-methods-value-only-vs-full\/","og_site_name":"The Couchbase Blog","article_published_time":"2020-07-20T07:44:00+00:00","article_modified_time":"2023-09-22T16:32:00+00:00","og_image":[{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2020\/07\/cb-vbucket-metadata-949x1024.jpg","type":"","width":"","height":""}],"author":"Oleg Kuzmin, Sr. Solutions Engineer, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Oleg Kuzmin, Sr. Solutions Engineer, Couchbase","Est. reading time":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/"},"author":{"name":"Oleg Kuzmin, Solutions Architect, Databricks","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/567ed489e7c498f0b9ff0014374c2bcd"},"headline":"A Tale of Two Ejection Methods: Value-only vs. Full","datePublished":"2020-07-20T07:44:00+00:00","dateModified":"2023-09-22T16:32:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/"},"wordCount":1936,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","articleSection":["Best Practices and Tutorials","Couchbase Architecture","Couchbase Server"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/","url":"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/","name":"Value-Only Ejection vs. Full Ejection | Two Ejection Methods","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2020-07-20T07:44:00+00:00","dateModified":"2023-09-22T16:32:00+00:00","description":"Value-only ejection vs. full ejection - which is best for your buckets? Learn what the tooltip explains in the GUI of our latest Couchbase Server version.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","width":1800,"height":630},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/a-tale-of-two-ejection-methods-value-only-vs-full\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"A Tale of Two Ejection Methods: Value-only vs. Full"}]},{"@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\/567ed489e7c498f0b9ff0014374c2bcd","name":"Oleg Kuzmin, arquiteto de solu\u00e7\u00f5es, Databricks","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/3c430b3fd08e47e71c288418a9321d65","url":"https:\/\/secure.gravatar.com\/avatar\/1bbfe682ab4a0341e520c779f47ba96d7930bb09c6e881f66c953e13579ff10f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/1bbfe682ab4a0341e520c779f47ba96d7930bb09c6e881f66c953e13579ff10f?s=96&d=mm&r=g","caption":"Oleg Kuzmin, Solutions Architect, Databricks"},"sameAs":["https:\/\/databricks.com"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/oleg-kuzmincouchbase-com\/"}]}},"authors":[{"term_id":9081,"user_id":1414,"is_guest":0,"slug":"oleg-kuzmincouchbase-com","display_name":"Oleg Kuzmin, Sr. Solutions Engineer, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/0f297a537c749f924978fb4b8fd8d25dd01526af81550a9df5403c58cb300f06?s=96&d=mm&r=g","first_name":"Oleg","last_name":"Kuzmin, Sr. Solutions Engineer, Couchbase","user_url":"https:\/\/couchbase.com","author_category":"","description":"I help companies succeed in the Digital Economy through adoption of the best NoSQL data platform - Couchbase!"}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/8882","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\/1414"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=8882"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/8882\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/13873"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=8882"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=8882"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=8882"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=8882"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}