{"id":14305,"date":"2023-04-18T13:26:45","date_gmt":"2023-04-18T20:26:45","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=14305"},"modified":"2024-04-16T09:24:10","modified_gmt":"2024-04-16T16:24:10","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><span style=\"font-weight: 400;\">Decis\u00f5es de design influenciadas pelo Teorema CAP<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">O teorema CAP afirma que um banco de dados n\u00e3o pode fornecer simultaneamente todas as tr\u00eas garantias a seguir:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li><b>C<\/b><span style=\"font-weight: 400;\">onsist\u00eancia (as informa\u00e7\u00f5es mais recentes est\u00e3o sempre dispon\u00edveis em todos os lugares)<\/span><\/li>\n<li><b>A<\/b><span style=\"font-weight: 400;\">disponibilidade (cada solicita\u00e7\u00e3o de leitura e grava\u00e7\u00e3o recebe uma resposta)<\/span><\/li>\n<li><b>P<\/b><span style=\"font-weight: 400;\">Toler\u00e2ncia de particionamento (pense nisso como uma forma de toler\u00e2ncia a falhas)<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">No teorema CAP para bancos de dados, a maioria dos bancos de dados precisa manter o estado e o valor de seus dados. Os dados precisam de um cont\u00eainer e de um sistema host. Mas a execu\u00e7\u00e3o de uma \u00fanica c\u00f3pia de 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 el\u00e9trica se forem persistidos em um armazenamento que possa tolerar a falta de eletricidade. Essas duas necessidades geram o requisito de fazer c\u00f3pias de dados e armazen\u00e1-las em v\u00e1rios hosts e unidades de armazenamento. Assim, os clusters s\u00e3o necess\u00e1rios para <\/span><i><span style=\"font-weight: 400;\">Parti\u00e7\u00e3o <\/span><\/i><span style=\"font-weight: 400;\">toler\u00e2ncia em um banco de dados (o P no teorema CAP).<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Portanto, se voc\u00ea precisa ter toler\u00e2ncia de parti\u00e7\u00e3o, as compensa\u00e7\u00f5es para bancos de dados distribu\u00eddos est\u00e3o entre <\/span><i><span style=\"font-weight: 400;\">Consist\u00eancia <\/span><\/i><span style=\"font-weight: 400;\">e <\/span><i><span style=\"font-weight: 400;\">Disponibilidade<\/span><\/i><span style=\"font-weight: 400;\">. 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, pois a integridade dos dados \u00e9 o mais importante. O CockroachDB gosta de chamar a aten\u00e7\u00e3o para exemplos de dados importantes, como \"os c\u00f3digos nucleares\".\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A disponibilidade \u00e9 o outro atributo do CAP que um banco de dados deve suportar para ter confiabilidade operacional - como a parti\u00e7\u00e3o, o banco de dados \u00e9 in\u00fatil se voc\u00ea n\u00e3o conseguir encontr\u00e1-lo. Em muitos casos, \u00e9 importante estar sempre \"ligado\" e nunca perder uma solicita\u00e7\u00e3o para salvar ou recuperar os dados. Tanto para as pessoas quanto para in\u00fameros aplicativos, um banco de dados indispon\u00edvel \u00e9 um obst\u00e1culo. Portanto, para os sistemas AP, a experi\u00eancia \u00e9 o mais importante.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">O CockroachDB \u00e9 baseado em CP, o Couchbase \u00e9 vari\u00e1vel de CP para AP<\/span><\/h2>\n<p><a href=\"https:\/\/github.com\/cockroachdb\/cockroach\/blob\/master\/docs\/design.md\"><span style=\"font-weight: 400;\">O CockroachDB \u00e9 um banco de dados baseado em CP<\/span><\/a><span style=\"font-weight: 400;\">Cada grava\u00e7\u00e3o no CockroachDB \u00e9 transacional e replicada de acordo com o consenso baseado em <\/span><i><span style=\"font-weight: 400;\">RAFT <\/span><\/i><span style=\"font-weight: 400;\">para armazenamentos em disco que cont\u00eam intervalos de dados de chave\/valor. Portanto, o CockroachDB \u00e9 um banco de dados extremamente consistente. <\/span><a href=\"https:\/\/www.cockroachlabs.com\/blog\/consistency-model\/\"><span style=\"font-weight: 400;\">Seu excelente blog<\/span><\/a><span style=\"font-weight: 400;\"> explica que eles s\u00e3o \"quase\" capazes de suportar<\/span><a href=\"https:\/\/jepsen.io\/consistency\"> <span style=\"font-weight: 400;\">\"Serializ\u00e1vel estrito\" de Jepsen<\/span><\/a><span style=\"font-weight: 400;\"> n\u00edvel de consist\u00eancia em seu banco de dados.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O Couchbase tamb\u00e9m \u00e9, de fato, um banco de dados altamente consistente, mas oferece vari\u00e1veis que permitem modificar os n\u00edveis de consist\u00eancia para disponibilidade, transformando-o em um sistema AP. A consist\u00eancia ainda pode ser obtida em milissegundos por meio de replica\u00e7\u00e3o ass\u00edncrona entre um cluster devido ao seu design na mem\u00f3ria. No com\u00e9rcio, o Couchbase se concentra em fornecer desempenho, capacidade de ajuste e disponibilidade extremamente altos. O fornecimento de baixa lat\u00eancia aos aplicativos \u00e9 um princ\u00edpio de design prim\u00e1rio.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O ponto forte do Cockroach \u00e9 seu foco na transacionalidade por meio de um design de cluster escal\u00e1vel. O ponto forte do Couchbase \u00e9 seu foco no desempenho e na flexibilidade em escala. A principal preocupa\u00e7\u00e3o deles com um aplicativo \u00e9 a integridade dos dados, enquanto a nossa \u00e9 como os dados s\u00e3o usados (geralmente por pessoas). Os dados n\u00e3o informam quando t\u00eam o valor errado, mas as pessoas informam quando o aplicativo est\u00e1 lento ou indispon\u00edvel.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Transa\u00e7\u00f5es ACID<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">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 recebeu aprova\u00e7\u00e3o de patente para, multi-documentos <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/transactions\/\">Transa\u00e7\u00f5es ACID<\/a> para documentos JSON. Ao contr\u00e1rio do CockroachDB, esses recursos podem ser ajustados para<\/span><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/distributed-multi-document-acid-transactions-in-couchbase\/\"><span style=\"font-weight: 400;\"> n\u00edveis de durabilidade e isolamento<\/span><\/a><span style=\"font-weight: 400;\">. 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 style=\"font-weight: 400;\">Leituras at\u00f4micas monot\u00f4nicas<\/span><\/a><span style=\"font-weight: 400;\">que \u00e9 o n\u00edvel mais alto de isolamento oferecido aos sistemas sempre dispon\u00edveis.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Dimensionamento de clusters por meio de mapas de localiza\u00e7\u00e3o de dados<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Ambos os bancos de dados distribu\u00eddos s\u00e3o bem dimensionados. O CockroachDB dimensiona seus n\u00f3s definindo clusters de balsas (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. Portanto, uma inst\u00e2ncia do EC2 pode hospedar muitos conjuntos de intervalos de dados de l\u00edder e duas r\u00e9plicas.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">A camada de distribui\u00e7\u00e3o de sua arquitetura \u00e9 o que cada n\u00f3 do CockroachDB usa para encontrar o local dos dados do aplicativo usando sua \"estrutura de mapa classificado monol\u00edtico\". A estrutura em \u00e1rvore desse mapa \u00e9 chamada recursivamente e armazena em cache os locais no n\u00f3. Em seguida, os RPCs enviam solicita\u00e7\u00f5es de consulta em lote para o n\u00f3 que hospeda o l\u00edder do intervalo de balsas.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">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 projeto de disponibilidade como \"disponibilidade multiativa\".<\/span><\/p>\n<h3>Projeto de cluster ativo-ativo<\/h3>\n<p><span style=\"font-weight: 400;\">O Couchbase oferece suporte ao design de cluster ativo-ativo, em que qualquer membro do cluster pode fazer uma grava\u00e7\u00e3o ou uma leitura. Essa flexibilidade \u00e9 poss\u00edvel gra\u00e7as a duas decis\u00f5es de projeto. Primeiro, semelhante ao CockroachDB, o local dos dados do Couchbase \u00e9 gerenciado pelo cluster. Mas, diferentemente do CockroachDB, que exige que cada <\/span><i><span style=\"font-weight: 400;\">n\u00f3 <\/span><\/i><span style=\"font-weight: 400;\">para gerenciar, consultar e armazenar em cache o mapa, o Couchbase fornece o mapa do cluster para o <\/span><i><span style=\"font-weight: 400;\">aplicativo <\/span><\/i><span style=\"font-weight: 400;\">no SDK do Couchbase. Dessa forma, o aplicativo sempre sabe onde est\u00e3o os dados, eliminando as consultas de localiza\u00e7\u00e3o que geralmente esgotam os recursos da infraestrutura. O Couchbase reduz o tr\u00e1fego ruidoso no 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 style=\"font-weight: 400;\">apresenta\u00e7\u00e3o de processamento de dados com base na nuvem<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Os recursos de replica\u00e7\u00e3o e particionamento autom\u00e1tico do Couchbase s\u00e3o gerenciados de forma semelhante ao Cockroach - os vBuckets dividem os dados do Couchbase em parti\u00e7\u00f5es para gerenciamento de replica\u00e7\u00e3o e armazenamento. O mapa do cluster do Couchbase informa ao aplicativo onde existe o n\u00f3 ativo grav\u00e1vel para o vBucket e onde est\u00e3o localizadas suas r\u00e9plicas. No caso de falha de um vBucket ativo, uma r\u00e9plica assume o controle e se torna o conjunto de documentos ativo e grav\u00e1vel. Em seguida, uma r\u00e9plica substituta \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 pode ser ajustada em termos de desempenho.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Cache na mem\u00f3ria e ajuste de desempenho<\/span><\/h2>\n<p><a href=\"https:\/\/www.cockroachlabs.com\/blog\/memory-usage-cockroachdb\/\"><span style=\"font-weight: 400;\">Blog do CockroachDB<\/span><\/a><span style=\"font-weight: 400;\"> Isso explica o consumo de mem\u00f3ria, pois ela pode ser usada simultaneamente para muitos tipos de atividades de cache, como o cache do RocksDB (que cont\u00e9m os dados KV de um intervalo de dados), o mapa que localiza os n\u00f3s onde os l\u00edderes do intervalo de dados est\u00e3o hospedados, as conex\u00f5es de sess\u00e3o dos clientes, os canais de consulta para executar consultas SQL, as opera\u00e7\u00f5es de consulta SQL e outras atividades de cada camada arquitet\u00f4nica. Obviamente, quanto mais r\u00e1pida for a CPU do host, mais r\u00e1pidas ser\u00e3o algumas opera\u00e7\u00f5es. Ainda assim, parece n\u00e3o haver uma maneira de combinar o desempenho dos recursos com opera\u00e7\u00f5es espec\u00edficas, como o dimensionamento multidimensional do Couchbase.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Como o CockroachDB, o n\u00facleo do Couchbase \u00e9 um armazenamento de dados de chave\/valor de alto desempenho (chamado Magma), que oferece suporte ao acesso de alta velocidade aos dados. Al\u00e9m disso, o Couchbase se baseia em seu <\/span><i><span style=\"font-weight: 400;\">memcached <\/span><\/i><span style=\"font-weight: 400;\">oferecendo processamento na mem\u00f3ria n\u00e3o apenas desse acesso a chave\/valor, mas tamb\u00e9m de todas as opera\u00e7\u00f5es internas, inclusive 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, pesquisa, an\u00e1lise e eventos. Mas, ao contr\u00e1rio do CockroachDB, o Couchbase \u00e9 configur\u00e1vel em termos de desempenho, de modo que qualquer um desses servi\u00e7os do Couchbase pode ser adaptado \u00e0 sua infraestrutura de hospedagem e aos requisitos do aplicativo. Se o servi\u00e7o de acesso a dados precisar de mais mem\u00f3ria ou CPU, forne\u00e7a 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 de <\/span><i><span style=\"font-weight: 400;\">escalonamento multidimensional<\/span><\/i><span style=\"font-weight: 400;\">e \u00e9 exclusivo do Couchbase.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Com o dimensionamento multidimensional do Couchbase, os servi\u00e7os de acesso e replica\u00e7\u00e3o de dados podem ter seu pr\u00f3prio conjunto de aloca\u00e7\u00f5es dedicadas de n\u00f3 e mem\u00f3ria, assim como cada um dos servi\u00e7os de consulta, indexa\u00e7\u00e3o, pesquisa, eventos e an\u00e1lise.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Suporte a consultas SQL<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Ambos os bancos de dados oferecem suporte para SQL. No entanto, o CockroachDB \u00e9 compat\u00edvel com a API do PostgreSQL, estruturas de esquema e 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 forte de dados, nem oferece suporte a restri\u00e7\u00f5es de esquema espec\u00edficas no banco de dados, deixando para o desenvolvedor do aplicativo a tarefa de implement\u00e1-las.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O Couchbase usa JSON como formato de acesso a dados flex\u00edvel e facilmente modific\u00e1vel e o ampliou para oferecer suporte a estruturas de pesquisa de texto completo e s\u00e9ries temporais, entre outras. Essa extensibilidade d\u00e1 ao Couchbase a vantagem de ser capaz de fazer o trabalho de at\u00e9 seis produtos diferentes. O Couchbase tamb\u00e9m oferece mecanismos de servi\u00e7o para eventos JavaScript e Python, fun\u00e7\u00f5es definidas pelo usu\u00e1rio, um otimizador de consulta baseado em custo para SQL++ (SQL para JSON, anteriormente chamado de N1QL), agrega\u00e7\u00f5es anal\u00edticas em dados ativos e backups do banco de dados. As interfaces para esses servi\u00e7os s\u00e3o intencionalmente intuitivas para ajudar na r\u00e1pida integra\u00e7\u00e3o, por exemplo, usando o SQL++, pois ele opera de forma id\u00eantica ao SQL para a maioria dos usu\u00e1rios.<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Replica\u00e7\u00e3o e sincroniza\u00e7\u00e3o<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">O CockroachDB n\u00e3o oferece suporte \u00e0 replica\u00e7\u00e3o entre datacenters, mas pode implantar n\u00f3s de cluster em diferentes regi\u00f5es geogr\u00e1ficas. O Couchbase oferece suporte \u00e0 consist\u00eancia eventual para 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 com carimbo HCL (rel\u00f3gio local h\u00edbrido). Nesse caso, o documento acessado mais ativamente ou o mais recente pode ser especificado como vencedor. O CockroachDB tamb\u00e9m usa um HCL como seu registro de data e 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<h2><span style=\"font-weight: 400;\">Leitura de dados obsoletos<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Os recursos de replica\u00e7\u00e3o, incluindo aqueles para manter a consist\u00eancia de grava\u00e7\u00e3o e leitura (Serialized para CockroachDB, Monotonic Atomic View para transa\u00e7\u00f5es distribu\u00eddas do Couchbase) e todas as outras atividades no CockroachDB s\u00e3o tratadas como uma transa\u00e7\u00e3o com garantias ACID. Para leituras, o CockroachDB oferece ambos:<\/span><\/p>\n<ul>\n<li style=\"list-style-type: none;\">\n<ul>\n<li style=\"font-weight: 400;\"><b>Fortemente consistente <\/b><span style=\"font-weight: 400;\">(\"n\u00e3o-v\u00e1lido\") <\/span><b>leituras<\/b><span style=\"font-weight: 400;\">: O tipo padr\u00e3o e mais comum de leitura, eles passam pelo<\/span><a href=\"https:\/\/www.cockroachlabs.com\/docs\/v22.2\/architecture\/replication-layer#leases\"> <span style=\"font-weight: 400;\">arrendat\u00e1rio<\/span><\/a><span style=\"font-weight: 400;\"> em que essas leituras veem todas as grava\u00e7\u00f5es realizadas por gravadores que foram confirmadas antes do in\u00edcio da transa\u00e7\u00e3o de leitura. Elas sempre retornam dados corretos e atualizados.<\/span><\/li>\n<li style=\"font-weight: 400;\"><b>Leituras obsoletas<\/b><span style=\"font-weight: 400;\">: \u00datil em situa\u00e7\u00f5es em que voc\u00ea pode se dar ao luxo de ler dados ligeiramente obsoletos em troca de leituras mais r\u00e1pidas. Eles s\u00f3 podem ser usados em transa\u00e7\u00f5es somente de leitura que usam a fun\u00e7\u00e3o <\/span><i><span style=\"font-weight: 400;\">A PARTIR DA HORA DO SISTEMA <\/span><\/i><span style=\"font-weight: 400;\">cl\u00e1usula. Eles n\u00e3o precisam passar pelo leaseholder, pois garantem a consist\u00eancia lendo de uma r\u00e9plica local em um registro de data e hora que nunca \u00e9 maior que o<\/span><a href=\"https:\/\/www.cockroachlabs.com\/docs\/v22.2\/architecture\/transaction-layer#closed-timestamps\"> <span style=\"font-weight: 400;\">carimbo de data\/hora de fechamento<\/span><\/a><span style=\"font-weight: 400;\">.<\/span><\/li>\n<\/ul>\n<\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\">O Couchbase \u00e9 um banco de dados altamente consistente, cujo n\u00edvel de isolamento deve ser considerado <\/span><i><span style=\"font-weight: 400;\">Vis\u00e3o at\u00f4mica monot\u00f4nica <\/span><\/i><span style=\"font-weight: 400;\">para leituras transacionais. O Couchbase pode retornar dados obsoletos quando n\u00e3o estiver usando transa\u00e7\u00f5es ACID, mas isso pode ser controlado pelo desenvolvedor.\u00a0\u00a0<\/span><\/p>\n<h2><span style=\"font-weight: 400;\">Qual banco de dados escolher?<\/span><\/h2>\n<p><span style=\"font-weight: 400;\">Se as transa\u00e7\u00f5es dur\u00e1veis para 100% de seus dados forem sua principal (ou \u00fanica) preocupa\u00e7\u00e3o, escolha o CockroachDB. Mas, devido \u00e0 sua inflexibilidade, por ser um projeto relacional e uma instala\u00e7\u00e3o monol\u00edtica, ele n\u00e3o \u00e9 facilmente ajust\u00e1vel \u00e0s necessidades de desempenho e dimensionamento do seu aplicativo, exceto pelo dimensionamento de transa\u00e7\u00f5es e armazenamento. Por esse motivo, o CockroachDB provavelmente apresentar\u00e1 problemas de desempenho imprevistos, cuja \u00fanica solu\u00e7\u00e3o \u00e9 dimensionar verticalmente adicionando RAM ou CPU, al\u00e9m de dimensionar horizontalmente o armazenamento. Como ele usa um design baseado em esquema, ser\u00e1 mais dif\u00edcil evoluir e mudar depois que o banco de dados for implantado.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Se o desempenho, a flexibilidade, a adaptabilidade do aplicativo, a satisfa\u00e7\u00e3o do usu\u00e1rio, a escala geogr\u00e1fica, a rela\u00e7\u00e3o custo-benef\u00edcio ou a mobilidade forem uma preocupa\u00e7\u00e3o, use o Couchbase. O Couchbase oferece v\u00e1rios recursos de ajuste de desempenho e otimiza\u00e7\u00e3o de infraestrutura que podem maximizar a efici\u00eancia do seu ambiente. O Couchbase fornecer\u00e1 tempos de lat\u00eancia impressionantemente baixos que n\u00e3o se deteriorar\u00e3o sob carga ou em escala. Isso garante que o Couchbase possa fazer mais trabalho com menos recursos e tamb\u00e9m ser mais econ\u00f4mico em geral.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O design baseado em JSON do Couchbase permite que a equipe de desenvolvimento controle as estruturas de dados usadas pelo aplicativo, e as modifica\u00e7\u00f5es nessas estruturas podem ser feitas continuamente, mesmo depois que o aplicativo estiver em produ\u00e7\u00e3o. O Couchbase oferece transa\u00e7\u00f5es ACID distribu\u00eddas e com v\u00e1rios documentos, mas n\u00e3o as exige. Essa escolha de projeto permite que os desenvolvedores equilibrem as garantias transacionais com as necessidades de desempenho e disponibilidade.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">O Couchbase oferece XDCR e servi\u00e7os de aplicativos m\u00f3veis, incluindo um banco de dados incorpor\u00e1vel, o Couchbase Lite. Em \u00faltima an\u00e1lise, o Couchbase fornece dados mais pr\u00f3ximos de onde um aplicativo os consumir\u00e1 e oferece suporte a mais padr\u00f5es de design de acesso a dados (chave\/valor, JSON, pesquisa, relacional, s\u00e9ries temporais, anal\u00edtica e eventos), oferecendo aos desenvolvedores mais liberdade de recursos sem introduzir mais complexidade arquitet\u00f4nica. O Couchbase oferece \u00e0s equipes de desenvolvimento mais op\u00e7\u00f5es e liberdade para criar o que elas precisam.\u00a0\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ambos s\u00e3o \u00f3timos bancos de dados, mas por motivos diferentes.<\/span><\/p>\n<p>&nbsp;<\/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: Consistency (the latest information is always available everywhere) Availability (every read and write request receives a response) Partitioning [&hellip;]<\/p>","protected":false},"author":62223,"featured_media":14306,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1814,1821,1816,2396],"tags":[9499,9810,9811,1313,2126,9809],"ppma_author":[8966],"class_list":["post-14305","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"],"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>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=\"article:modified_time\" content=\"2024-04-16T16:24:10+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/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\",\"dateModified\":\"2024-04-16T16:24:10+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/\"},\"wordCount\":1961,\"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\/1\/2023\/04\/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\/1\/2023\/04\/consistency-compare-cockroachdb-couchbase.png\",\"datePublished\":\"2023-04-18T20:26:45+00:00\",\"dateModified\":\"2024-04-16T16:24:10+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\/1\/2023\/04\/consistency-compare-cockroachdb-couchbase.png\",\"contentUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/consistency-compare-cockroachdb-couchbase.png\",\"width\":1200,\"height\":628,\"caption\":\"Comparing consistency models and cluster performance: Couchbase vs. CockroachDB\"},{\"@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\/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\/d64e614a24acc9ed36e77607fc2fb647\",\"name\":\"Jeff Morris, VP Product Marketing\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d30352f9b7e0c9862c1707074f15bcd0\",\"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":"Modelos de consist\u00eancia de dados: Couchbase vs. CockroachDB","description":"Quando se trata de Couchbase vs. CockroachDB, quais s\u00e3o as principais diferen\u00e7as? Esta postagem detalha distin\u00e7\u00f5es importantes na modelagem de consist\u00eancia de dados.","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","article_modified_time":"2024-04-16T16:24:10+00:00","og_image":[{"width":1200,"height":628,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2023\/04\/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","dateModified":"2024-04-16T16:24:10+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/consistency-models-couchbase-vs-cockroachdb\/"},"wordCount":1961,"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\/1\/2023\/04\/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":"Modelos de consist\u00eancia de dados: 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\/1\/2023\/04\/consistency-compare-cockroachdb-couchbase.png","datePublished":"2023-04-18T20:26:45+00:00","dateModified":"2024-04-16T16:24:10+00:00","description":"Quando se trata de Couchbase vs. CockroachDB, quais s\u00e3o as principais diferen\u00e7as? Esta postagem detalha distin\u00e7\u00f5es importantes na modelagem de consist\u00eancia de dados.","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\/1\/2023\/04\/consistency-compare-cockroachdb-couchbase.png","contentUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2023\/04\/consistency-compare-cockroachdb-couchbase.png","width":1200,"height":628,"caption":"Comparing consistency models and cluster performance: Couchbase vs. CockroachDB"},{"@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":"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\/d64e614a24acc9ed36e77607fc2fb647","name":"Jeff Morris, vice-presidente de marketing de produtos","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/d30352f9b7e0c9862c1707074f15bcd0","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\/"}]}},"authors":[{"term_id":8966,"user_id":62223,"is_guest":0,"slug":"jmorris","display_name":"Jeff Morris, VP Product Marketing","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/8c718e94092d1dde50a7ed8a265dcb948a7d005dd850bfd0daefe013cbe388a6?s=96&d=mm&r=g","author_category":"","last_name":"Morris, VP Product Marketing","first_name":"Jeff","job_title":"","user_url":"","description":"Jeff Morris \u00e9 vice-presidente de marketing de produtos e solu\u00e7\u00f5es da Couchbase. Ele passou mais de tr\u00eas d\u00e9cadas comercializando ferramentas de desenvolvimento de software, bancos de dados, ferramentas anal\u00edticas, servi\u00e7os em nuvem e outros produtos de c\u00f3digo aberto. Ele seria o primeiro a dizer que qualquer pessoa que esteja procurando um banco de dados como servi\u00e7o r\u00e1pido, flex\u00edvel, familiar e acess\u00edvel da nuvem para a borda pode parar de procurar depois de conhecer o Couchbase."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/14305","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=14305"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/14305\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media\/14306"}],"wp:attachment":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/media?parent=14305"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=14305"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=14305"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=14305"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}