{"id":3373,"date":"2017-06-06T08:00:16","date_gmt":"2017-06-06T15:00:16","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=3373"},"modified":"2025-06-13T18:46:07","modified_gmt":"2025-06-14T01:46:07","slug":"simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/","title":{"rendered":"Simplifique seu cluster NoSQL mudando do sharding do MongoDB para cont\u00eaineres do Couchbase"},"content":{"rendered":"<p>Quando participo de eventos e converso com usu\u00e1rios e defensores do NoSQL, frequentemente ou\u00e7o hist\u00f3rias sobre por que as pessoas decidiram come\u00e7ar a usar o Couchbase depois de terem vindo do MongoDB.  Veja, por exemplo, um <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/ndp-episode-3-switching-from-a-relational-database-to-nosql\/\" target=\"_blank\" rel=\"noopener noreferrer\">entrevista que fiz com Tom Coates, da Nuance<\/a>.  Um dos principais motivos pelos quais a Nuance decidiu abandonar o MongoDB foi sua incapacidade de escalonar de forma simplificada. Essa n\u00e3o \u00e9 a primeira vez que ou\u00e7o essa hist\u00f3ria.<\/p>\n<p>Vamos explorar o que est\u00e1 envolvido no dimensionamento de um cluster NoSQL com o MongoDB e, em seguida, realizar a mesma coisa com o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/\" target=\"_blank\" rel=\"noopener noreferrer\">Couchbase<\/a>.<\/p>\n<p><!--more--><\/p>\n<p><span style=\"font-weight: 400\">Para o MongoDB, o sharding \u00e9 uma maneira popular de s<\/span>cale. Outros bancos de dados abordam o processo de clustering NoSQL de forma diferente. Em todos os casos, estamos interessados em criar um cluster de v\u00e1rios n\u00f3s que inclua a replica\u00e7\u00e3o de dados.<\/p>\n<h2>Cria\u00e7\u00e3o de um cluster de v\u00e1rios n\u00f3s do MongoDB<\/h2>\n<p>O MongoDB \u00e9 um banco de dados de documentos NoSQL que tem uma arquitetura mestre-escravo. Ao criar um cluster e dimension\u00e1-lo, voc\u00ea deve criar e gerenciar um <a href=\"https:\/\/docs.mongodb.com\/manual\/tutorial\/deploy-shard-cluster\/\" target=\"_blank\" rel=\"noopener noreferrer\">cluster fragmentado<\/a> e um <a href=\"https:\/\/docs.mongodb.com\/manual\/tutorial\/deploy-replica-set\/\" target=\"_blank\" rel=\"noopener noreferrer\">conjunto de replica\u00e7\u00e3o<\/a>que \u00e9 outro nome para um cluster de replica\u00e7\u00e3o. Essas s\u00e3o pe\u00e7as de um quebra-cabe\u00e7a potencialmente grande, e voc\u00ea ver\u00e1 como ele pode se complicar facilmente.<\/p>\n<p>Como planejamos fazer tudo localmente, o Docker se torna um bom candidato para o trabalho.  Vamos implantar v\u00e1rios cont\u00eaineres do Docker do MongoDB e dimension\u00e1-los como parte de um cluster.<\/p>\n<p>A primeira ordem do dia \u00e9 implantar todos os n\u00f3s necess\u00e1rios para o nosso cluster.  Usando a CLI do Docker, execute os seguintes comandos:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">docker run -d -p 27017-27019:27017-27019 -p 28017:28017 --name mongocfg1 mongo mongod --configsvr --replSet rs0\r\ndocker run -d -p 37017-37019:27017-27019 -p 38017:28017 --name mongoshd1 mongo mongod --shardsvr --replSet rs1\r\ndocker run -d -p 47017-47019:27017-27019 -p 48017:28017 --name mongoshd2 mongo mongod --shardsvr --replSet rs1<\/pre>\n<p>Os comandos acima criar\u00e3o um n\u00f3 de configura\u00e7\u00e3o que usa um\u00a0<code>rs0<\/code> conjunto de r\u00e9plicas, bem como dois n\u00f3s de fragmentos que usam um\u00a0<code>rs1<\/code> conjunto de r\u00e9plicas.  Estamos iniciando agora nossas inst\u00e2ncias do MongoDB e j\u00e1 temos dois tipos de n\u00f3s e conjuntos de r\u00e9plicas diferentes com os quais nos preocupar.<\/p>\n<p>Agora precisamos conectar todos eles para que a replica\u00e7\u00e3o e a fragmenta\u00e7\u00e3o estejam em um estado funcional.<\/p>\n<p>Vamos come\u00e7ar inicializando a replica\u00e7\u00e3o nos dois n\u00f3s de fragmento que usam o\u00a0<code>rs1<\/code> conjunto de r\u00e9plicas.  Precisaremos determinar os endere\u00e7os IP dos cont\u00eaineres para realizar o trabalho.  Na CLI do Docker, execute o seguinte:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">docker inspect mongoshd1\r\ndocker inspect mongoshd2<\/pre>\n<p>Depois de obter os endere\u00e7os IP, conecte-se a um dos n\u00f3s do fragmento por meio do seguinte comando:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">docker exec -it mongoshd1 bash<\/pre>\n<p>Isso nos permite controlar o cont\u00eainer com o shell interativo.  Para inicializar a replica\u00e7\u00e3o nesses n\u00f3s, precisamos iniciar o shell do Mongo a partir do cont\u00eainer conectado:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">mongo --port 27018<\/pre>\n<p>Uma vez conectado por meio do shell do Mongo, execute o seguinte:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">rs.initiate({\r\n    _id : \"rs1\",\r\n    members: [\r\n        { _id : 1, host : \"172.17.0.3:27018\" }, \r\n        { _id : 2, host : \"172.17.0.4:27018\" }\r\n    ]\r\n});<\/pre>\n<p>No comando acima, lembre-se de trocar os endere\u00e7os IP dos cont\u00eaineres pelos n\u00f3s de fragmentos que voc\u00ea realmente deseja usar.<\/p>\n<p>Uma vez executado, voc\u00ea poder\u00e1 verificar o status dos n\u00f3s por meio do comando\u00a0<code>rs.status()<\/code> comando.<\/p>\n<p>Agora precisamos preparar o n\u00f3 de configura\u00e7\u00e3o.  Primeiro, determine o IP do cont\u00eainer, como demonstrado anteriormente, e conecte-se a ele via:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">docker exec -it mongocfg1 bash<\/pre>\n<p>Uma vez conectado com o shell interativo, voc\u00ea precisar\u00e1 se conectar ao MongoDB usando o shell do Mongo, mas dessa vez por meio de uma porta diferente, j\u00e1 que se trata de um n\u00f3 de configura\u00e7\u00e3o:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">mongo --port 27019<\/pre>\n<p>Uma vez conectado ao n\u00f3 de configura\u00e7\u00e3o por meio do shell do Mongo, execute o seguinte comando para inicializar o conjunto de r\u00e9plicas:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">rs.initiate({\r\n    _id : \"rs0\",\r\n    members: [\r\n        { _id : 0, host : \"172.17.0.2:27019\" },\r\n    ]\r\n});<\/pre>\n<p>Nesse ponto, devemos poder come\u00e7ar a configurar os n\u00f3s de fragmento.  Lembre-se de que, anteriormente, s\u00f3 configuramos as r\u00e9plicas nos n\u00f3s de fragmento.  Saia do shell do Mongo no n\u00f3 de configura\u00e7\u00e3o, mas n\u00e3o saia do shell interativo.  Precisamos executar um novo comando chamado <a href=\"https:\/\/docs.mongodb.com\/manual\/reference\/program\/mongos\/\" target=\"_blank\" rel=\"noopener noreferrer\">mong\u00f3is<\/a>Para fazer ainda mais configura\u00e7\u00f5es.  Execute o seguinte:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">mongos --configdb rs0\/172.17.0.2:27019<\/pre>\n<p>Isso nos permitir\u00e1 adicionar shards por meio do shell do Mongo.  A menos que tenha optado por executar o mongos em segundo plano, voc\u00ea precisar\u00e1 abrir um novo Terminal para usar o shell do Mongo.<\/p>\n<p>Conectar-se a\u00a0<code>mongocfg1<\/code> em um novo Terminal e, em seguida, conecte-se usando o shell do Mongo.  Desta vez, em vez de usar a porta\u00a0<code>27019<\/code> voc\u00ea usar\u00e1 a porta\u00a0<code>27017<\/code>.<\/p>\n<p>Depois de conectado, execute os seguintes comandos para adicionar os fragmentos:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">sh.addShard(\"rs1\/172.17.0.3:27018\");\r\nsh.addShard(\"rs1\/172.17.0.4:27018\");<\/pre>\n<p>No exemplo acima, lembre-se de que estamos usando os endere\u00e7os IP dos n\u00f3s do fragmento e a porta do n\u00f3 do fragmento.<\/p>\n<p>Com as fun\u00e7\u00f5es de sharding do MongoDB configuradas, agora podemos habilit\u00e1-las para um banco de dados espec\u00edfico.  Esse pode ser qualquer banco de dados do MongoDB que voc\u00ea desejar.  A ativa\u00e7\u00e3o da fragmenta\u00e7\u00e3o pode ser feita da seguinte forma:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">sh.enableSharding(\"example\");<\/pre>\n<p>Mas ainda n\u00e3o terminamos. <span style=\"font-weight: 400\">No MongoDB, as op\u00e7\u00f5es de sharding existem em um intervalo que inclui <a href=\"https:\/\/docs.mongodb.com\/manual\/core\/ranged-sharding\/#sharding-ranged\" target=\"_blank\" rel=\"noopener noreferrer\">Fragmenta\u00e7\u00e3o \u00e0 dist\u00e2ncia<\/a> e <a href=\"https:\/\/docs.mongodb.com\/manual\/core\/hashed-sharding\/#sharding-hashed\" target=\"_blank\" rel=\"noopener noreferrer\">Sharding com hash<\/a>.  Determine sua abordagem de como voc\u00ea fragmentar\u00e1 as cole\u00e7\u00f5es de dados, tendo em mente <\/span>seu objetivo \u00e9 fazer com que os dados do seu banco de dados sejam distribu\u00eddos da forma mais uniforme poss\u00edvel nesse cluster NoSQL.<\/p>\n<p>Veja o seguinte comando, por exemplo:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">sh.shardCollection(\"example.people\", { \"_id\": \"hashed\" });<\/pre>\n<p>O comando acima criar\u00e1 uma chave de fragmento em\u00a0<code>_id<\/code> para o\u00a0<code>pessoas<\/code> coleta. Essa \u00e9 a melhor maneira de fazer as coisas, talvez sim ou talvez n\u00e3o, cabe a voc\u00ea decidir como deseja fragmentar seus dados no MongoDB.<\/p>\n<p>Se voc\u00ea quiser verificar a distribui\u00e7\u00e3o de fragmentos, poder\u00e1 execut\u00e1-la:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">db.people.getShardDistribution();<\/pre>\n<p>Como voc\u00ea pode ver em todas as etapas que percorremos, n\u00e3o foi uma tarefa f\u00e1cil fazer com que a replica\u00e7\u00e3o e a fragmenta\u00e7\u00e3o funcionassem em um cluster de n\u00f3s do MongoDB. Como voc\u00ea precisa escalar seu cluster para cima e para baixo, a tarefa se torna ainda mais complicada e isso \u00e9 algo que frustra as empresas.<\/p>\n<p>\u00c9 aqui que o Couchbase entra em a\u00e7\u00e3o!<\/p>\n<h2>Cria\u00e7\u00e3o de um cluster do Couchbase de v\u00e1rios n\u00f3s<\/h2>\n<p>Embora o Couchbase seja um banco de dados de documentos, assim como o MongoDB, sua arquitetura \u00e9 um pouco diferente. O Couchbase usa um design peer-to-peer (P2P) que elimina o design mestre-escravo. Al\u00e9m disso, cada n\u00f3 em um cluster tem o mesmo design, o que significa que ter\u00e1 servi\u00e7os de dados, indexa\u00e7\u00e3o e consulta dispon\u00edveis. Isso elimina a necessidade de criar clusters especializados de replica\u00e7\u00e3o ou sharded.<\/p>\n<p>Ent\u00e3o, vamos dar uma olhada na cria\u00e7\u00e3o de um cluster do Couchbase de v\u00e1rios n\u00f3s. Como vamos fazer tudo localmente, faz sentido usar o Docker para essa tarefa.<\/p>\n<p>Execute os seguintes comandos em sua CLI do Docker:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">docker run -d -p 7091-7093:8091-8093 --name couchbase1 couchbase\r\ndocker run -d -p 8091-8093:8091-8093 --name couchbase2 couchbase\r\ndocker run -d -p 9091-9093:8091-8093 --name couchbase3 couchbase<\/pre>\n<p>Os comandos acima criar\u00e3o tr\u00eas cont\u00eaineres do Couchbase Server, mapeando as portas do cont\u00eainer para um conjunto diferente de portas do host.<\/p>\n<p>Como se trata do Docker, cada cont\u00eainer ser\u00e1 uma nova instala\u00e7\u00e3o do Couchbase. O objetivo deste guia n\u00e3o \u00e9 colocar o Couchbase em funcionamento, portanto, n\u00e3o analisaremos como passar por cada uma das cinco etapas de configura\u00e7\u00e3o.<\/p>\n<p>H\u00e1 v\u00e1rias maneiras de estabelecer um cluster no Couchbase, portanto, veremos algumas delas. Dos tr\u00eas cont\u00eaineres, configure dois deles como novos clusters.<\/p>\n<p>O n\u00f3 n\u00e3o configurado, digamos\u00a0<code>couchbase1<\/code> ser\u00e1 o primeiro que adicionaremos ao cluster. Vamos adicion\u00e1-lo ao mesmo cluster que o\u00a0<code>couchbase2<\/code> n\u00f3. Em seu navegador, navegue at\u00e9\u00a0<strong>https:\/\/localhost:7091<\/strong> e optar por participar de um cluster.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3378 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/04\/couchbase-join-cluster-1.png\" alt=\"Join Couchbase Cluster\" width=\"1100\" height=\"519\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-1.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-1-300x142.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-1-1024x483.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-1-768x362.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-1-20x9.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>O que importa aqui \u00e9 o endere\u00e7o IP, o nome de usu\u00e1rio e a senha administrativos do outro n\u00f3 e os servi\u00e7os que voc\u00ea deseja que estejam dispon\u00edveis.<\/p>\n<p>Como estamos usando o Docker, \u00e9 importante usar o endere\u00e7o IP correto do\u00a0<code>couchbase2<\/code> n\u00f3.  Para encontrar esse endere\u00e7o IP, execute o seguinte comando:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">docker inspecionar couchbase2<\/pre>\n<p>Procure o endere\u00e7o IP nos resultados.  \u00c9 muito importante que voc\u00ea n\u00e3o tente usar localhost, pois esse \u00e9 apenas o endere\u00e7o vinculado, n\u00e3o o endere\u00e7o real do cont\u00eainer.<\/p>\n<p>Ap\u00f3s o\u00a0<code>couchbase1<\/code> \u00e9 adicionado ao n\u00f3\u00a0<code>couchbase2<\/code> o cluster precisa ser rebalanceado.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3379 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/04\/couchbase-join-cluster-2.png\" alt=\"Join Couchbase Cluster\" width=\"1100\" height=\"235\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-2.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-2-300x64.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-2-1024x219.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-2-768x164.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-2-20x4.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>O rebalanceamento do cluster distribuir\u00e1 os dados do Bucket uniformemente pelo cluster. \u00c9 necess\u00e1rio fazer um rebalanceamento toda vez que voc\u00ea adicionar ou remover n\u00f3s do cluster.<\/p>\n<p>Agora voc\u00ea tem um cluster de dois n\u00f3s com replica\u00e7\u00e3o e fragmenta\u00e7\u00e3o autom\u00e1tica de dados. Agora vamos verificar como adicionar o terceiro n\u00f3, j\u00e1 configurado, ao cluster.<\/p>\n<p>Como o Couchbase \u00e9 ponto a ponto, conecte-se a\u00a0<code>couchbase1<\/code> ou\u00a0<code>couchbase2<\/code> e escolha adicionar um novo servidor ao cluster.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-3380 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/04\/couchbase-join-cluster-3.png\" alt=\"Join Couchbase Cluster\" width=\"1100\" height=\"511\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-3.png 1100w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-3-300x139.png 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-3-1024x476.png 1024w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-3-768x357.png 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-3-20x9.png 20w\" sizes=\"auto, (max-width: 1100px) 100vw, 1100px\" \/><\/p>\n<p>Voc\u00ea precisar\u00e1 inserir as informa\u00e7\u00f5es do n\u00f3 para\u00a0<code>couchbase3<\/code>semelhante ao que fizemos anteriormente.  Lembre-se de usar o endere\u00e7o IP apropriado do cont\u00eainer.<\/p>\n<p>Voc\u00ea acabou de adicionar um terceiro n\u00f3 ao cluster. N\u00e3o se esque\u00e7a de fazer o rebalanceamento para concluir o processo.<\/p>\n<p>H\u00e1 uma maneira de adicionar n\u00f3s a um cluster ou ingressar em um cluster via CLI, mas n\u00e3o entraremos nesse assunto, pois n\u00e3o \u00e9 mais dif\u00edcil do que j\u00e1 vimos. O dimensionamento do Couchbase \u00e9 um processo de duas etapas, independentemente de voc\u00ea ter tr\u00eas ou cinquenta n\u00f3s.<\/p>\n<p>Se voc\u00ea realmente gosta do Docker, escrevi um guia sobre como automatizar esse processo para o Couchbase em um <a href=\"https:\/\/www.thepolyglotdeveloper.com\/2017\/04\/using-couchbase-docker-deploying-containerized-nosql-cluster\/\" target=\"_blank\" rel=\"noopener noreferrer\">Artigo anterior<\/a> sobre o assunto.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Voc\u00ea acabou de ver como \u00e9 muito mais f\u00e1cil criar e dimensionar um cluster do Couchbase Server do que com o MongoDB. A complexidade extra em seu banco de dados NoSQL \u00e9 um fardo com o qual nenhuma pessoa orientada a opera\u00e7\u00f5es ou desenvolvedores quer lidar.<\/p>\n<p>Se voc\u00ea estiver interessado em comparar mais o Couchbase com o MongoDB, escrevi alguns outros artigos voltados para o desenvolvedor sobre o assunto. Por exemplo, se quiser transferir seus dados do MongoDB para o Couchbase, voc\u00ea pode <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/import-mongodb-collection-data-couchbase-server-golang\/\" target=\"_blank\" rel=\"noopener noreferrer\">confira um tutorial de Golang que escrevi<\/a>ou se voc\u00ea quiser <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/migrate-mongodb-mongoose-couchbase-ottoman\/\" target=\"_blank\" rel=\"noopener noreferrer\">converter sua API RESTful do Node.js<\/a>Se voc\u00ea estiver interessado em um site, tamb\u00e9m poder\u00e1 encontrar material sobre o assunto.<\/p>\n<p>Para obter mais informa\u00e7\u00f5es sobre como usar o Couchbase, consulte o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/developers\/\" target=\"_blank\" rel=\"noopener noreferrer\">Portal do desenvolvedor do Couchbase<\/a>.<\/p>","protected":false},"excerpt":{"rendered":"<p>When I&#8217;m out at events and talking to NoSQL users and advocates, I often hear stories on why people have decided to start using Couchbase after having come from MongoDB. \u00a0Take, for example, an interview I did with Tom Coates [&hellip;]<\/p>","protected":false},"author":63,"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,1816],"tags":[1300,1866,1309,1725,1562],"ppma_author":[9032],"class_list":["post-3373","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-best-practices-and-tutorials","category-couchbase-server","tag-cluster","tag-data","tag-mongodb","tag-nosql-database","tag-replication"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Simplifying Your NoSQL Cluster Design by Moving From MongoDB to Couchbase<\/title>\n<meta name=\"description\" content=\"Learn how much easier it is to create and maintain a NoSQL cluster with Couchbase than it is with MongoDB, and see why companies are switching.\" \/>\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\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Simplify Your NoSQL Cluster by Moving From MongoDB Sharding to Couchbase Containers\" \/>\n<meta property=\"og:description\" content=\"Learn how much easier it is to create and maintain a NoSQL cluster with Couchbase than it is with MongoDB, and see why companies are switching.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/thepolyglotdeveloper\" \/>\n<meta property=\"article:published_time\" content=\"2017-06-06T15:00:16+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T01:46:07+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"519\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@nraboy\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Nic Raboy, Developer Advocate, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/\"},\"author\":{\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1\"},\"headline\":\"Simplify Your NoSQL Cluster by Moving From MongoDB Sharding to Couchbase Containers\",\"datePublished\":\"2017-06-06T15:00:16+00:00\",\"dateModified\":\"2025-06-14T01:46:07+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/\"},\"wordCount\":1499,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"Cluster\",\"data\",\"mongodb\",\"NoSQL Database\",\"replication\"],\"articleSection\":[\"Best Practices and Tutorials\",\"Couchbase Server\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/\",\"name\":\"Simplifying Your NoSQL Cluster Design by Moving From MongoDB to Couchbase\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-06-06T15:00:16+00:00\",\"dateModified\":\"2025-06-14T01:46:07+00:00\",\"description\":\"Learn how much easier it is to create and maintain a NoSQL cluster with Couchbase than it is with MongoDB, and see why companies are switching.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#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\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Simplify Your NoSQL Cluster by Moving From MongoDB Sharding to Couchbase Containers\"}]},{\"@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\/bb545ebe83bb2d12f91095811d0a72e1\",\"name\":\"Nic Raboy, Developer Advocate, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g\",\"caption\":\"Nic Raboy, Developer Advocate, Couchbase\"},\"description\":\"Nic Raboy is an advocate of modern web and mobile development technologies. He has experience in Java, JavaScript, Golang and a variety of frameworks such as Angular, NativeScript, and Apache Cordova. Nic writes about his development experiences related to making web and mobile development easier to understand.\",\"sameAs\":[\"https:\/\/www.thepolyglotdeveloper.com\",\"https:\/\/www.facebook.com\/thepolyglotdeveloper\",\"https:\/\/x.com\/nraboy\"],\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Simplifying Your NoSQL Cluster Design by Moving From MongoDB to Couchbase","description":"Saiba como \u00e9 muito mais f\u00e1cil criar e manter um cluster NoSQL com o Couchbase do que com o MongoDB e veja por que as empresas est\u00e3o mudando.","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\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/","og_locale":"pt_BR","og_type":"article","og_title":"Simplify Your NoSQL Cluster by Moving From MongoDB Sharding to Couchbase Containers","og_description":"Learn how much easier it is to create and maintain a NoSQL cluster with Couchbase than it is with MongoDB, and see why companies are switching.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/","og_site_name":"The Couchbase Blog","article_author":"https:\/\/www.facebook.com\/thepolyglotdeveloper","article_published_time":"2017-06-06T15:00:16+00:00","article_modified_time":"2025-06-14T01:46:07+00:00","og_image":[{"width":1100,"height":519,"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/04\/couchbase-join-cluster-1.png","type":"image\/png"}],"author":"Nic Raboy, Developer Advocate, Couchbase","twitter_card":"summary_large_image","twitter_creator":"@nraboy","twitter_misc":{"Written by":"Nic Raboy, Developer Advocate, Couchbase","Est. reading time":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/"},"author":{"name":"Nic Raboy, Developer Advocate, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/bb545ebe83bb2d12f91095811d0a72e1"},"headline":"Simplify Your NoSQL Cluster by Moving From MongoDB Sharding to Couchbase Containers","datePublished":"2017-06-06T15:00:16+00:00","dateModified":"2025-06-14T01:46:07+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/"},"wordCount":1499,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["Cluster","data","mongodb","NoSQL Database","replication"],"articleSection":["Best Practices and Tutorials","Couchbase Server"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/","url":"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/","name":"Simplifying Your NoSQL Cluster Design by Moving From MongoDB to Couchbase","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-06-06T15:00:16+00:00","dateModified":"2025-06-14T01:46:07+00:00","description":"Saiba como \u00e9 muito mais f\u00e1cil criar e manter um cluster NoSQL com o Couchbase do que com o MongoDB e veja por que as empresas est\u00e3o mudando.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#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\/simplifying-your-nosql-cluster-design-by-moving-from-mongodb-to-couchbase\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Simplify Your NoSQL Cluster by Moving From MongoDB Sharding to Couchbase Containers"}]},{"@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\/bb545ebe83bb2d12f91095811d0a72e1","name":"Nic Raboy, defensor dos desenvolvedores, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/8863514d8bed0cf6080f23db40e00354","url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","caption":"Nic Raboy, Developer Advocate, Couchbase"},"description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender.","sameAs":["https:\/\/www.thepolyglotdeveloper.com","https:\/\/www.facebook.com\/thepolyglotdeveloper","https:\/\/x.com\/nraboy"],"url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/nic-raboy-2\/"}]}},"authors":[{"term_id":9032,"user_id":63,"is_guest":0,"slug":"nic-raboy-2","display_name":"Nic Raboy, Developer Advocate, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bedeb68368d4681aca4c74fe5f697f0c423b80d498ec50fd915ba018b72c101f?s=96&d=mm&r=g","author_category":"","last_name":"Raboy","first_name":"Nic","job_title":"","user_url":"https:\/\/www.thepolyglotdeveloper.com","description":"Nic Raboy \u00e9 um defensor das modernas tecnologias de desenvolvimento m\u00f3vel e da Web. Ele tem experi\u00eancia em Java, JavaScript, Golang e uma variedade de estruturas, como Angular, NativeScript e Apache Cordova. Nic escreve sobre suas experi\u00eancias de desenvolvimento relacionadas a tornar o desenvolvimento m\u00f3vel e da Web mais f\u00e1cil de entender."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3373","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\/63"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=3373"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/3373\/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=3373"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=3373"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=3373"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=3373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}