Aaron Benton é um arquiteto experiente, especializado em soluções criativas para desenvolver aplicativos móveis inovadores. Ele tem mais de 10 anos de experiência em desenvolvimento de pilha completa, incluindo ColdFusion, SQL, NoSQL, JavaScript, HTML e CSS. Atualmente, Aaron é Arquiteto de Aplicativos da Shop.com em Greensboro, Carolina do Norte, e é um Campeão da comunidade do Couchbase.
FakeIt Série 1 de 5: Geração de dados falsos
Há inúmeras postagens em blogs sobre modelagem de dados, chave e padrões de documentos. Todas essas publicações oferecem uma ótima introdução sobre como estruturar e modelar seus documentos no Couchbase, mas nenhuma delas diz a você o que fazer em seguida. Nesta série de blogs, responderemos à pergunta: o que fazer depois de definir o modelo de dados?
Modelo de usuários
Nesta série, trabalharemos com um aplicativo de comércio eletrônico greenfield. Como na maioria dos aplicativos de comércio eletrônico, nosso aplicativo terá usuários, portanto, é por aí que começaremos.
Para começar, definimos um modelo básico de usuário.
1 2 3 4 5 6 7 8 9 10 11 |
{ "_id": "user_0", "doc_type": "usuário", "user_id": 0, "first_name": "Mac", "last_name": "Carter", "nome de usuário": "Salma.Ratke", "senha": "DvA6YrMGtgsKKnG", "email_address": "Ludie74@hotmail.com", "created_on": 1457172796088 } |
Fizemos a parte mais difícil, que é definir nosso modelo, mas e agora?
- Como representamos esse modelo?
- Como documentamos esse modelo?
- Esse modelo se baseia em dados de outros modelos?
- Como os dados podem ser gerados a partir desse modelo?
- Como podemos gerar dados falsos/teste?
Felizmente para nós, há um projeto NodeJS chamado Falsa que pode responder a todas essas perguntas para nós. Falsa é um utilitário 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ção de FakerJS, ChanceJS ou funções personalizadas. Os dados gerados podem ser gerados nos seguintes formatos e destinos:
- json
- yaml
- cson
- csv
- Arquivo Zip de arquivos json, yaml, cson ou csv
- Servidor Couchbase
- Servidor de gateway de sincronização do Couchbase
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.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
nome: Usuários tipo: objeto chave: _id propriedades: _id: tipo: string descrição: O documento id construído por o prefixado "user_" e o usuários id tipo de documento: tipo: string descrição: O documento tipo user_id: tipo: inteiro descrição: O usuários id primeiro_nome: tipo: string descrição: O usuários primeiro nome sobrenome: tipo: string descrição: O usuários último nome nome de usuário: tipo: string descrição: O usuários nome de usuário senha: tipo: string descrição: O usuários senha endereço de e-mail: tipo: string descrição: O usuários e-mail endereço created_on: tipo: inteiro descrição: Um época tempo de quando o usuário foi criado |
Você provavelmente está se perguntando, "Ótimo, defini meu modelo em YAML, mas de que isso me serve?" Um dos maiores problemas que os desenvolvedores enfrentam ao iniciar o desenvolvimento é ter dados para trabalhar. Muitas vezes, uma quantidade exorbitante de tempo é gasta na criação manual de documentos, escrevendo códigos descartáveis para preencher um bucket. Além disso, você pode ter um dump de dados completo ou parcial do seu banco de dados que precisa ser importado.
Esses procedimentos são demorados, tediosos e, no caso de um despejo de dados, não fornecem nenhuma visão ou documentação sobre os modelos disponíveis. Podemos adicionar algumas propriedades simples ao nosso modelo FakeIt que descrevem como o nosso modelo deve ser gerado e, por meio de um único arquivo, podemos criar uma quantidade infinita de documentos falsos randomizados.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
nome: Usuários tipo: objeto chave: _id propriedades: _id: tipo: string descrição: O documento id construído por o prefixo "user_" e o usuários id dados: post_build: `usuário_${este.user_id}` tipo de documento: tipo: string descrição: O documento tipo dados: valor: usuário user_id: tipo: inteiro descrição: Um automático-incrementando número dados: construir: documento_índice primeiro_nome: tipo: string descrição: O usuários primeiro nome dados: construir: falsificador.nome.firstName() sobrenome: tipo: string descrição: O usuários último nome dados: construir: falsificador.nome.lastName() nome de usuário: tipo: string descrição: O nome de usuário dados: construir: falsificador.Internet.nome de usuário() senha: tipo: string descrição: O usuários senha dados: construir: falsificador.Internet.senha() endereço de e-mail: tipo: string descrição: O usuários e-mail endereço dados: construir: falsificador.Internet.e-mail() created_on: tipo: inteiro descrição: Um época tempo de quando o usuário foi criado dados: construir: novo Data(falsificador.data.passado()).getTime() |
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:
- pre_build: para inicializar o valor
- construir: função que cria um valor
- falso: Uma string de modelo do FakerJS, ou seja, {{internet.userName}}
- valor: Um valor estático a ser usado
- post_build: uma função que é executada depois que todas as propriedades do modelo são definidas
Essas funções de compilação são um corpo de função JavaScript. Cada uma dessas funções recebe as seguintes variáveis que podem ser usadas no momento de sua execução:
- documents - Um objeto que contém uma chave para cada modelo cujo valor é uma matriz de cada documento que foi gerado
- globals - Um objeto que contém quaisquer variáveis globais que possam ter sido definidas por qualquer uma das funções de execução ou compilação
- inputs - Um objeto que contém uma chave para cada arquivo de entrada usado, cujo valor é a versão desserializada dos dados do arquivo
- faker - Uma referência ao FakerJS
- chance - Uma referência ao ChanceJS
- document_index - Esse é um número que representa a posição do documento gerado atualmente na ordem de execução
- require - Essa é a função require do nó, que permite que você exija seus próprios pacotes. Para obter um melhor desempenho, exija e configure-os na função pre_run.
Por exemplo, se observarmos a função de criação de propriedades de nome de usuário, ela terá a seguinte aparência:
1 2 3 |
função (documentos, globais, insumos, falsificador, chance, índice_documento, exigir) { retorno falsificador.Internet.nome de usuário(); } |
Agora que definimos como nosso modelo deve ser gerado, podemos começar a gerar alguns dados falsos com ele.
Com nosso modelo de usuários salvo em um arquivo models/users.yaml, podemos enviar dados diretamente para o console usando o comando
1 |
falso console modelos/usuários.yaml |
Usando esse mesmo modelo, podemos gerar 100 arquivos JSON e salvá-los em um diretório chamado output/ usando o comando
1 |
falso diretório -contagem 100 -detalhado saída modelos/usuários.yaml |
Além disso, podemos criar um arquivo zip com 1.000 arquivos JSON usando o comando:
1 |
falso diretório -contagem 1000 -detalhado saída/usuários.zíper modelos/usuários.yaml |

