{"id":1993,"date":"2016-01-04T18:31:14","date_gmt":"2016-01-04T18:31:13","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=1993"},"modified":"2025-06-13T17:24:49","modified_gmt":"2025-06-14T00:24:49","slug":"data-modelling-for-n1ql","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/data-modelling-for-n1ql\/","title":{"rendered":"Modelagem de dados para N1QL"},"content":{"rendered":"<p>Em minhas publica\u00e7\u00f5es sobre modelagem de dados de valor-chave com o Couchbase, as principais preocupa\u00e7\u00f5es eram:<\/p>\n<ul>\n<li>*\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/data-modelling-when-embed-or-refer\/\">Quando incorporar dados e quando fazer refer\u00eancia<\/a><\/li>\n<li>*\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/manual-secondary-indexes\/\">cria\u00e7\u00e3o de \u00edndices secund\u00e1rios<\/a><\/li>\n<li>*\u00a0<a href=\"https:\/\/www.couchbase.com\/blog\/pt\/data-modelling-key-design\/\">design principal<\/a>.<\/li>\n<\/ul>\n<p>Em um mundo N1QL, ainda estamos pensando em coisas semelhantes e, nesta postagem, examinarei duas delas:<\/p>\n<ul>\n<li>* Como representar tipos de documentos<\/li>\n<li>* Modelagem de rela\u00e7\u00f5es entre documentos.<\/li>\n<\/ul>\n<p>Fundamentalmente, ainda \u00e9 uma hist\u00f3ria de fazer as compensa\u00e7\u00f5es certas para que voc\u00ea possa criar um <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/conceptual-physical-logical-data-models\/\">modelo de dados f\u00edsicos<\/a> que representa de forma mais eficiente seu modelo l\u00f3gico. Tudo o que foi alterado foram alguns detalhes de implementa\u00e7\u00e3o.<\/p>\n<h2>N\u00e3o fazer nada<\/h2>\n<p>Em primeiro lugar, vale a pena dizer que voc\u00ea pode consultar dados JSON existentes sem precisar fazer nenhuma altera\u00e7\u00e3o. O N1QL n\u00e3o exigir\u00e1 que voc\u00ea remodele todo o seu banco de dados existente.<\/p>\n<p>No entanto, voc\u00ea pode fazer altera\u00e7\u00f5es em seu modelo que tornar\u00e3o o N1QL mais eficiente e suas consultas mais f\u00e1ceis de escrever. E se estiver come\u00e7ando do zero, \u00e9 melhor considerar a capacidade de consulta do N1QL desde o in\u00edcio.<\/p>\n<h2>Tipos de documentos<\/h2>\n<p>Uma das partes mais importantes da modelagem de dados de valor-chave \u00e9 o design da chave. Em um mundo de valores-chave, a chave tem uma enorme responsabilidade: ela deve informar o que est\u00e1 sendo armazenado e deve ser f\u00e1cil de encontrar novamente.<\/p>\n<p>Por exemplo, as chaves dos registros de clientes podem ter o seguinte formato:<\/p>\n<ul>\n<li><code>* cust::name<\/code> o registro principal do cliente<\/li>\n<li><code>* cust::name::payment<\/code> os detalhes de pagamento do cliente<\/li>\n<\/ul>\n<p>Com a consulta avan\u00e7ada, a fun\u00e7\u00e3o do nome da chave muda. Em vez de solicitar diretamente a chave, voc\u00ea solicitar\u00e1 os dados que deseja. Essas duas responsabilidades - descrever o que voc\u00ea est\u00e1 armazenando e facilitar a localiza\u00e7\u00e3o dos dados - s\u00e3o transferidas para o pr\u00f3prio documento como um tipo de documento.<\/p>\n<p>\u00c9 aqui que encontramos uma das grandes diferen\u00e7as pr\u00e1ticas entre o N1QL e o SQL: O FROM faz menos trabalho no N1QL atualmente. O escopo de um bucket do Couchbase \u00e9 muito diferente do escopo de uma tabela relacional t\u00edpica.<\/p>\n<p>O SQL FROM restringe o escopo da nossa consulta aos dados que nos interessam. O N1QL FROM informa ao mecanismo de consulta qual compartimento deve ser examinado. Como um bucket t\u00edpico cont\u00e9m todos os dados de um aplicativo, precisamos de outra maneira de distinguir os tipos de documentos.<\/p>\n<h3>Um cliente<\/h3>\n<p>Vamos dar uma olhada em um cliente. Aqui est\u00e1 um registro simples:<\/p>\n<p><code>{ <\/code><\/p>\n<p><code>\u00a0 \"name\": \"Alan Partridge\", <\/code><\/p>\n<p><code>\u00a0 \"email\": \"alan@example.com\", <\/code><\/p>\n<p><code>\u00a0 \"localiza\u00e7\u00e3o\": \"Norwich\", <\/code><\/p>\n<p><code>\u00a0 \"phone\": \"+44-1603-619-331\", <\/code><\/p>\n<p><code>\u00a0 \"docInfo\": <\/code><\/p>\n<p><code>\u00a0 { <\/code><\/p>\n<p><code>\u00a0 \u00a0 \"type\": \"customer\", <\/code><\/p>\n<p><code>\u00a0 \u00a0 \"created\": \"2015-10-22T10:17:24.731Z\", <\/code><\/p>\n<p><code>\u00a0 \u00a0 \"schemaVersion\": \"1.2.3\" <\/code><\/p>\n<p><code>\u00a0 } <\/code><\/p>\n<p><code>} <\/code><\/p>\n<p>O <i>tipo<\/i> entra em a\u00e7\u00e3o para restringir o escopo da nossa consulta N1QL:<\/p>\n<p><code>SELECT * FROM `default` WHERE type = customer;<\/code><\/p>\n<p>Usando o <code>tipo<\/code> podemos criar \u00edndices que contenham apenas os documentos de um tipo espec\u00edfico. Por exemplo:<\/p>\n<p><code>CREATE INDEX customers ON `default` WHERE type=customer; <\/code><\/p>\n<p>\u00c9 prov\u00e1vel que seus esquemas de documentos j\u00e1 especifiquem um tipo, principalmente se voc\u00ea estiver usando exibi\u00e7\u00f5es do Couchbase. De qualquer forma, ao criar um documento, voc\u00ea deve especificar seu tipo no corpo do documento.<\/p>\n<p>Em itera\u00e7\u00f5es futuras do Couchbase e do N1QL, poderemos ver o namespacing abaixo do n\u00edvel do bucket, mas os tipos sempre nos dar\u00e3o uma maneira de baixo custo de diferenciar os documentos.<\/p>\n<h2>Rela\u00e7\u00f5es entre documentos<\/h2>\n<p>A quest\u00e3o da <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/data-modelling-when-embed-or-refer\/\">Quando incorporar e quando encaminhar<\/a> continua sendo importante ao modelar para o N1QL. A diferen\u00e7a \u00e9 que o N1QL lida com esses relacionamentos para voc\u00ea por meio de JOINs.<\/p>\n<p>As uni\u00f5es N1QL podem ocorrer entre:<\/p>\n<ul>\n<li>* documentos em diferentes compartimentos<\/li>\n<li>* documentos no mesmo bucket<\/li>\n<\/ul>\n<p>Em ambos os casos, o JOIN corresponde a um valor no documento do lado esquerdo com o nome da chave de um documento do lado direito. Portanto, se um documento contiver o nome da chave de outro documento, voc\u00ea poder\u00e1 fazer o JOIN desses dois documentos.<\/p>\n<p>Vamos adicionar a compra mais recente de nosso cliente fict\u00edcio ao perfil:<\/p>\n<p><code>{ lastPurchase: \"prod::drivinggloves\" } <\/code><\/p>\n<p>O valor aqui tamb\u00e9m \u00e9 o nome da chave de um documento do produto em outro local do nosso bucket.<\/p>\n<p>Portanto, para retornar o nome do cliente e o pre\u00e7o de sua \u00faltima compra para cada cliente que mora em Norwuch, usar\u00edamos a seguinte N1QL:<\/p>\n<p><code>SELECT r.name, a.price FROM `default` r JOIN `default` a ON KEYS r.lastPurchase WHERE r.location = \"Norwich\"; <\/code><\/p>\n<p>O resultado seria algo parecido com:<\/p>\n<p><code>{ <\/code><\/p>\n<p><code>\u00a0 \"requestID\": \"a2284985-541f-491d-b921-4c248f154293\", <\/code><\/p>\n<p><code>\u00a0 \"assinatura\": <\/code><\/p>\n<p><code>\u00a0 { <\/code><\/p>\n<p><code>\u00a0 \u00a0 \"name\": \"json\", <\/code><\/p>\n<p><code>\u00a0 \u00a0 \"price\": \"json\" }, <\/code><\/p>\n<p><code>\u00a0 \u00a0\"resultados\": <\/code><\/p>\n<p><code>\u00a0 \u00a0 [ <\/code><\/p>\n<p><code>\u00a0 \u00a0 \u00a0 {\"name\": \"Alan Partridge\", <\/code><\/p>\n<p><code>\u00a0 \u00a0 \u00a0 \"price\": \"9.99\" <\/code><\/p>\n<p><code>\u00a0 \u00a0 \u00a0 } <\/code><\/p>\n<p><code>\u00a0 \u00a0 ], <\/code><\/p>\n<p><code>\u00a0 \u00a0 \"status\": \"success\", <\/code><\/p>\n<p><code>\u00a0 \u00a0 \"m\u00e9tricas\": <\/code><\/p>\n<p><code>\u00a0 \u00a0 { <\/code><\/p>\n<p><code>\u00a0 \u00a0 \u00a0 \"elapsedTime\": \"5.223111ms\", <\/code><\/p>\n<p><code>\u00a0 \u00a0 \u00a0 \"executionTime\": \"5.124029ms\", <\/code><\/p>\n<p><code>\u00a0 \u00a0 \u00a0 \"resultCount\": 1, <\/code><\/p>\n<p><code>\u00a0 \u00a0 \u00a0 \"resultSize\": 77 <\/code><\/p>\n<p><code>\u00a0 \u00a0 } <\/code><\/p>\n<p><code>} <\/code><\/p>\n<p>Com o N1QL, podemos produzir rela\u00e7\u00f5es de um para um, de um para muitos e de muitos para muitos entre os documentos. Portanto, embora os documentos incorporados fossem anteriormente uma grande parte da forma como model\u00e1vamos nossos dados para o Couchbase, com o N1QL eles se tornaram f\u00e1ceis para n\u00f3s, desenvolvedores.<\/p>\n<h2>Em resumo<\/h2>\n<p>Os dois principais pontos a serem considerados nesta postagem s\u00e3o:<\/p>\n<ul>\n<li>seus documentos devem ter um tipo que suas consultas possam usar para restringir o escopo<\/li>\n<li>Os JOINs dependem da chave prim\u00e1ria do documento do lado direito que aparece no corpo do documento do lado esquerdo.<\/li>\n<\/ul>\n<p>Em \u00faltima an\u00e1lise, n\u00e3o \u00e9 preciso mudar muita coisa nos seus dados JSON para que voc\u00ea possa usar o N1QL. \u00c0 medida que voc\u00ea se aprofundar mais no N1QL, sem d\u00favida encontrar\u00e1 formas de documentos que funcionam melhor do que outras. Se for o caso, compartilhe-as conosco na se\u00e7\u00e3o <a href=\"https:\/\/www.couchbase.com\/blog\/pt\/forums\/\">F\u00f3runs do Couchbase<\/a>!<\/p>","protected":false},"excerpt":{"rendered":"<p>In my posts on key-value data modelling with Couchbase, the main concerns were: *\u00a0when to embed data and when to refer *\u00a0building secondary indexes *\u00a0key design. In a N1QL world, we&#8217;re still thinking about similar things and in this post [&hellip;]<\/p>","protected":false},"author":18,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1819,1812],"tags":[1883],"ppma_author":[8982],"class_list":["post-1993","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-data-modeling","category-n1ql-query","tag-data-modelling"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.2 (Yoast SEO v26.2) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Data modelling for N1QL - The Couchbase Blog<\/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:\/\/www.couchbase.com\/blog\/pt\/data-modelling-for-n1ql\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Data modelling for N1QL\" \/>\n<meta property=\"og:description\" content=\"In my posts on key-value data modelling with Couchbase, the main concerns were: *\u00a0when to embed data and when to refer *\u00a0building secondary indexes *\u00a0key design. In a N1QL world, we&#8217;re still thinking about similar things and in this post [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/data-modelling-for-n1ql\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2016-01-04T18:31:13+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-06-14T00:24:49+00:00\" \/>\n<meta name=\"author\" content=\"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/\"},\"author\":{\"name\":\"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/6c3060a94353df62a71d4672b3454555\"},\"headline\":\"Data modelling for N1QL\",\"datePublished\":\"2016-01-04T18:31:13+00:00\",\"dateModified\":\"2025-06-14T00:24:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/\"},\"wordCount\":773,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"data modelling\"],\"articleSection\":[\"Data Modeling\",\"SQL++ \/ N1QL Query\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/\",\"name\":\"Data modelling for N1QL - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2016-01-04T18:31:13+00:00\",\"dateModified\":\"2025-06-14T00:24:49+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#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\/data-modelling-for-n1ql\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Data modelling for N1QL\"}]},{\"@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\/6c3060a94353df62a71d4672b3454555\",\"name\":\"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/b1bc555cd9166b46d6063003c3b92317\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/3b38ea45b78371f0008a765ea828bfed91aa97c25981ebf214226402a510b39b?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/3b38ea45b78371f0008a765ea828bfed91aa97c25981ebf214226402a510b39b?s=96&d=mm&r=g\",\"caption\":\"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase\"},\"description\":\"Matthew Revell is a Lead Dev Advocate, EMEA Couchbase. He developed a global strategy for putting Couchbase front in the minds of the product's developers.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/matthew-revell\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Data modelling for N1QL - The Couchbase Blog","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\/data-modelling-for-n1ql\/","og_locale":"pt_BR","og_type":"article","og_title":"Data modelling for N1QL","og_description":"In my posts on key-value data modelling with Couchbase, the main concerns were: *\u00a0when to embed data and when to refer *\u00a0building secondary indexes *\u00a0key design. In a N1QL world, we&#8217;re still thinking about similar things and in this post [&hellip;]","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/data-modelling-for-n1ql\/","og_site_name":"The Couchbase Blog","article_published_time":"2016-01-04T18:31:13+00:00","article_modified_time":"2025-06-14T00:24:49+00:00","author":"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase","Est. reading time":"4 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/"},"author":{"name":"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/6c3060a94353df62a71d4672b3454555"},"headline":"Data modelling for N1QL","datePublished":"2016-01-04T18:31:13+00:00","dateModified":"2025-06-14T00:24:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/"},"wordCount":773,"commentCount":0,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["data modelling"],"articleSection":["Data Modeling","SQL++ \/ N1QL Query"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/","url":"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/","name":"Data modelling for N1QL - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2016-01-04T18:31:13+00:00","dateModified":"2025-06-14T00:24:49+00:00","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/data-modelling-for-n1ql\/#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\/data-modelling-for-n1ql\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Data modelling for N1QL"}]},{"@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\/6c3060a94353df62a71d4672b3454555","name":"Matthew Revell, l\u00edder de suporte ao desenvolvedor, EMEA, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/b1bc555cd9166b46d6063003c3b92317","url":"https:\/\/secure.gravatar.com\/avatar\/3b38ea45b78371f0008a765ea828bfed91aa97c25981ebf214226402a510b39b?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/3b38ea45b78371f0008a765ea828bfed91aa97c25981ebf214226402a510b39b?s=96&d=mm&r=g","caption":"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase"},"description":"Matthew Revell \u00e9 um dos principais defensores do desenvolvimento do Couchbase na regi\u00e3o EMEA. Ele desenvolveu uma estrat\u00e9gia global para colocar o Couchbase na mente dos desenvolvedores do produto.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/matthew-revell\/"}]}},"authors":[{"term_id":8982,"user_id":18,"is_guest":0,"slug":"matthew-revell","display_name":"Matthew Revell, Lead Developer Advocate, EMEA, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/3b38ea45b78371f0008a765ea828bfed91aa97c25981ebf214226402a510b39b?s=96&d=mm&r=g","author_category":"","last_name":"Revell","first_name":"Matthew","job_title":"","user_url":"","description":"Matthew Revell \u00e9 um dos principais defensores do desenvolvimento do Couchbase na regi\u00e3o EMEA. Ele desenvolveu uma estrat\u00e9gia global para colocar o Couchbase na mente dos desenvolvedores do produto."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1993","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\/18"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=1993"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/1993\/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=1993"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=1993"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=1993"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=1993"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}