{"id":2959,"date":"2017-03-14T14:35:15","date_gmt":"2017-03-14T21:35:15","guid":{"rendered":"https:\/\/www.couchbase.com\/blog\/?p=2959"},"modified":"2023-06-19T03:21:50","modified_gmt":"2023-06-19T10:21:50","slug":"fakeit-series-generating-fake-data","status":"publish","type":"post","link":"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-generating-fake-data\/","title":{"rendered":"FakeIt S\u00e9rie 1 de 5: Gera\u00e7\u00e3o de dados falsos"},"content":{"rendered":"<p>Aaron Benton \u00e9 um arquiteto experiente, especializado em solu\u00e7\u00f5es criativas para desenvolver aplicativos m\u00f3veis inovadores. Ele tem mais de 10 anos de experi\u00eancia em desenvolvimento de pilha completa, incluindo ColdFusion, SQL, NoSQL, JavaScript, HTML e CSS. Atualmente, Aaron \u00e9 Arquiteto de Aplicativos da Shop.com em Greensboro, Carolina do Norte, e \u00e9 um <a href=\"https:\/\/developer.couchbase.com\/experts-and-champions\">Campe\u00e3o da comunidade do Couchbase<\/a>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-2974\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/aaronb-benton-headshot_1000x1000-300x300.jpg\" alt=\"Aaron Benton\" width=\"300\" height=\"300\" srcset=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-300x300.jpg 300w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-150x150.jpg 150w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-768x768.jpg 768w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-65x65.jpg 65w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-50x50.jpg 50w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000-20x20.jpg 20w, https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2017\/03\/aaronb-benton-headshot_1000x1000.jpg 1000w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\" \/><\/p>\n<h2><em><strong>FakeIt S\u00e9rie 1 de 5: Gera\u00e7\u00e3o de dados falsos<\/strong><\/em><\/h2>\n<p>H\u00e1 in\u00fameras postagens em blogs sobre <u><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/category\/data-modeling\/\" target=\"_blank\" rel=\"noopener noreferrer\">modelagem de dados<\/a><\/u>, chave e padr\u00f5es de documentos. Todas essas publica\u00e7\u00f5es oferecem uma \u00f3tima introdu\u00e7\u00e3o sobre como estruturar e modelar seus documentos no Couchbase, mas nenhuma delas diz a voc\u00ea o que fazer em seguida. Nesta s\u00e9rie de blogs, responderemos \u00e0 pergunta: o que fazer depois de definir o modelo de dados?<\/p>\n<h3><strong>Modelo de usu\u00e1rios<\/strong><\/h3>\n<p>Nesta s\u00e9rie, trabalharemos com um aplicativo de com\u00e9rcio eletr\u00f4nico greenfield. Como na maioria dos aplicativos de com\u00e9rcio eletr\u00f4nico, nosso aplicativo ter\u00e1 usu\u00e1rios, portanto, \u00e9 por a\u00ed que come\u00e7aremos.<\/p>\n<p>Para come\u00e7ar, definimos um modelo b\u00e1sico de usu\u00e1rio.<\/p>\n<pre class=\"lang:default decode:true\">{\r\n\u00a0\"_id\": \"user_0\",\r\n\u00a0\"doc_type\": \"user\",\r\n\u00a0\"user_id\": 0,\r\n\u00a0\"first_name\": \"Mac\",\r\n\u00a0\"last_name\": \"Carter\",\r\n\u00a0\"username\": \"Salma.Ratke\",\r\n\u00a0\"password\": \"DvA6YrMGtgsKKnG\",\r\n\u00a0\"email_address\": \"Ludie74@hotmail.com\",\r\n\u00a0\"created_on\": 1457172796088\r\n}\r\n\r\n<\/pre>\n<p>Fizemos a parte mais dif\u00edcil, que \u00e9 definir nosso modelo, mas e agora?<\/p>\n<ul>\n<li>Como representamos esse modelo?<\/li>\n<li>Como documentamos esse modelo?<\/li>\n<li>Esse modelo se baseia em dados de outros modelos?<\/li>\n<li>Como os dados podem ser gerados a partir desse modelo?<\/li>\n<li>Como podemos gerar dados falsos\/teste?<\/li>\n<\/ul>\n<p>Felizmente para n\u00f3s, h\u00e1 um projeto NodeJS chamado <u><a href=\"https:\/\/github.com\/bentonam\/fakeit\" target=\"_blank\" rel=\"noopener noreferrer\">Falsa<\/a><\/u>\u00a0que pode responder a todas essas perguntas para n\u00f3s. <u><a href=\"https:\/\/github.com\/bentonam\/fakeit\" target=\"_blank\" rel=\"noopener noreferrer\">Falsa<\/a><\/u>\u00a0\u00e9 um utilit\u00e1rio de linha de comando que gera dados falsos nos formatos json, yaml, yml, cson ou csv com base em modelos definidos em yaml. Os dados podem ser gerados usando qualquer combina\u00e7\u00e3o de FakerJS, ChanceJS ou fun\u00e7\u00f5es personalizadas. Os dados gerados podem ser gerados nos seguintes formatos e destinos:<\/p>\n<ul>\n<li>json<\/li>\n<li>yaml<\/li>\n<li>cson<\/li>\n<li>csv<\/li>\n<li>Arquivo Zip de arquivos json, yaml, cson ou csv<\/li>\n<li>Servidor Couchbase<\/li>\n<li>Servidor de gateway de sincroniza\u00e7\u00e3o do Couchbase<\/li>\n<\/ul>\n<p>Podemos definir um modelo FakeIt em YAML para representar nosso modelo JSON. Isso nos fornece um modelo documentado e tipado por dados que nos permite comunicar como nosso modelo deve ser estruturado e para que servem as propriedades.<\/p>\n<pre class=\"lang:default decode:true\">name:\u00a0Users\r\ntype:\u00a0object\r\nkey:\u00a0_id\r\nproperties:\r\n\u00a0 _id:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document id built by the prefixed \"user_\"\u00a0and the users id\r\n\u00a0 doc_type:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document type\r\n\u00a0 user_id:\r\n\u00a0 \u00a0 type:\u00a0integer\r\n\u00a0 \u00a0 description:\u00a0The users id\r\n\u00a0 first_name:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users first name\r\n\u00a0 last_name:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users last name\r\n\u00a0 username:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users username\r\n\u00a0 password:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users password\r\n\u00a0 email_address:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users email address\r\n\u00a0 created_on:\r\n\u00a0 \u00a0 type:\u00a0integer\r\n\u00a0 \u00a0 description:\u00a0An epoch time of when the user was created\r\n\r\n<\/pre>\n<p>Voc\u00ea provavelmente est\u00e1 se perguntando, <em>\"<\/em><em>\u00d3timo, defini meu modelo em YAML, mas de que isso me serve?<\/em><em>\" <\/em>Um dos maiores problemas que os desenvolvedores enfrentam ao iniciar o desenvolvimento \u00e9 ter dados para trabalhar. Muitas vezes, uma quantidade exorbitante de tempo \u00e9 gasta na cria\u00e7\u00e3o manual de documentos, escrevendo c\u00f3digos descart\u00e1veis para preencher um bucket. Al\u00e9m disso, voc\u00ea pode ter um dump de dados completo ou parcial do seu banco de dados que precisa ser importado.<\/p>\n<p>Esses procedimentos s\u00e3o demorados, tediosos e, no caso de um despejo de dados, n\u00e3o fornecem nenhuma vis\u00e3o ou documenta\u00e7\u00e3o sobre os modelos dispon\u00edveis. Podemos adicionar algumas propriedades simples ao nosso modelo FakeIt que descrevem como o nosso modelo deve ser gerado e, por meio de um \u00fanico arquivo, podemos criar uma quantidade infinita de documentos falsos randomizados.<\/p>\n<pre class=\"lang:default decode:true\">name:\u00a0Users\r\ntype:\u00a0object\r\nkey:\u00a0_id\r\nproperties:\r\n\u00a0 _id:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document id built by the prefix \"user_\"\u00a0and the users id\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 post_build:\u00a0`user_${this.user_id}`\r\n\u00a0 doc_type:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The document type\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 value:\u00a0user\r\n\u00a0 user_id:\r\n\u00a0 \u00a0 type:\u00a0integer\r\n\u00a0 \u00a0 description:\u00a0An auto-incrementing number\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0document_index\r\n\u00a0 first_name:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users first name\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.name.firstName()\r\n\u00a0 last_name:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users last name\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.name.lastName()\r\n\u00a0 username:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The username\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.internet.userName()\r\n\u00a0 password:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users password\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.internet.password()\r\n\u00a0 email_address:\r\n\u00a0 \u00a0 type:\u00a0string\r\n\u00a0 \u00a0 description:\u00a0The users email address\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0faker.internet.email()\r\n\u00a0 created_on:\r\n\u00a0 \u00a0 type:\u00a0integer\r\n\u00a0 \u00a0 description:\u00a0An epoch time of when the user was created\r\n\u00a0 \u00a0 data:\r\n\u00a0 \u00a0 \u00a0 build:\u00a0new Date(faker.date.past()).getTime()\r\n\r\n<\/pre>\n<p>Adicionamos uma propriedade de dados a cada uma das propriedades de nossos modelos, descrevendo como esse valor deve ser gerado. A FakeIt oferece suporte a 5 maneiras diferentes de gerar um valor:<\/p>\n<ul>\n<li><strong>pre_build:<\/strong>\u00a0para inicializar o valor<\/li>\n<li><strong>construir:<\/strong>\u00a0fun\u00e7\u00e3o que cria um valor<\/li>\n<li><strong>falso:<\/strong>\u00a0Uma string de modelo do FakerJS, ou seja, {{internet.userName}}<\/li>\n<li><strong>valor:<\/strong>\u00a0Um valor est\u00e1tico a ser usado<\/li>\n<li><strong>post_build:<\/strong>\u00a0uma fun\u00e7\u00e3o que \u00e9 executada depois que todas as propriedades do modelo s\u00e3o definidas<\/li>\n<\/ul>\n<p>Essas fun\u00e7\u00f5es de compila\u00e7\u00e3o s\u00e3o um corpo de fun\u00e7\u00e3o JavaScript. Cada uma dessas fun\u00e7\u00f5es recebe as seguintes vari\u00e1veis que podem ser usadas no momento de sua execu\u00e7\u00e3o:<\/p>\n<ul>\n<li>documents - Um objeto que cont\u00e9m uma chave para cada modelo cujo valor \u00e9 uma matriz de cada documento que foi gerado<\/li>\n<li>globals - Um objeto que cont\u00e9m quaisquer vari\u00e1veis globais que possam ter sido definidas por qualquer uma das fun\u00e7\u00f5es de execu\u00e7\u00e3o ou compila\u00e7\u00e3o<\/li>\n<li>inputs - Um objeto que cont\u00e9m uma chave para cada arquivo de entrada usado, cujo valor \u00e9 a vers\u00e3o desserializada dos dados do arquivo<\/li>\n<li>faker - Uma refer\u00eancia ao FakerJS<\/li>\n<li>chance - Uma refer\u00eancia ao ChanceJS<\/li>\n<li>document_index - Esse \u00e9 um n\u00famero que representa a posi\u00e7\u00e3o do documento gerado atualmente na ordem de execu\u00e7\u00e3o<\/li>\n<li>require - Essa \u00e9 a fun\u00e7\u00e3o require do n\u00f3, que permite que voc\u00ea exija seus pr\u00f3prios pacotes. Para obter um melhor desempenho, exija e configure-os na fun\u00e7\u00e3o pre_run.<\/li>\n<\/ul>\n<p>Por exemplo, se observarmos a fun\u00e7\u00e3o de cria\u00e7\u00e3o de propriedades de nome de usu\u00e1rio, ela ter\u00e1 a seguinte apar\u00eancia:<\/p>\n<pre class=\"lang:default decode:true\">function\u00a0(documents, globals, inputs, faker, chance, document_index, require) {\r\n\u00a0return\u00a0faker.internet.userName();\r\n}\r\n\r\n<\/pre>\n<p>Agora que definimos como nosso modelo deve ser gerado, podemos come\u00e7ar a gerar alguns dados falsos com ele.<\/p>\n<p>Com nosso modelo de usu\u00e1rios salvo em um arquivo models\/users.yaml, podemos enviar dados diretamente para o console usando o comando<\/p>\n<pre class=\"lang:default decode:true\">fakeit console models\/users.yaml\r\n\r\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5695 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/blog1-example1-compressor.gif\" alt=\"blog1 example1\" width=\"800\" height=\"529\" \/><\/p>\n<p>Usando esse mesmo modelo, podemos gerar 100 arquivos JSON e salv\u00e1-los em um diret\u00f3rio chamado output\/ usando o comando<\/p>\n<pre class=\"lang:default decode:true\">fakeit directory \u2013count 100 \u2013verbose output models\/users.yaml\r\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5699 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/blog1-example2-compressor.gif\" alt=\"blog 1 example 2\" width=\"800\" height=\"529\" \/><\/p>\n<p>Al\u00e9m disso, podemos criar um arquivo zip com 1.000 arquivos JSON usando o comando:<\/p>\n<div>\n<pre class=\"lang:default decode:true\">fakeit directory \u2013count 1000 \u2013verbose output\/users.zip models\/users.yaml\r\n<\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/blog1-example3.gif\" alt=\"blog1 example3\" \/><\/p>\n<\/div>\n<p>Podemos at\u00e9 mesmo gerar um \u00fanico arquivo CSV do nosso modelo usando o seguinte comando:<\/p>\n<div>\n<pre class=\"lang:default decode:true\">fakeit directory \u2013count 25 \u2013format csv \u2013verbose output\/ models\/users.yaml\r\n<\/pre>\n<p>Isso criar\u00e1 um \u00fanico arquivo CSV cujo nome \u00e9 o nome do modelo, neste caso, o nome: Users, e o arquivo resultante ser\u00e1 denominado Users.csv<\/p>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5698 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/blog1-example4-compressor.gif\" alt=\"\" width=\"800\" height=\"463\" \/><\/p>\n<p>Se voc\u00ea estiver usando arquivos JSON, arquivos Zip ou arquivos CSV, todos eles podem ser importados para o Couchbase Server usando as ferramentas CLI <u><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/cli\/cbdocloader-tool.html\" target=\"_blank\" rel=\"noopener noreferrer\">carregador de arquivos cbdocloader<\/a><\/u>\u00a0(para arquivos *.json e *.zip) ou <u><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/tools\/cbimport.html\" target=\"_blank\" rel=\"noopener noreferrer\">cbimport<\/a><\/u>\u00a0(para arquivos *.json e *.csv)<\/p>\n<p>Embora a gera\u00e7\u00e3o de arquivos est\u00e1ticos seja vantajosa, ainda h\u00e1 a etapa adicional de import\u00e1-los para o Couchbase Server por meio das ferramentas CLI dispon\u00edveis. O FakeIt tamb\u00e9m oferece suporte ao Couchbase Server e ao Sync Gateway como destinos de sa\u00edda. Podemos gerar 10.000 documentos JSON a partir do nosso modelo users.yaml e envi\u00e1-los para um bucket chamado ecommerce em um Couchbase Server executado localmente usando o comando:<\/p>\n<pre class=\"lang:default decode:true\">fakeit couchbase \u2013server 127.0.0.1 \u2013bucket ecommerce \u2013count 10000 \u2013verbose models\/users.yaml\r\n<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-5696 size-full\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/blog1-example5-compressor.gif\" alt=\"blog 1 example 5\" width=\"800\" height=\"463\" \/><\/p>\n<h3><strong>Conclus\u00e3o<\/strong><\/h3>\n<p>Vimos como podemos representar o modelo JSON de um usu\u00e1rio usando YAML para documentar e descrever como um valor de propriedades deve ser gerado. Esse \u00fanico arquivo users.yaml pode ser enviado para o console, arquivos JSON, arquivo Zip de arquivos JSON, arquivos CSV e at\u00e9 mesmo diretamente para o Couchbase. O FakeIt \u00e9 uma ferramenta fant\u00e1stica para acelerar seu desenvolvimento e gerar conjuntos de dados de desenvolvimento maiores. Voc\u00ea pode salvar seus modelos FakeIt como parte de sua base de c\u00f3digo para facilitar a repeti\u00e7\u00e3o de conjuntos de dados por qualquer desenvolvedor.<\/p>\n<p>O FakeIt \u00e9 uma ferramenta para facilitar o desenvolvimento e o teste de sua implanta\u00e7\u00e3o do Couchbase. Embora possa gerar grandes quantidades de dados, n\u00e3o \u00e9 uma verdadeira ferramenta de teste de carga. H\u00e1 ferramentas CLI dispon\u00edveis para teste de carga e dimensionamento, como <u><a href=\"https:\/\/docs.couchbase.com\/sdk-api\/couchbase-c-client-2.4.8\/md_doc_cbc-pillowfight.html\" target=\"_blank\" rel=\"noopener noreferrer\">cbc-pillowfight<\/a><\/u>\u00a0e <u><a href=\"https:\/\/developer.couchbase.com\/documentation\/server\/current\/cli\/cbworkloadgen-tool.html\" target=\"_blank\" rel=\"noopener noreferrer\">cbworkloadgen<\/a><\/u><\/p>\n<h4><strong>Pr\u00f3ximo<\/strong><\/h4>\n<ul>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-shared-data-dependencies\/\">FakeIt S\u00e9rie 2 de 5: Dados compartilhados e depend\u00eancias<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-3-5-lean-models-through-definitions\/\">S\u00e9rie FakeIt 3 de 5: Modelos Lean por meio de defini\u00e7\u00f5es<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-working-existing-data\/\">FakeIt S\u00e9rie 4 de 5: Trabalhando com dados existentes<\/a><\/li>\n<li><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-5-5-rapid-mobile-development-sync-gateway\/\">FakeIt Series 5 de 5: Desenvolvimento m\u00f3vel r\u00e1pido com o Sync-Gateway<\/a><\/li>\n<\/ul>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-medium wp-image-2966 aligncenter\" src=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/brand.devCommChampionLogo.champion.FINAL_-300x300.png\" alt=\"Couchbase Champion\" width=\"300\" height=\"300\" \/><\/p>\n<p><a href=\"https:\/\/www.couchbase.com\/blog\/pt\/community\/community-writers-program\/\"><em>Esta postagem faz parte do Programa de Reda\u00e7\u00e3o da Comunidade Couchbase<\/em><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>H\u00e1 in\u00fameras postagens em blogs sobre modelagem de dados, padr\u00f5es de chaves e documentos. Todas essas publica\u00e7\u00f5es oferecem uma \u00f3tima introdu\u00e7\u00e3o sobre como estruturar e modelar seus documentos no Couchbase, mas nenhuma delas diz a voc\u00ea o que fazer em seguida. Nesta s\u00e9rie de blogs, responderemos \u00e0 pergunta: o que voc\u00ea faz depois de definir seu modelo de dados?<\/p>","protected":false},"author":53,"featured_media":13873,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"inline_featured_image":false,"footnotes":""},"categories":[1816,1819],"tags":[1883,1884,1885],"ppma_author":[9026],"class_list":["post-2959","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-couchbase-server","category-data-modeling","tag-data-modelling","tag-document-patterns","tag-fakeit"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.8 (Yoast SEO v25.8) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>FakeIt Series 1 of 5: Generating Fake Data - The Couchbase Blog<\/title>\n<meta name=\"description\" content=\"This article focuses on how we can represent a user&#039;s JSON model using YAML to document and describe how a properties value should be generated.\" \/>\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\/fakeit-series-generating-fake-data\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"FakeIt Series 1 of 5: Generating Fake Data\" \/>\n<meta property=\"og:description\" content=\"This article focuses on how we can represent a user&#039;s JSON model using YAML to document and describe how a properties value should be generated.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-generating-fake-data\/\" \/>\n<meta property=\"og:site_name\" content=\"The Couchbase Blog\" \/>\n<meta property=\"article:published_time\" content=\"2017-03-14T21:35:15+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-06-19T10:21:50+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/aaronb-benton-headshot_1000x1000-300x300.jpg\" \/>\n<meta name=\"author\" content=\"Laura Czajkowski, Developer Community Manager, 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=\"Laura Czajkowski, Developer Community Manager, Couchbase\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"8 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/\"},\"author\":{\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220\"},\"headline\":\"FakeIt Series 1 of 5: Generating Fake Data\",\"datePublished\":\"2017-03-14T21:35:15+00:00\",\"dateModified\":\"2023-06-19T10:21:50+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/\"},\"wordCount\":1101,\"commentCount\":4,\"publisher\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#organization\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"keywords\":[\"data modelling\",\"document patterns\",\"fakeit\"],\"articleSection\":[\"Couchbase Server\",\"Data Modeling\"],\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/\",\"url\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/\",\"name\":\"FakeIt Series 1 of 5: Generating Fake Data - The Couchbase Blog\",\"isPartOf\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png\",\"datePublished\":\"2017-03-14T21:35:15+00:00\",\"dateModified\":\"2023-06-19T10:21:50+00:00\",\"description\":\"This article focuses on how we can represent a user's JSON model using YAML to document and describe how a properties value should be generated.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#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\/fakeit-series-generating-fake-data\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.couchbase.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"FakeIt Series 1 of 5: Generating Fake Data\"}]},{\"@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\/5f1a0ece4e644bc8c037686fbc8f3220\",\"name\":\"Laura Czajkowski, Developer Community Manager, Couchbase\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g\",\"caption\":\"Laura Czajkowski, Developer Community Manager, Couchbase\"},\"description\":\"Laura Czajkowski is the Snr. Developer Community Manager at Couchbase overseeing the community. She\u2019s responsible for our monthly developer newsletter.\",\"url\":\"https:\/\/www.couchbase.com\/blog\/pt\/author\/laura-czajkowski\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"FakeIt Series 1 of 5: Generating Fake Data - The Couchbase Blog","description":"This article focuses on how we can represent a user's JSON model using YAML to document and describe how a properties value should be generated.","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\/fakeit-series-generating-fake-data\/","og_locale":"pt_BR","og_type":"article","og_title":"FakeIt Series 1 of 5: Generating Fake Data","og_description":"This article focuses on how we can represent a user's JSON model using YAML to document and describe how a properties value should be generated.","og_url":"https:\/\/www.couchbase.com\/blog\/pt\/fakeit-series-generating-fake-data\/","og_site_name":"The Couchbase Blog","article_published_time":"2017-03-14T21:35:15+00:00","article_modified_time":"2023-06-19T10:21:50+00:00","og_image":[{"url":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/2017\/03\/aaronb-benton-headshot_1000x1000-300x300.jpg","type":"","width":"","height":""}],"author":"Laura Czajkowski, Developer Community Manager, Couchbase","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Laura Czajkowski, Developer Community Manager, Couchbase","Est. reading time":"8 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#article","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/"},"author":{"name":"Laura Czajkowski, Developer Community Manager, Couchbase","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/5f1a0ece4e644bc8c037686fbc8f3220"},"headline":"FakeIt Series 1 of 5: Generating Fake Data","datePublished":"2017-03-14T21:35:15+00:00","dateModified":"2023-06-19T10:21:50+00:00","mainEntityOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/"},"wordCount":1101,"commentCount":4,"publisher":{"@id":"https:\/\/www.couchbase.com\/blog\/#organization"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","keywords":["data modelling","document patterns","fakeit"],"articleSection":["Couchbase Server","Data Modeling"],"inLanguage":"pt-BR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/","url":"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/","name":"FakeIt Series 1 of 5: Generating Fake Data - The Couchbase Blog","isPartOf":{"@id":"https:\/\/www.couchbase.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#primaryimage"},"image":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#primaryimage"},"thumbnailUrl":"https:\/\/www.couchbase.com\/blog\/wp-content\/uploads\/sites\/1\/2022\/11\/couchbase-nosql-dbaas.png","datePublished":"2017-03-14T21:35:15+00:00","dateModified":"2023-06-19T10:21:50+00:00","description":"This article focuses on how we can represent a user's JSON model using YAML to document and describe how a properties value should be generated.","breadcrumb":{"@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/fakeit-series-generating-fake-data\/#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\/fakeit-series-generating-fake-data\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.couchbase.com\/blog\/"},{"@type":"ListItem","position":2,"name":"FakeIt Series 1 of 5: Generating Fake Data"}]},{"@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\/5f1a0ece4e644bc8c037686fbc8f3220","name":"Laura Czajkowski, gerente da comunidade de desenvolvedores, Couchbase","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/www.couchbase.com\/blog\/#\/schema\/person\/image\/9deb07d5daaa00220534c31768bc4409","url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","caption":"Laura Czajkowski, Developer Community Manager, Couchbase"},"description":"Laura Czajkowski \u00e9 a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela \u00e9 respons\u00e1vel pelo nosso boletim informativo mensal para desenvolvedores.","url":"https:\/\/www.couchbase.com\/blog\/pt\/author\/laura-czajkowski\/"}]}},"authors":[{"term_id":9026,"user_id":53,"is_guest":0,"slug":"laura-czajkowski","display_name":"Laura Czajkowski, Developer Community Manager, Couchbase","avatar_url":"https:\/\/secure.gravatar.com\/avatar\/bc8eebaf25cbe39bc12fd7b1ef92550becc3953ab877a3f0285a59ec2d30b754?s=96&d=mm&r=g","author_category":"","last_name":"Czajkowski","first_name":"Laura","job_title":"","user_url":"","description":"Laura Czajkowski \u00e9 a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela \u00e9 respons\u00e1vel pelo nosso boletim informativo mensal para desenvolvedores."}],"_links":{"self":[{"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2959","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\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/comments?post=2959"}],"version-history":[{"count":0,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/posts\/2959\/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=2959"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/categories?post=2959"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/tags?post=2959"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.couchbase.com\/blog\/pt\/wp-json\/wp\/v2\/ppma_author?post=2959"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}