Podemos até mesmo gerar um único arquivo CSV do nosso modelo usando o seguinte comando:
1 |
falso diretório -contagem 25 -formato csv -detalhado saída/ modelos/usuários.yaml |
Isso criará um único arquivo CSV cujo nome é o nome do modelo, neste caso, o nome: Users, e o arquivo resultante será denominado Users.csv
Se você estiver usando arquivos JSON, arquivos Zip ou arquivos CSV, todos eles podem ser importados para o Couchbase Server usando as ferramentas CLI carregador de arquivos cbdocloader (para arquivos *.json e *.zip) ou cbimport (para arquivos *.json e *.csv)
Embora a geração de arquivos estáticos seja vantajosa, ainda há a etapa adicional de importá-los para o Couchbase Server por meio das ferramentas CLI disponíveis. O FakeIt também oferece suporte ao Couchbase Server e ao Sync Gateway como destinos de saída. Podemos gerar 10.000 documentos JSON a partir do nosso modelo users.yaml e enviá-los para um bucket chamado ecommerce em um Couchbase Server executado localmente usando o comando:
1 |
falso couchbase -servidor 127.0.0.1 -balde comércio eletrônico -contagem 10000 -detalhado modelos/usuários.yaml |
Conclusão
Vimos como podemos representar o modelo JSON de um usuário usando YAML para documentar e descrever como um valor de propriedades deve ser gerado. Esse único arquivo users.yaml pode ser enviado para o console, arquivos JSON, arquivo Zip de arquivos JSON, arquivos CSV e até mesmo diretamente para o Couchbase. O FakeIt é uma ferramenta fantástica para acelerar seu desenvolvimento e gerar conjuntos de dados de desenvolvimento maiores. Você pode salvar seus modelos FakeIt como parte de sua base de código para facilitar a repetição de conjuntos de dados por qualquer desenvolvedor.
O FakeIt é uma ferramenta para facilitar o desenvolvimento e o teste de sua implantação do Couchbase. Embora possa gerar grandes quantidades de dados, não é uma verdadeira ferramenta de teste de carga. Há ferramentas CLI disponíveis para teste de carga e dimensionamento, como cbc-pillowfight e cbworkloadgen
Próximo
- FakeIt Série 2 de 5: Dados compartilhados e dependências
- Série FakeIt 3 de 5: Modelos Lean por meio de definições
- FakeIt Série 4 de 5: Trabalhando com dados existentes
- FakeIt Series 5 de 5: Desenvolvimento móvel rápido com o Sync-Gateway
Esta postagem faz parte do Programa de Redação da Comunidade Couchbase
[...] FakeIt Série 1 de 5: Geração de dados falsos Aprendemos que o FakeIt pode gerar uma grande quantidade de dados aleatórios com base em um único arquivo YAML e [...]
[...] até agora, em nossa série FakeIt, vimos como podemos gerar dados falsos, compartilhar dados e dependências e usar definições para modelos menores. Hoje vamos dar uma olhada [...]
[...] Série FakeIt 1 de 5: Geração de dados falsos [...]
No Couchbase 5.0 e superior, é necessário especificar um nome de usuário e uma senha para o Couchbase.
Você pode fazer isso adicionando os parâmetros -username (ou -u) e -password (ou -p) ao comando "fakeit couchbase"