{"id":2464,"date":"2023-04-18T13:26:45","date_gmt":"2023-04-18T20:26:45","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/"},"modified":"2023-04-18T13:26:45","modified_gmt":"2023-04-18T20:26:45","slug":"consistency-models-couchbase-vs-cockroachdb","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/consistency-models-couchbase-vs-cockroachdb\/","title":{"rendered":"Modelos de Consist\u00eancia de Dados e Desempenho: Couchbase vs. CockroachDB"},"content":{"rendered":"<h2 class=\"wp-block-heading\"><span>Decis\u00f5es de design influenciadas pelo Teorema CAP<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span>O teorema CAP afirma que um banco de dados n\u00e3o pode fornecer simultaneamente todas as tr\u00eas garantias a seguir:<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b>C<\/b><span>consist\u00eancia (as informa\u00e7\u00f5es mais recentes est\u00e3o sempre dispon\u00edveis em todos os lugares)<\/span><\/li>\n\n\n<li><b>A<\/b><span>Disponibilidade (cada solicita\u00e7\u00e3o de leitura e escrita recebe uma resposta)<\/span><\/li>\n\n\n<li><b>P<\/b><span>Toler\u00e2ncia a particionamento (pense nisso como uma forma de toler\u00e2ncia a falhas)<\/span><\/li>\n\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><span>No teorema CAP para bancos de dados, a maioria dos bancos de dados precisa persistir o estado e o valor de seus dados. Os dados precisam de um cont\u00eainer e de um sistema host. Mas executar uma \u00fanica c\u00f3pia dos dados em um \u00fanico host s\u00f3 funciona se o host tiver eletricidade. E os dados s\u00f3 podem estar dispon\u00edveis no host antes e depois de uma queda de energia se forem persistidos em um armazenamento capaz de tolerar a falta de eletricidade. Essas duas necessidades geram a exig\u00eancia de fazer c\u00f3pias dos dados e armazen\u00e1-las em v\u00e1rios hosts e unidades de armazenamento. Assim, clusters s\u00e3o necess\u00e1rios para <\/span><i><span>Parti\u00e7\u00e3o <\/span><\/i><span>toler\u00e2ncia a parti\u00e7\u00f5es (o P no teorema CAP).<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>Portanto, se voc\u00ea precisa de toler\u00e2ncia a parti\u00e7\u00f5es, as escolhas para bancos de dados distribu\u00eddos s\u00e3o entre <\/span><i><span>Consist\u00eancia <\/span><\/i><span>e <\/span><i><span>Disponibilidade<\/span><\/i><span>. A consist\u00eancia exige que as grava\u00e7\u00f5es em cada n\u00f3 ou parti\u00e7\u00e3o de dados sejam consistentes entre si em todo o cluster, porque a integridade dos dados \u00e9 a coisa mais importante. O CockroachDB gosta de citar exemplos de dados importantes como \u201cos c\u00f3digos nucleares\u201d.\u201d\u00a0<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>A disponibilidade \u00e9 o outro atributo do CAP que um banco de dados deve suportar para a confiabilidade operacional \u2013 assim como a Parti\u00e7\u00e3o, o banco de dados \u00e9 in\u00fatil se voc\u00ea n\u00e3o puder encontr\u00e1-lo. Em muitos casos, \u00e9 importante estar sempre \u201cligado\u201d e nunca perder uma solicita\u00e7\u00e3o para salvar ou recuperar os dados. Tanto para pessoas quanto para incont\u00e1veis aplicativos, um banco de dados indispon\u00edvel \u00e9 um obst\u00e1culo intranspon\u00edvel. Portanto, para sistemas AP, a experi\u00eancia \u00e9 a coisa mais importante.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>O CockroachDB \u00e9 baseado em CP, o Couchbase \u00e9 Vari\u00e1vel de CP para AP<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/github.com\/cockroachdb\/cockroach\/blob\/master\/docs\/design.md\"><span>O CockroachDB \u00e9 um banco de dados baseado em CP<\/span><\/a><span>; toda escrita no CockroachDB \u00e9 transacional e replicada de acordo com o mecanismo baseado em consenso <\/span><i><span>Raft <\/span><\/i><span>protocolo para discos contendo intervalos de dados de Chave\/Valor. Portanto, o CockroachDB \u00e9 um banco de dados extremamente fortemente consistente. <\/span><a href=\"https:\/\/www.cockroachlabs.com\/blog\/consistency-model\/\"><span>O \u00f3timo blog deles<\/span><\/a><span> explica que eles \u201cquase\u201d conseguem dar suporte<\/span><a href=\"https:\/\/jepsen.io\/consistency\"> <span>O \u201cStrict Serializable\u201d de Jepsen\u201d<\/span><\/a><span> n\u00edvel de consist\u00eancia em seu banco de dados.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>O Couchbase \u00e9 de fato um banco de dados fortemente consistente tamb\u00e9m, mas oferece vari\u00e1veis para permitir que ele pr\u00f3prio modifique os n\u00edveis de consist\u00eancia em prol da disponibilidade, transformando-o em um sistema AP. A consist\u00eancia ainda pode ser alcan\u00e7ada em milissegundos por meio de replica\u00e7\u00e3o ass\u00edncrona em um cluster, devido ao seu design em mem\u00f3ria. Em contrapartida, o Couchbase concentra-se em entregar desempenho extremamente alto, capacidade de ajuste e disponibilidade. Entregar baixa lat\u00eancia para aplica\u00e7\u00f5es \u00e9 um princ\u00edpio fundamental de design.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>A for\u00e7a do Cockroach \u00e9 o foco na transacionalidade por meio de um design de cluster escal\u00e1vel. A for\u00e7a do Couchbase \u00e9 o foco no desempenho e na flexibilidade em escala. A principal preocupa\u00e7\u00e3o deles com uma aplica\u00e7\u00e3o \u00e9 a integridade dos dados, enquanto a nossa \u00e9 como os dados s\u00e3o usados (muitas vezes por pessoas). Os dados n\u00e3o dizem quando est\u00e3o com o valor errado, mas as pessoas dir\u00e3o quando sua aplica\u00e7\u00e3o estiver lenta ou indispon\u00edvel.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Transa\u00e7\u00f5es ACID<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span>Do ponto de vista transacional, o Couchbase n\u00e3o est\u00e1 seguindo o protocolo RAFT, mas os princ\u00edpios s\u00e3o os mesmos. No entanto, o Couchbase oferece, e recentemente obteve aprova\u00e7\u00e3o de patente para, multidocumento <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/transactions\/\">Transa\u00e7\u00f5es ACID<\/a> para documentos JSON. Ao contr\u00e1rio do CockroachDB, esses recursos s\u00e3o ajust\u00e1veis para<\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/distributed-multi-document-acid-transactions-in-couchbase\/\"><span> durabilidade e n\u00edveis de isolamento<\/span><\/a><span>. De acordo com Jepsen, as transa\u00e7\u00f5es podem ser isoladas para apoiar<\/span><a href=\"https:\/\/docs.couchbase.com\/server\/current\/learn\/data\/transactions.html#overview\"> <span>Leituras At\u00f4micas Monot\u00f4nicas<\/span><\/a><span>, que \u00e9 o n\u00edvel mais alto de isolamento oferecido a sistemas sempre dispon\u00edveis.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Dimensionamento de clusters por meio de Mapas de Localiza\u00e7\u00e3o de Dados<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span>Ambos os bancos de dados distribu\u00eddos escalam bem. O CockroachDB escala seus n\u00f3s definindo clusters raft (geralmente tr\u00eas) de intervalos de dados de chave\/valor em uma parti\u00e7\u00e3o ou armazenamento de dados. Um n\u00f3 do CockroachDB pode hospedar tanto l\u00edderes quanto r\u00e9plicas dos intervalos de dados em seu armazenamento, e o tamanho dos intervalos \u00e9 gerenciado e particionado automaticamente. A parte inteligente do CockroachDB \u00e9 que esses intervalos de dados KV baseados em raft s\u00e3o pequenos e facilmente replic\u00e1veis para outros n\u00f3s. Assim, uma inst\u00e2ncia EC2 pode hospedar muitos conjuntos de intervalos de dados de um l\u00edder e duas r\u00e9plicas.\u00a0<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>A camada de distribui\u00e7\u00e3o da arquitetura deles \u00e9 o que cada n\u00f3 no CockroachDB usa para encontrar a localiza\u00e7\u00e3o dos dados da aplica\u00e7\u00e3o usando sua \u201cestrutura de mapa ordenado monol\u00edtico\u201d. A estrutura em \u00e1rvore desse mapa \u00e9 chamada recursivamente e armazena em cache as localiza\u00e7\u00f5es no n\u00f3. Em seguida, as RPCs enviam solicita\u00e7\u00f5es de consulta em lote para o n\u00f3 que hospeda o l\u00edder da faixa raft.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>O CockroachDB foi projetado de forma que cada n\u00f3 seja homog\u00eaneo, exija pouca configura\u00e7\u00e3o e todos os n\u00f3s fa\u00e7am o mesmo tipo de trabalho. Eles caracterizam seu design de disponibilidade como \u201cdisponibilidade multi-ativa\u201d.\u201d<\/span><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Design de cluster ativo-ativo<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><span>O Couchbase suporta um design de cluster ativo-ativo onde qualquer membro do cluster pode receber uma grava\u00e7\u00e3o ou uma leitura. Essa flexibilidade \u00e9 possibilitada por duas decis\u00f5es de design. Primeiro, de forma semelhante ao CockroachDB, a localiza\u00e7\u00e3o dos dados do Couchbase \u00e9 gerenciada pelo cluster. Mas, ao contr\u00e1rio do CockroachDB, que exige que cada <\/span><i><span>n\u00f3 <\/span><\/i><span>para gerenciar, consultar e fazer cache do mapa, o Couchbase entrega o mapa do cluster ao <\/span><i><span>aplicativo <\/span><\/i><span>dentro do SDK do Couchbase. Dessa forma, a aplica\u00e7\u00e3o sempre sabe onde seus dados est\u00e3o, eliminando consultas de localiza\u00e7\u00e3o que frequentemente drenam os recursos da infraestrutura. O Couchbase reduz o tr\u00e1fego ruidoso dentro do banco de dados para que ele possa armazenar em cache o trabalho real. Uma explica\u00e7\u00e3o das diferen\u00e7as pode ser encontrada neste <\/span><a href=\"https:\/\/db.in.tum.de\/teaching\/ws2021\/clouddataprocessing\/slides\/CDP_3.pdf?lang=en\"><span>apresenta\u00e7\u00e3o de processamento de dados baseado em nuvem<\/span><\/a><span>.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>Os recursos de replica\u00e7\u00e3o e particionamento autom\u00e1tico do Couchbase s\u00e3o gerenciados de forma semelhante ao Cockroach \u2014 os vBuckets dividem os dados do Couchbase em parti\u00e7\u00f5es para gerenciamento de armazenamento e replica\u00e7\u00e3o. O mapa do cluster do Couchbase informa \u00e0 aplica\u00e7\u00e3o onde o n\u00f3 ativo grav\u00e1vel para o vBucket existe e onde suas r\u00e9plicas est\u00e3o localizadas. Em caso de falha de um vBucket ativo, uma r\u00e9plica assume o controle e se torna o conjunto ativo e grav\u00e1vel de documentos. Em seguida, uma r\u00e9plica de substitui\u00e7\u00e3o \u00e9 constru\u00edda e preenchida. Toda a replica\u00e7\u00e3o intra-cluster (e a replica\u00e7\u00e3o inter-cluster via XDCR) ocorre na mem\u00f3ria e seu desempenho \u00e9 ajust\u00e1vel.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Cache em mem\u00f3ria e otimiza\u00e7\u00e3o de desempenho<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/www.cockroachlabs.com\/blog\/memory-usage-cockroachdb\/\"><span>O Blog do CockroachDB<\/span><\/a><span> explica o consumo de mem\u00f3ria, pois ela pode ser usada simultaneamente para v\u00e1rios tipos de atividades de cache, como o cache do RocksDB (que cont\u00e9m os dados de chave-valor para um intervalo de dados), o mapa que localiza os n\u00f3s onde os l\u00edderes de intervalos de dados est\u00e3o hospedados, conex\u00f5es de sess\u00e3o de clientes, canais de consulta para execu\u00e7\u00e3o de consultas SQL, opera\u00e7\u00f5es de consulta SQL e outras atividades de cada camada arquitet\u00f4nica. Naturalmente, quanto mais r\u00e1pido for a CPU do host, mais r\u00e1pidas se tornam algumas opera\u00e7\u00f5es. Ainda assim, parece n\u00e3o haver maneira de equiparar o desempenho de recursos a opera\u00e7\u00f5es espec\u00edficas, como o dimensionamento multidimensional do Couchbase.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>Assim como o CockroachDB, no n\u00facleo do Couchbase h\u00e1 um armazenamento de dados Chave\/Valor de alto desempenho (chamado Magma), que suporta acesso de alta velocidade aos dados. O Couchbase adicionalmente se baseia em seu <\/span><i><span>memcached <\/span><\/i><span>ra\u00edzes, oferecendo processamento em mem\u00f3ria n\u00e3o apenas para este acesso Chave\/Valor, mas tamb\u00e9m para todas as opera\u00e7\u00f5es internas, incluindo replica\u00e7\u00e3o intra-cluster para toler\u00e2ncia a falhas, replica\u00e7\u00e3o inter-cluster (XDCR) para localidade geogr\u00e1fica, bem como opera\u00e7\u00f5es de consulta, busca, an\u00e1lise e eventos. Mas, ao contr\u00e1rio do CockroachDB, o Couchbase tem desempenho configur\u00e1vel, de modo que qualquer um desses servi\u00e7os do Couchbase pode ter seu desempenho ajustado \u00e0 sua infraestrutura de hospedagem e aos requisitos da aplica\u00e7\u00e3o. Se o servi\u00e7o de acesso a dados precisar de mais mem\u00f3ria ou CPU, d\u00ea a ele mais n\u00f3s, RAM ou CPU. Voc\u00ea pode fazer o mesmo com todos os servi\u00e7os independentes do Couchbase. Esse recurso \u00e9 chamado <\/span><i><span>escalonamento multidimensional<\/span><\/i><span>, e \u00e9 exclusiva do Couchbase.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>Com o dimensionamento multidimensional do Couchbase, os servi\u00e7os de replica\u00e7\u00e3o de dados e acesso podem ter seu pr\u00f3prio conjunto de n\u00f3s dedicados e aloca\u00e7\u00f5es de mem\u00f3ria, assim como cada um dos servi\u00e7os de consulta, indexa\u00e7\u00e3o, busca, \"eventing\" e an\u00e1lise.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Suporte a consultas SQL<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span>Ambos os bancos de dados oferecem suporte a SQL. No entanto, o CockroachDB oferece suporte \u00e0 API do PostgreSQL, a estruturas de esquema e ao ANSI SQL. O Couchbase n\u00e3o exige estruturas de esquema, mas elas est\u00e3o dispon\u00edveis. Da mesma forma, o Couchbase n\u00e3o exige tipagem de dados forte, nem oferece suporte a restri\u00e7\u00f5es de esquema espec\u00edficas dentro do banco de dados, deixando para o desenvolvedor do aplicativo a responsabilidade de implement\u00e1-las.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>O Couchbase usa JSON como seu formato de acesso a dados flex\u00edvel e facilmente modificado, e o estendeu para dar suporte a Pesquisa de Texto Completo (Full-Text Search) e estruturas de S\u00e9ries Temporais (Time Series), entre outros. Essa extensibilidade d\u00e1 ao Couchbase a vantagem de poder realizar o trabalho de at\u00e9 seis produtos diferentes. O Couchbase tamb\u00e9m oferece mecanismos de servi\u00e7os para eventos em JavaScript e Python, Fun\u00e7\u00f5es Definidas pelo Usu\u00e1rio, um otimizador de consultas baseado em custo para SQL++ (SQL para JSON, anteriormente chamado de N1QL), agrega\u00e7\u00f5es anal\u00edticas em dados ativos e realiza\u00e7\u00e3o de backups do banco de dados. As interfaces para esses servi\u00e7os s\u00e3o intencionalmente intuitivas para ajudar na integra\u00e7\u00e3o r\u00e1pida, por exemplo, usando SQL++ j\u00e1 que ele opera de forma id\u00eantica ao SQL para a maioria dos usu\u00e1rios.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Replica\u00e7\u00e3o e sincroniza\u00e7\u00e3o<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span>O CockroachDB n\u00e3o oferece suporte \u00e0 replica\u00e7\u00e3o entre data centers, mas pode implantar n\u00f3s de cluster em diferentes regi\u00f5es geogr\u00e1ficas. O Couchbase oferece suporte \u00e0 consist\u00eancia eventual para o XDCR e usa um m\u00e9todo de resolu\u00e7\u00e3o de conflitos baseado em CAS (Check and Swap) quando s\u00e3o encontrados documentos com o mesmo valor CAS carimbado por HCL (rel\u00f3gio h\u00edbrido local). Nesse caso, o documento acessado mais ativamente ou o mais recente pode ser especificado como o vencedor. O CockroachDB tamb\u00e9m usa um HCL como seu carimbo de data\/hora para consist\u00eancia e resolu\u00e7\u00e3o de conflitos. O Couchbase tamb\u00e9m oferece recursos de sincroniza\u00e7\u00e3o m\u00f3vel para seu banco de dados m\u00f3vel Couchbase Lite.<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Lendo dados desatualizados<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span>Os recursos de replica\u00e7\u00e3o, incluindo aqueles para manter a consist\u00eancia de leitura e escrita (Serializada para o CockroachDB, Vis\u00e3o At\u00f4mica Monot\u00f4nica para transa\u00e7\u00f5es distribu\u00eddas do Couchbase) e qualquer outra atividade no CockroachDB, s\u00e3o tratados como uma transa\u00e7\u00e3o com garantias ACID. Para leituras, o CockroachDB oferece ambos:<\/span><\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><b>Fortemente consistente <\/b><span>(\u201cn\u00e3o obsoleto\u201d) <\/span><b>l\u00ea<\/b><span>O tipo de leitura padr\u00e3o e mais comum, eles passam pelo<\/span><a href=\"https:\/\/www.cockroachlabs.com\/docs\/v22.2\/architecture\/replication-layer#leases\"> <span>arrendat\u00e1rio<\/span><\/a><span> onde essas leituras veem todas as grava\u00e7\u00f5es realizadas por escritores que se confirmaram antes que a transa\u00e7\u00e3o de leitura come\u00e7asse. Elas sempre retornam dados corretos e atualizados.<\/span><\/li>\n\n\n<li><b>Leituras desatualizadas<\/b><span>\u00datil em situa\u00e7\u00f5es em que voc\u00ea pode se dar ao trabalho de ler dados ligeiramente desatualizados em troca de leituras mais r\u00e1pidas. Eles s\u00f3 podem ser usados em transa\u00e7\u00f5es somente leitura que usam o <\/span><i><span>A PARTIR DA HORA DO SISTEMA <\/span><\/i><span>cl\u00e1usula. Eles n\u00e3o precisam passar pelo locat\u00e1rio, pois garantem consist\u00eancia fazendo a leitura de uma r\u00e9plica local em um carimbo de data\/hora que nunca \u00e9 superior ao<\/span><a href=\"https:\/\/www.cockroachlabs.com\/docs\/v22.2\/architecture\/transaction-layer#closed-timestamps\"> <span>carimbo de data\/hora de fechamento<\/span><\/a><span>.<\/span><\/li>\n\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><span>O Couchbase \u00e9 um banco de dados fortemente consistente cujo n\u00edvel de isolamento deve ser considerado <\/span><i><span>Vis\u00e3o At\u00f4mica Monot\u00f4nica <\/span><\/i><span>para leituras transacionais. O Couchbase pode retornar dados desatualizados quando n\u00e3o se usam transa\u00e7\u00f5es ACID, mas isso \u00e9 control\u00e1vel pelo desenvolvedor.\u00a0\u00a0<\/span><\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><span>Qual banco de dados escolher?<\/span><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><span>Se transa\u00e7\u00f5es dur\u00e1veis para 100% dos seus dados forem sua principal (ou \u00fanica) preocupa\u00e7\u00e3o, opte pelo CockroachDB. No entanto, devido \u00e0 sua rigidez \u2014 por se tratar de um projeto relacional e de uma instala\u00e7\u00e3o monol\u00edtica \u2014, ele n\u00e3o \u00e9 facilmente ajust\u00e1vel \u00e0s necessidades de desempenho e escalabilidade do seu aplicativo, exceto no que diz respeito \u00e0 escalabilidade de transa\u00e7\u00f5es e armazenamento. Por isso, \u00e9 prov\u00e1vel que o CockroachDB apresente problemas de desempenho imprevistos, cuja \u00fanica solu\u00e7\u00e3o seja o escalonamento vertical \u2014 por meio da adi\u00e7\u00e3o de RAM ou CPU \u2014, al\u00e9m do escalonamento horizontal para armazenamento. Como utiliza um projeto baseado em esquema, ser\u00e1 mais dif\u00edcil evoluir e fazer altera\u00e7\u00f5es depois que o banco de dados for implantado.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>Se desempenho, flexibilidade, adaptabilidade da aplica\u00e7\u00e3o, satisfa\u00e7\u00e3o do usu\u00e1rio, escala geogr\u00e1fica, custo-benef\u00edcio ou mobilidade forem motivo de preocupa\u00e7\u00e3o, use o Couchbase. O Couchbase oferece in\u00fameros recursos de ajuste de desempenho e otimiza\u00e7\u00e3o de infraestrutura que podem maximizar a efici\u00eancia do seu ambiente. O Couchbase entregar\u00e1 tempos de lat\u00eancia impressionantemente baixos que n\u00e3o se deteriorar\u00e3o sob carga ou em escala. Isso garante que o Couchbase possa realizar mais trabalho com menos recursos e tamb\u00e9m seja mais custo-efetivo no geral.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>O design baseado em JSON do Couchbase permite que a equipe de desenvolvimento controle as estruturas de dados usadas pela aplica\u00e7\u00e3o, e modifica\u00e7\u00f5es nessas estruturas podem ser feitas de forma cont\u00ednua, mesmo ap\u00f3s a aplica\u00e7\u00e3o estar em produ\u00e7\u00e3o. O Couchbase oferece transa\u00e7\u00f5es ACID distribu\u00eddas e multi-documento, mas n\u00e3o as torna obrigat\u00f3rias. Essa escolha de design permite que os desenvolvedores equilibrem garantias transacionais com necessidades de desempenho e disponibilidade.\u00a0<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>O Couchbase oferece XDCR e servi\u00e7os de aplicativos m\u00f3veis, incluindo um banco de dados embutido, o Couchbase Lite. Em \u00faltima an\u00e1lise, o Couchbase entrega dados mais perto de onde um aplicativo ir\u00e1 consumi-los e suporta mais padr\u00f5es de design de acesso a dados (Chave\/Valor, JSON, Busca, relacional, s\u00e9rie temporal, anal\u00edtico e de eventos), oferecendo aos desenvolvedores mais liberdade de recursos sem introduzir mais complexidade arquitetural. O Couchbase oferece \u00e0s equipes de desenvolvimento mais op\u00e7\u00f5es e liberdade para construir o que precisam.\u00a0\u00a0<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><span>Ambos s\u00e3o \u00f3timos bancos de dados, mas por motivos diferentes.<\/span><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\u00a0<\/p>","protected":false},"excerpt":{"rendered":"<p>Design decisions influenced by CAP Theorem The CAP theorem states that a database cannot simultaneously provide all three of the following guarantees: In the CAP theorem for databases, most databases need to persist the state and value of their data. Data needs a container and a host system. But running a single copy of data [&hellip;]<\/p>\n","protected":false},"author":62223,"featured_media":2463,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"_acf":"","footnotes":"","_ppma_block_editor_authors":""},"categories":[127,179,54,359],"tags":[385,647,648,46,514,649],"ppma_author":[416],"class_list":["post-2464","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-application-design","category-couchbase-architecture","category-couchbase-server","category-transactions","tag-acid-transactions","tag-cap-theorem","tag-cockroachdb","tag-consistency","tag-high-availability","tag-partitioning"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v28.6 (Yoast SEO v28.6) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Data Consistency Models: Couchbase vs. CockroachDB<\/title>\n<meta name=\"description\" content=\"When it comes to Couchbase vs. CockroachDB, what are the major differences? This post details important distinctions in data consistency modeling.\" \/>\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\/consistency-models-couchbase-vs-cockroachdb\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data Consistency Models &amp; Performance: Couchbase vs. CockroachDB\" \/>\n<meta property=\"og:description\" content=\"When it comes to Couchbase vs. CockroachDB, what are the major differences? This post details important distinctions in data consistency modeling.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/consistency-models-couchbase-vs-cockroachdb\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2023-04-18T20:26:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/consistency-compare-cockroachdb-couchbase.png\" \/>\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\/png\" \/>\n<meta name=\"author\" content=\"Jeff Morris, VP Product Marketing\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@JeffMMorris\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeff Morris, VP Product Marketing\" \/>\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\\\/consistency-models-couchbase-vs-cockroachdb\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/\"},\"author\":{\"name\":\"Jeff Morris, VP Product Marketing\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/d64e614a24acc9ed36e77607fc2fb647\"},\"headline\":\"Data Consistency Models &#038; Performance: Couchbase vs. CockroachDB\",\"datePublished\":\"2023-04-18T20:26:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/\"},\"wordCount\":1960,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/consistency-compare-cockroachdb-couchbase.png\",\"keywords\":[\"ACID transactions\",\"CAP Theorem\",\"CockroachDB\",\"Consistency\",\"High Availability\",\"Partitioning\"],\"articleSection\":[\"Application Design\",\"Couchbase Architecture\",\"Couchbase Server\",\"Transactions\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/\",\"name\":\"Data Consistency Models: Couchbase vs. CockroachDB\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/consistency-compare-cockroachdb-couchbase.png\",\"datePublished\":\"2023-04-18T20:26:45+00:00\",\"description\":\"When it comes to Couchbase vs. CockroachDB, what are the major differences? This post details important distinctions in data consistency modeling.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/consistency-compare-cockroachdb-couchbase.png\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/05\\\/consistency-compare-cockroachdb-couchbase.png\",\"width\":1200,\"height\":628},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/consistency-models-couchbase-vs-cockroachdb\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data Consistency Models &#038; Performance: Couchbase vs. CockroachDB\"}]},{\"@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\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"contentUrl\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2026\\\/06\\\/logo.svg\",\"width\":\"1024\",\"height\":\"1024\",\"caption\":\"The Couchbase Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/#\\\/schema\\\/person\\\/d64e614a24acc9ed36e77607fc2fb647\",\"name\":\"Jeff Morris, VP Product Marketing\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c718e94092d1dde50a7ed8a265dcb948a7d005dd850bfd0daefe013cbe388a6?s=96&d=mm&r=gd30352f9b7e0c9862c1707074f15bcd0\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c718e94092d1dde50a7ed8a265dcb948a7d005dd850bfd0daefe013cbe388a6?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/8c718e94092d1dde50a7ed8a265dcb948a7d005dd850bfd0daefe013cbe388a6?s=96&d=mm&r=g\",\"caption\":\"Jeff Morris, VP Product Marketing\"},\"description\":\"Jeff Morris is VP of Product, Solutions and Customer Marketing at Couchbase. He's spent over three decades marketing software development tools, databases, analytic tools and other open source products. Needless to say, he's a big believer in Couchbase Capella because it is as easy as SQL, versatile for many use cases and blazingly fast, which delivers exceptionally low TCO.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/jeffmorris3\\\/\",\"https:\\\/\\\/x.com\\\/JeffMMorris\"],\"url\":\"https:\\\/\\\/www.couchbase.com\\\/blog\\\/pt\\\/author\\\/jmorris\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Data Consistency Models: Couchbase vs. CockroachDB","description":"When it comes to Couchbase vs. CockroachDB, what are the major differences? This post details important distinctions in data consistency modeling.","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\/consistency-models-couchbase-vs-cockroachdb\/","og_locale":"pt_BR","og_type":"article","og_title":"Data Consistency Models & Performance: Couchbase vs. CockroachDB","og_description":"When it comes to Couchbase vs. CockroachDB, what are the major differences? This post details important distinctions in data consistency modeling.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/consistency-models-couchbase-vs-cockroachdb\/","og_site_name":"The Couchbase Blog","article_published_time":"2023-04-18T20:26:45+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/consistency-compare-cockroachdb-couchbase.png","type":"image\/png"}],"author":"Jeff Morris, VP Product Marketing","twitter_card":"summary_large_image","twitter_creator":"@JeffMMorris","twitter_misc":{"Written by":"Jeff Morris, VP Product Marketing","Est. reading time":"9 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/"},"author":{"name":"Jeff Morris, VP Product Marketing","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/d64e614a24acc9ed36e77607fc2fb647"},"headline":"Data Consistency Models &#038; Performance: Couchbase vs. CockroachDB","datePublished":"2023-04-18T20:26:45+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/"},"wordCount":1960,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/consistency-compare-cockroachdb-couchbase.png","keywords":["ACID transactions","CAP Theorem","CockroachDB","Consistency","High Availability","Partitioning"],"articleSection":["Application Design","Couchbase Architecture","Couchbase Server","Transactions"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/","url":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/","name":"Data Consistency Models: Couchbase vs. CockroachDB","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/consistency-compare-cockroachdb-couchbase.png","datePublished":"2023-04-18T20:26:45+00:00","description":"When it comes to Couchbase vs. CockroachDB, what are the major differences? This post details important distinctions in data consistency modeling.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/#primaryimage","url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/consistency-compare-cockroachdb-couchbase.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/05\/consistency-compare-cockroachdb-couchbase.png","width":1200,"height":628},{"@type":"BreadcrumbList","@id":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Data Consistency Models &#038; Performance: Couchbase vs. CockroachDB"}]},{"@type":"WebSite","@id":"https:\/\/www.couchbase.com\/blog\/#website","url":"https:\/\/www.couchbase.com\/blog\/","name":"O Blog da 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":"O Blog da 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\/sites\/5\/2026\/06\/logo.svg","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/5\/2026\/06\/logo.svg","width":"1024","height":"1024","caption":"The Couchbase Blog"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/d64e614a24acc9ed36e77607fc2fb647","name":"Jeff Morris, VP de Marketing de Produto","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/8c718e94092d1dde50a7ed8a265dcb948a7d005dd850bfd0daefe013cbe388a6?s=96&d=mm&r=gd30352f9b7e0c9862c1707074f15bcd0","url":"https:\/\/secure.gravatar.com\/avatar\/8c718e94092d1dde50a7ed8a265dcb948a7d005dd850bfd0daefe013cbe388a6?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/8c718e94092d1dde50a7ed8a265dcb948a7d005dd850bfd0daefe013cbe388a6?s=96&d=mm&r=g","caption":"Jeff Morris, VP Product Marketing"},"description":"Jeff Morris is VP of Product, Solutions and Customer Marketing at Couchbase. He's spent over three decades marketing software development tools, databases, analytic tools and other open source products. Needless to say, he's a big believer in Couchbase Capella because it is as easy as SQL, versatile for many use cases and blazingly fast, which delivers exceptionally low TCO.","sameAs":["https:\/\/www.linkedin.com\/in\/jeffmorris3\/","https:\/\/x.com\/JeffMMorris"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/jmorris\/"}]}},"acf":[],"authors":[{"term_id":416,"user_id":62223,"is_guest":0,"slug":"jmorris","display_name":"Jeff Morris, VP Product Marketing","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/?s=96&d=mm&r=g","author_category":"","first_name":"Jeff","last_name":"Morris, VP Product Marketing","user_url":"","job_title":"","description":"Jeff Morris is VP of Product, Solutions and Customer Marketing at Couchbase. He's spent over three decades marketing software development tools, databases, analytic tools and other open source products. Needless to say, he's a big believer in Couchbase Capella because it is as easy as SQL, versatile for many use cases and blazingly fast, which delivers exceptionally low TCO."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2464","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\/62223"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2464"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2464\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/2463"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=2464"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2464"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2464"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2464"}],"curies":[{"name":"bem-jogado","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}