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.

Aaron Benton

FakeIt Série 2 de 5: Dados compartilhados e dependências

Em FakeIt Série 1 de 5: Geração de dados falsos aprendemos que a FakeIt pode gerar uma grande quantidade de dados aleatórios com base em um único arquivo YAML e enviar os resultados para vários formatos e destinos, incluindo o Couchbase Server. Hoje vamos explorar o que torna a FakeIt realmente única e poderosa no mundo da geração de dados.

Há muitos geradores de dados aleatórios disponíveis, um simples Pesquisa do Google lhe darão mais do que o suficiente para escolher. No entanto, quase todos eles têm a mesma falha frustrante, que é o fato de só poderem lidar com um único modelo. Raramente, como desenvolvedores, temos o luxo de lidar com um único modelo; na maioria das vezes, estamos desenvolvendo vários modelos para nossos projetos. É nesse ponto que o FakeIt se destaca: ele permite vários modelos e que esses modelos tenham dependências.

Vamos dar uma olhada nos possíveis modelos que teremos em nosso aplicativo de comércio eletrônico:

  • Usuários
  • Produtos
  • Carrinho
  • Pedidos
  • Comentários

Usuários, o primeiro modelo que definimos, não tem nenhuma dependência, e o mesmo pode ser dito do modelo Produtos, que definiremos a seguir. No entanto, seria lógico dizer que o nosso modelo Orders dependeria dos modelos Users e Products. Se realmente quisermos dados de teste, os documentos criados pelo nosso modelo Orders deverão ser os dados aleatórios reais gerados pelos modelos Users e Products.

Modelo de produtos

Antes de analisarmos como as dependências de modelo funcionam na FakeIt, vamos definir como será o nosso modelo de produtos.

Esse modelo é um pouco mais complexo do que o modelo anterior de Usuários. Vamos examinar algumas dessas propriedades em mais detalhes:

  • _id: Esse valor está sendo definido depois que cada propriedade do documento foi criada e está disponível para a função de pós-compilação. Esse contexto é o do documento atual que está sendo gerado
  • preço de venda: Para isso, é necessário definir uma chance de preço de venda e, se houver um preço de venda, garantir que o valor seja menor do que o da propriedade de preço
  • palavras-chave: É uma matriz. Definido de forma semelhante ao Swagger, definimos nossos itens de matriz e como queremos que eles sejam construídos usando as funções build / post_build. Além disso, podemos definir os valores mínimo e máximo, e o FakeIt gerará um número aleatório de elementos de matriz entre esses valores. Há também uma propriedade fixa que pode ser usada para gerar um número definido de elementos de matriz.

Agora que construímos nosso modelo de produtos, vamos gerar alguns dados aleatórios e enviá-los ao console para ver como eles se parecem usando o comando:

Blog 2 example1-1

Modelo de pedidos

Para nosso projeto, já definimos os seguintes modelos:

  • users.yaml
  • produtos.yaml

Vamos começar definindo o modelo Orders sem nenhuma propriedade e especificando suas dependências:

Definimos duas dependências para o nosso modelo Orders e as referenciamos pelo nome do arquivo. Como todos os nossos modelos são armazenados no mesmo diretório, não há motivo para especificar o caminho completo. No tempo de execução, a FakeIt analisará primeiro todos os modelos antes de tentar gerar documentos e determinará uma ordem de execução com base em cada uma das dependências dos modelos (se houver).

Cada uma das funções de compilação em um modelo FakeIt é um corpo de função, com os seguintes argumentos passados a ele.

Depois que a ordem de execução é estabelecida, cada uma das dependências é salva na memória e disponibilizada para o modelo dependente por meio do argumento documents. Esse argumento é um objeto que contém uma chave para cada modelo, cujo valor é uma matriz de cada documento que foi gerado. Para o nosso exemplo da propriedade documents, a aparência será semelhante a esta:

Podemos tirar proveito disso para recuperar documentos aleatórios de produtos e usuários, atribuindo suas propriedades às propriedades do nosso modelo Orders. Por exemplo, podemos recuperar um user_id aleatório dos documentos gerados pelo modelo Users e atribuí-lo ao user_id do modelo Orders por meio de uma função de compilação

Vamos definir como será o restante do nosso modelo de Orders:

E envie-o para o console usando o comando:

blog example2-1

Como você pode ver na saída do console, os documentos foram gerados para os modelos Usuários e Produtos, e esses documentos foram disponibilizados para o modelo Pedidos. No entanto, eles foram excluídos da saída porque tudo o que foi solicitado para saída foi o modelo Orders.

Agora que definimos três modelos com dependências (Usuários, Produtos e Pedidos), precisamos ser capazes de gerar vários documentos para cada um deles e enviá-los ao Couchbase Server. Até este ponto, especificamos o número de documentos a serem gerados por meio do argumento de linha de comando -count. Podemos especificar o número de documentos ou um intervalo de documentos usando a propriedade data: na raiz do modelo.

Agora podemos gerar conjuntos aleatórios de modelos de documentos relacionados e enviar esses documentos diretamente para o Couchbase Server usando o comando:

Blog 2 Example 3-1

Conclusão

Vimos, por meio de três modelos simples do FakeIt YAML, como podemos criar dependências de modelos, permitindo que dados gerados aleatoriamente sejam relacionados entre modelos e transmitidos para o Couchbase Server. Também vimos como podemos especificar o número de documentos a serem gerados por modelo usando a propriedade data: na raiz de um modelo.

Esses modelos podem ser armazenados no repositório de projetos, ocupando muito pouco espaço e permitindo que os desenvolvedores gerem as mesmas estruturas de dados com dados completamente diferentes. Outra vantagem de poder gerar documentos por meio de relacionamentos de vários modelos é explorar diferentes modelos de documentos e ver o desempenho deles com várias consultas N1QL.

Próximo

Anterior

Couchbase Champion Esta postagem faz parte do Programa de Redação da Comunidade Couchbase

Autor

Postado por Laura Czajkowski, gerente da comunidade de desenvolvedores, Couchbase

Laura Czajkowski é a Snr. Developer Community Manager da Couchbase, supervisionando a comunidade. Ela é responsável pelo nosso boletim informativo mensal para desenvolvedores.

2 Comentários

  1. [...] em nosso post anterior FakeIt Series 2 of 5: Shared Data and Dependencies, vimos como criar dependências de vários modelos com o FakeIt. Hoje, [...]

  2. [...] 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 no último recurso importante do [...]

Deixar uma resposta