{"id":682,"date":"2010-04-06T00:18:08","date_gmt":"2010-04-06T03:18:08","guid":{"rendered":"https:\/\/devkico.itexto.com.br\/?p=682"},"modified":"2010-04-06T00:18:08","modified_gmt":"2010-04-06T03:18:08","slug":"introducao-ao-mongodb-um-banco-de-dados-nosql","status":"publish","type":"post","link":"https:\/\/devkico.itexto.com.br\/?p=682","title":{"rendered":"Introdu\u00e7\u00e3o ao MongoDB: um banco de dados NoSQL"},"content":{"rendered":"<p><a href=\"http:\/\/www.mongodb.org\"><img loading=\"lazy\" decoding=\"async\" class=\"alignleft size-medium wp-image-683\" style=\"margin: 10px;\" title=\"logo-mongodb-onwhite\" src=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png\" alt=\"\" width=\"300\" height=\"100\" srcset=\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png 300w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-1024x341.png 1024w, https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite.png 1500w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/a>J\u00e1 faz algum tempo que venho estudando o MongoDB.\u00a0 Dentro da turma dos SGBDs NoSQL este foi aquele com o qual acabei criando maior simpatia pela sua simplicidade e documenta\u00e7\u00e3o (apesar de muita gente falar do Apache Cassandra, sua documenta\u00e7\u00e3o ainda \u00e9 <strong>horr\u00edvel<\/strong>).<\/p>\n<p>O MongoDB \u00e9 um banco de dados orientados a documentos. Sendo assim, se voc\u00ea, assim como eu (e 99% dos desenvolvedores) v\u00eam de um ambiente dominado pelo modelo relacional, em um primeiro momento ver\u00e1 este SGBD como um alien\u00edgena &#8211; o que \u00e9 incr\u00edvelmente empolgante e assustador. Meu objetivo neste post n\u00e3o \u00e9 ensinar a usar o MongoDB (ser\u00e1 assunto do pr\u00f3ximo), mas sim expor as principais diferen\u00e7as entre este e o confort\u00e1vel modelo relacional.<\/p>\n<h2>Este assustador (e maravilhoso) &#8220;mundo novo&#8221;<\/h2>\n<p>Para os acostumados com o modelo relacional, o MongoDB se mostrar\u00e1 assustador no primeiro contato porque a maior parte dos conceitos que nos forneciam uma certa sensa\u00e7\u00e3o de seguran\u00e7a basicamente &#8220;desaparecem&#8221;. Aqui \u00e9 obrigat\u00f3rio saber lidar com o medo: conforme mostrarei neste post, h\u00e1 riscos, mas os ganhos os compensam.<\/p>\n<p>N\u00e3o acho que o modelo n\u00e3o relacional possa ser aplicado a todos os casos, por\u00e9m \u00e9 sempre importante conhecer mais de um paradigma para que possamos no m\u00ednimo ampliar nossos horizontes quando nos deparamos com situa\u00e7\u00f5es que fogem da nossa zona de conforto (e o MongoDB pode ser bastante desconfort\u00e1vel neste primeiro momento).<\/p>\n<h3>N\u00e3o h\u00e1 registros, mas documentos<\/h3>\n<p>Algo sempre me incomodou no modelo relacional: com ele tentamos representar o mundo real (que \u00e9 n-dimensional) usando uma abordagem bidimensional. Tudo o que eu for representar em minhas tabelas possui apenas duas dimens\u00f5es: linhas e colunas. \u00c9 verdade que podemos representar quantas dimens\u00f5es quisermos no modelo relacional a partir de relacionamentos, por\u00e9m sempre fica aquela sensa\u00e7\u00e3o de se estar &#8220;for\u00e7ando a barra&#8221;.<\/p>\n<p>Al\u00e9m disto, por mais bem feita que seja o processo de an\u00e1lise, sempre h\u00e1 a possibilidade de posteriormente mais um atributo ser encontardo. O mundo \u00e9 um ambiente complexo: acredito que para represent\u00e1-lo, precisamos tamb\u00e9m de uma terminologia complexa.<\/p>\n<p>No MongoDB, o equivalente aos registros s\u00e3o os documentos, que utilizam a sintaxe JSON. A melhor maneira de se ter um <em>feeling<\/em> do que quero dizer \u00e9 ver o bicho. Sendo assim, observe o c\u00f3digo abaixo:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\nKico = {\r\nnome: &quot;Henrique Lobo Weissmann&quot;,\r\napelido: &quot;Kico (ou seria este o nome?)&quot;,\r\ncidade: &quot;Belo Horizonte&quot;\r\n}\r\n\r\n<\/pre>\n<p>Eu criei um documento chamado <em>kico <\/em>que possui 3 atributos: nome, apelido e cidade. Repare que em momento algum defini o tamanho m\u00e1ximo de cada atributo, regras de valida\u00e7\u00e3o ou qualquer tipo de restri\u00e7\u00e3o. Em seguida, se quiser armazen\u00e1-lo em um banco de dados, bastaria executar o c\u00f3digo abaixo:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\ndb.kicodb.save(Kico)\r\n\r\n<\/pre>\n<p>Neste caso, eu estaria armazenando o documento Kico no banco de dados <em>kicodb<\/em>. Agora, observe o c\u00f3digo abaixo:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\nNanna = {nome:&quot;Maria Ang\u00e9lica Alvares da Silva e Silva&quot;,\r\napelido:&quot;N\u00e3nna&quot;,\r\nesposaDo:&quot;Kico&quot;,\r\ncidade:{nome:&quot;Belo Horizonte&quot;, estado:{nome:&quot;Minas Gerais&quot;, pais:&quot;Brasil&quot;}},\r\ncaes:&#x5B;{nome:&quot;Fraude&quot;, ra\u00e7a:&quot;Pinscher?&quot;}, {nome:&quot;Z\u00e9&quot;, ra\u00e7a:&quot;Schnauzer&quot;}]}\r\n\r\ndb.kicodb.save(Nanna)\r\n\r\n<\/pre>\n<p>Repare que um registro com estrutura completamente diferente foi incluida no banco de dados. At\u00e9 o atributo cidade \u00e9 diferente. Enquanto no registro &#8220;Kico&#8221; eu tenho apenas uma string, no objeto Nanna eu tenho um outro documento. Outro ponto interessante: repare que eu tenho inclusive uma cole\u00e7\u00e3o associada ao objeto Nanna.<\/p>\n<p>E tudo \u00e9 mesmo assim salvo no mesmo banco de dados sem problema algum. Na realidade, eu poderia armazenar at\u00e9 o registro abaixo sem problemas:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\nesquisitao = {quantidade:34, poemaFavorito:&quot;Batatinha&quot;}\r\n\r\n<\/pre>\n<p>Como pode ser visto, n\u00e3o h\u00e1 regras de valida\u00e7\u00e3o r\u00edgidas: qualquer tipo de documento pode ser armazenado no banco de dados. Claro: na pr\u00e1tica somente objetos semelhantes s\u00e3o armazenados na base de dados, por\u00e9m \u00e9 bacana saber que se um dia aparecer algum novo atributo, poderemos inclui-lo <strong>apenas<\/strong> nos documentos aonde o mesmo \u00e9 necess\u00e1rio, ao contr\u00e1rio do modelo relacional, aonde uma coluna se aplica a <strong>todos<\/strong> os registros.<\/p>\n<p><strong>Desvantagem:<\/strong> o desenvolvedor precisa ficar esperto para que suas bases de dados n\u00e3o virem um &#8220;samba do criolo doido&#8221;<\/p>\n<p><strong>Vantagens:<\/strong><\/p>\n<ul>\n<li>Finalmente voc\u00ea se livrou de uma abordagem bidimensional e pode representar objetos do mundo real como realmente s\u00e3o: complexos e \u00fanicos.<\/li>\n<li>Caso no futuro surja algum caso no qual novos atributos apare\u00e7am, voc\u00ea pode aplic\u00e1-los somente aonde \u00e9 necess\u00e1rio, e n\u00e3o em todos os casos, como no modelo relacional, aonde normalmente cria-se uma nova &#8220;coluna&#8221; na tabela relacionada<\/li>\n<\/ul>\n<h3>Redund\u00e2ncia de dados m\u00e1xima<\/h3>\n<p>No modelo relacional somos o tempo inteiro incentivados a reduzir ao m\u00e1ximo poss\u00edvel a redund\u00e2ncia de dados. Ali\u00e1s, os relacionamentos existem justamente para isto. E \u00e9 um modelo que ineg\u00e1velmente funciona muito bem. J\u00e1 no MongoDB a situa\u00e7\u00e3o \u00e9 inversa: n\u00e3o h\u00e1 relacionamentos, e a duplica\u00e7\u00e3o de dados, pelo que pude observar \u00e9 at\u00e9 incentivada.<\/p>\n<p>D\u00ea uma olhada no c\u00f3digo abaixo:<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\npessoa1 = {nome:&quot;Pe\u00e7onhento&quot;, cidade:{nome:&quot;Belo Horizonte&quot;, estado:&quot;MG&quot;}}\r\n\r\npessoa2 = {nome:&quot;Zequinha&quot;, cidade:{nome:&quot;Belo Horizonte&quot;, estado: &quot;MG&quot;}}\r\n\r\npessoa3 = {nome:&quot;Joca&quot;, cidade:&quot;Lagoa Santa&quot;}\r\n\r\npessoa4 = {nome:&quot;Complexado&quot;, cidade:{nome:&quot;Rio de Janeiro&quot;, estado:{nome:&quot;Rio de Janeiro&quot;, pais:{nome:&quot;Brasil&quot;}}}\r\n\r\n<\/pre>\n<p>Lembre-se de que aqui n\u00e3o h\u00e1 tabelas: h\u00e1 cole\u00e7\u00f5es de documentos. Em cada documento armazeno os dados da forma que eu quiser. Eu poderia criar uma cole\u00e7\u00e3o contendo apenas cidades e em seguida criar um relacionamento entre duas ou mais cole\u00e7\u00f5es distintas, \u00e9 verdade (foge do assunto deste post), mas isto iria contra a id\u00e9ia b\u00e1sica por tr\u00e1s do modelo orientado a documentos.<\/p>\n<p>A id\u00e9ia b\u00e1sica aqui \u00e9 a de que <em>um documento deve ser auto-contido<\/em>, ou seja, isolado j\u00e1 deve conter <strong>todas<\/strong> as informa\u00e7\u00f5es de que necessita. Por que isto? Simples: porque assim voc\u00ea ao inv\u00e9s de fazer uma consulta com v\u00e1rios <em>joins<\/em> como \u00e9 o caso do modelo relacional executa uma \u00fanica consulta, que j\u00e1 te retorna o documento <strong>inteiro<\/strong>. Resultado: mais performance.<\/p>\n<p><strong>Desvantagem:<\/strong> se voc\u00ea quiser alterar todos os registros relacionados a uma unidade sem\u00e2ntica, precisa trat\u00e1-los um a um<\/p>\n<p><strong>Vantagem:<\/strong> maior performance. Uma \u00fanica consulta j\u00e1 te retorna tudo o que voc\u00ea precisa saber a respeito do documento. Esta \u00e9 uma das raz\u00f5es pelas quais v\u00eam sendo adotado em projetos que exigem alta performance.<\/p>\n<h2>Concluindo<\/h2>\n<p>Estas s\u00e3o as duas principais diferen\u00e7as (que s\u00f3 s\u00e3o vantagens de acordo com o caso) que vi no MongoDB (do modelo baseado em documenots na realidade) com rela\u00e7\u00e3o ao modelo relacional. \u00c9 aplicado a todos os casos? \u00d3bvio que n\u00e3o.<\/p>\n<p>O importante a meu ver \u00e9 sair da \u00e1rea de conforto do modelo relacional: isto, como mencionei, amplia os nossos horizontes, faz com que vejamos outras possibilidades al\u00e9m de tabelas para armazenar nossos dados. Fico assustado quando topo com desenvolvedores que s\u00f3 conseguem desenvolver algo que envolva tabelas, colunas e registros. Ali\u00e1s, a grande vantagem que vejo nesta &#8220;moda&#8221; de modelos noSQL \u00e9 justamente esta: a exposi\u00e7\u00e3o de &#8220;novos&#8221; paradigmas a um mundo dominado pelo modelo relacional, que s\u00f3 considero ruim quando tomado como a <strong>\u00fanica alternativa vi\u00e1vel<\/strong> pela maior parte das pessoas.<\/p>\n<p>Este post \u00e9 fundamental para que eu possa partir para os pr\u00f3ximos, nos quais exporei como usar o MongoDB e, ainda mais importante, como aplic\u00e1-lo com Groovy e Java. Grande abra\u00e7o!<\/p>\n<p>Ah, quer baixar o MongoDB? Este \u00e9 o site oficial: <a href=\"http:\/\/www.mongodb.org\">http:\/\/www.mongodb.org<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>J\u00e1 faz algum tempo que venho estudando o MongoDB.\u00a0 Dentro da turma dos SGBDs NoSQL este foi aquele com o qual acabei criando maior simpatia pela sua simplicidade e documenta\u00e7\u00e3o (apesar de muita gente falar do Apache Cassandra, sua documenta\u00e7\u00e3o ainda \u00e9 horr\u00edvel). O MongoDB \u00e9 um banco de dados orientados a documentos. Sendo assim, [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_coblocks_attr":"","_coblocks_dimensions":"","_coblocks_responsive_height":"","_coblocks_accordion_ie_support":"","site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[54],"tags":[],"class_list":["post-682","post","type-post","status-publish","format-standard","hentry","category-nosql"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v22.8 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Introdu\u00e7\u00e3o ao MongoDB: um banco de dados NoSQL - \/dev\/Kico<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/devkico.itexto.com.br\/?p=682\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Introdu\u00e7\u00e3o ao MongoDB: um banco de dados NoSQL - \/dev\/Kico\" \/>\n<meta property=\"og:description\" content=\"J\u00e1 faz algum tempo que venho estudando o MongoDB.\u00a0 Dentro da turma dos SGBDs NoSQL este foi aquele com o qual acabei criando maior simpatia pela sua simplicidade e documenta\u00e7\u00e3o (apesar de muita gente falar do Apache Cassandra, sua documenta\u00e7\u00e3o ainda \u00e9 horr\u00edvel). O MongoDB \u00e9 um banco de dados orientados a documentos. Sendo assim, [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/devkico.itexto.com.br\/?p=682\" \/>\n<meta property=\"og:site_name\" content=\"\/dev\/Kico\" \/>\n<meta property=\"article:published_time\" content=\"2010-04-06T03:18:08+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.itexto.net\/devkico\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png\" \/>\n<meta name=\"author\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@loboweissmann\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Kico (Henrique Lobo Weissmann)\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\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\":\"WebPage\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=682\",\"url\":\"https:\/\/devkico.itexto.com.br\/?p=682\",\"name\":\"Introdu\u00e7\u00e3o ao MongoDB: um banco de dados NoSQL - \/dev\/Kico\",\"isPartOf\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=682#primaryimage\"},\"image\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=682#primaryimage\"},\"thumbnailUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png\",\"datePublished\":\"2010-04-06T03:18:08+00:00\",\"dateModified\":\"2010-04-06T03:18:08+00:00\",\"author\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\"},\"breadcrumb\":{\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=682#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/devkico.itexto.com.br\/?p=682\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=682#primaryimage\",\"url\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite.png\",\"contentUrl\":\"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite.png\",\"width\":\"1500\",\"height\":\"500\",\"caption\":\"Link para baixar o PDF\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/devkico.itexto.com.br\/?p=682#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/devkico.itexto.com.br\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Introdu\u00e7\u00e3o ao MongoDB: um banco de dados NoSQL\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#website\",\"url\":\"https:\/\/devkico.itexto.com.br\/\",\"name\":\"\/dev\/Kico\",\"description\":\"Desenvolvendo software\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/devkico.itexto.com.br\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7\",\"name\":\"Kico (Henrique Lobo Weissmann)\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g\",\"caption\":\"Kico (Henrique Lobo Weissmann)\"},\"sameAs\":[\"https:\/\/x.com\/loboweissmann\"],\"url\":\"https:\/\/devkico.itexto.com.br\/?author=1\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Introdu\u00e7\u00e3o ao MongoDB: um banco de dados NoSQL - \/dev\/Kico","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:\/\/devkico.itexto.com.br\/?p=682","og_locale":"pt_BR","og_type":"article","og_title":"Introdu\u00e7\u00e3o ao MongoDB: um banco de dados NoSQL - \/dev\/Kico","og_description":"J\u00e1 faz algum tempo que venho estudando o MongoDB.\u00a0 Dentro da turma dos SGBDs NoSQL este foi aquele com o qual acabei criando maior simpatia pela sua simplicidade e documenta\u00e7\u00e3o (apesar de muita gente falar do Apache Cassandra, sua documenta\u00e7\u00e3o ainda \u00e9 horr\u00edvel). O MongoDB \u00e9 um banco de dados orientados a documentos. Sendo assim, [&hellip;]","og_url":"https:\/\/devkico.itexto.com.br\/?p=682","og_site_name":"\/dev\/Kico","article_published_time":"2010-04-06T03:18:08+00:00","og_image":[{"url":"http:\/\/www.itexto.net\/devkico\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png"}],"author":"Kico (Henrique Lobo Weissmann)","twitter_card":"summary_large_image","twitter_creator":"@loboweissmann","twitter_misc":{"Escrito por":"Kico (Henrique Lobo Weissmann)","Est. tempo de leitura":"7 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/devkico.itexto.com.br\/?p=682","url":"https:\/\/devkico.itexto.com.br\/?p=682","name":"Introdu\u00e7\u00e3o ao MongoDB: um banco de dados NoSQL - \/dev\/Kico","isPartOf":{"@id":"https:\/\/devkico.itexto.com.br\/#website"},"primaryImageOfPage":{"@id":"https:\/\/devkico.itexto.com.br\/?p=682#primaryimage"},"image":{"@id":"https:\/\/devkico.itexto.com.br\/?p=682#primaryimage"},"thumbnailUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite-300x100.png","datePublished":"2010-04-06T03:18:08+00:00","dateModified":"2010-04-06T03:18:08+00:00","author":{"@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7"},"breadcrumb":{"@id":"https:\/\/devkico.itexto.com.br\/?p=682#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/devkico.itexto.com.br\/?p=682"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/?p=682#primaryimage","url":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite.png","contentUrl":"https:\/\/devkico.itexto.com.br\/wp-content\/uploads\/2010\/04\/logo-mongodb-onwhite.png","width":"1500","height":"500","caption":"Link para baixar o PDF"},{"@type":"BreadcrumbList","@id":"https:\/\/devkico.itexto.com.br\/?p=682#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/devkico.itexto.com.br\/"},{"@type":"ListItem","position":2,"name":"Introdu\u00e7\u00e3o ao MongoDB: um banco de dados NoSQL"}]},{"@type":"WebSite","@id":"https:\/\/devkico.itexto.com.br\/#website","url":"https:\/\/devkico.itexto.com.br\/","name":"\/dev\/Kico","description":"Desenvolvendo software","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/devkico.itexto.com.br\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"pt-BR"},{"@type":"Person","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/502ab8892631bb005d6da2269fe5a3a7","name":"Kico (Henrique Lobo Weissmann)","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/devkico.itexto.com.br\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/dd6973d86a689bc63122b2e603f25be3?s=96&d=mm&r=g","caption":"Kico (Henrique Lobo Weissmann)"},"sameAs":["https:\/\/x.com\/loboweissmann"],"url":"https:\/\/devkico.itexto.com.br\/?author=1"}]}},"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/682"}],"collection":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=682"}],"version-history":[{"count":4,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/682\/revisions"}],"predecessor-version":[{"id":687,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=\/wp\/v2\/posts\/682\/revisions\/687"}],"wp:attachment":[{"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=682"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=682"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/devkico.itexto.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=682"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}