Servidor Couchbase

FakeIt Serie 2 de 5: Datos compartidos y dependencias

Hay montones de generadores de datos aleatorios disponibles, una simple búsqueda en Google le dará más que suficiente para elegir. Sin embargo, casi todos ellos tienen el mismo defecto frustrante: sólo pueden trabajar con un único modelo. Rara vez como desarrolladores tenemos el lujo de tratar con un solo modelo, más a menudo que no estamos desarrollando contra múltiples modelos para nuestros proyectos. Aquí es donde FakeIt se destaca, que permite múltiples modelos y los modelos que tienen dependencias.

Comparte este artículo

Aaron Benton es un arquitecto experimentado especializado en soluciones creativas para desarrollar aplicaciones móviles innovadoras. Tiene más de 10 años de experiencia en desarrollo full stack, incluyendo ColdFusion, SQL, NoSQL, JavaScript, HTML y CSS. Aaron es actualmente Arquitecto de Aplicaciones para Shop.com en Greensboro, Carolina del Norte y es un Campeón de la comunidad Couchbase.

Aaron Benton

FakeIt Serie 2 de 5: Datos compartidos y dependencias

En FakeIt Serie 1 de 5: Generación de datos falsos aprendimos que FakeIt puede generar una gran cantidad de datos aleatorios basados en un único archivo YAML y enviar los resultados a varios formatos y destinos, incluyendo Couchbase Server. Hoy vamos a explorar lo que hace FakeIt verdaderamente único y poderoso en el mundo de la generación de datos.

Hay montones de generadores de datos aleatorios disponibles, un simple Búsqueda en Google le dará más que suficiente donde elegir. Sin embargo, casi todos ellos tienen el mismo defecto frustrante: sólo pueden trabajar con un único modelo. Rara vez como desarrolladores tenemos el lujo de tratar con un solo modelo, más a menudo que no estamos desarrollando contra múltiples modelos para nuestros proyectos. Aquí es donde FakeIt se destaca, que permite múltiples modelos y los modelos que tienen dependencias.

Echemos un vistazo a los posibles modelos que tendremos dentro de nuestra aplicación de comercio electrónico:

  • Usuarios
  • Productos
  • Carrito
  • Pedidos
  • Reseñas

Usuarios, el primer modelo que definimos no tiene dependencias y lo mismo puede decirse del modelo Productos, que definiremos a continuación. Sin embargo, sería lógico decir que nuestro modelo de Pedidos dependería tanto del modelo de Usuarios como del de Productos. Si realmente queremos datos de prueba, los documentos creados por nuestro modelo Pedidos deberían ser los datos aleatorios reales generados a partir de los modelos Usuarios y Productos.

Productos Modelo

Antes de ver como funcionan las dependencias de modelos en FakeIt definamos como va a ser nuestro modelo de Productos.

Este modelo es un poco más complejo que nuestro anterior modelo de Usuarios. Examinemos algunas de estas propiedades con más detalle:

  • _id: Este valor se establece después de que todas las propiedades del documento hayan sido construidas y está disponible para la función de post-construcción. El contexto es el del documento actual que se está generando.
  • precio_venta: Esto mediante la definición de una probabilidad 30% de un precio de venta y si hay un precio de venta de garantizar que el valor es inferior a la de la propiedad de precio
  • palabras clave: Es un array. Esto se define de manera similar a Swagger, definimos nuestros elementos de matriz y cómo queremos que se construyan utilizando las funciones build / post_build. Adicionalmente, podemos definir valores min y max y FakeIt generará un número aleatorio de elementos del array entre estos valores. También hay una propiedad fija que se puede utilizar para generar un número determinado de elementos de la matriz.

Ahora que hemos construido nuestro modelo de Productos generemos algunos datos aleatorios y enviémoslos a la consola para ver cómo se ven usando el comando:

Blog 2 example1-1

Modelo de pedidos

Para nuestro proyecto ya hemos definido los siguientes modelos:

  • usuarios.yaml
  • productos.yaml

Empecemos definiendo un modelo de Órdenes sin propiedades y especificando sus dependencias:

Hemos definido dos dependencias para nuestro modelo de Pedidos, y las hemos referenciado por su nombre de fichero. Dado que todos nuestros modelos se almacenan en el mismo directorio no hay razón para especificar la ruta completa. En tiempo de ejecución, FakeIt primero analizará todos los modelos antes de intentar generar documentos, y determinará un orden de ejecución basado en cada una de las dependencias de los modelos (si las hay).

Cada una de las funciones de construcción en un modelo FakeIt es un cuerpo de función, con los siguientes argumentos que se le pasan.

Una vez establecido el orden de ejecución, cada una de las dependencias se guarda en memoria y se pone a disposición del modelo dependiente a través del argumento documentos. Este argumento es un objeto que contiene una clave para cada modelo cuyo valor es un array de cada documento que se ha generado. Para nuestro ejemplo de la propiedad documents tendrá un aspecto similar a este:

Podemos aprovechar esto para recuperar documentos aleatorios de Producto y Usuario asignando sus propiedades a propiedades dentro de nuestro modelo de Pedidos. Por ejemplo, podemos recuperar un user_id aleatorio de los documentos generados por el modelo Users y asignarlo al user_id del modelo Orders a través de una función build

Definamos cómo será el resto de nuestro modelo de Pedidos:

Y la salida a la consola utilizando el comando:

blog example2-1

Como se puede ver en la salida de la consola, los documentos se generaron para los modelos Usuarios y Productos, y esos documentos se pusieron a disposición del modelo Pedidos. Sin embargo, se excluyeron de la salida porque todo lo que se pidió que saliera fue el modelo Pedidos.

Ahora que hemos definido 3 modelos con dependencias (Usuarios, Productos y Pedidos), necesitamos ser capaces de generar múltiples documentos para cada uno de ellos y enviarlos a Couchbase Server. Hasta ahora hemos especificado el número de documentos a generar mediante el argumento de línea de comandos -count. Podemos especificar el número de documentos o un rango de documentos utilizando la propiedad data: en la raíz del modelo.

Ahora podemos generar conjuntos aleatorios de modelos de documentos relacionados y enviar esos documentos directamente a Couchbase Server usando el comando:

Blog 2 Example 3-1

Conclusión

Hemos visto a través de tres sencillos modelos YAML de FakeIt cómo podemos crear dependencias entre modelos permitiendo que los datos generados aleatoriamente se relacionen entre modelos y se transmitan a Couchbase Server. También hemos visto cómo podemos especificar el número de documentos a generar por modelo usando la propiedad data: en la raíz de un modelo.

Estos modelos pueden ser almacenados en el repositorio de tus proyectos, ocupando muy poco espacio y permitiendo a tus desarrolladores generar las mismas estructuras de datos con datos completamente diferentes. Otra ventaja de poder generar documentos a través de relaciones multimodelo es explorar diferentes modelos de documentos y ver cómo se comportan con varias consultas N1QL.

A continuación

Anterior

Couchbase Champion Este post forma parte del Programa de Escritura de la Comunidad Couchbase

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Laura Czajkowski, Directora de la Comunidad de Desarrolladores, Couchbase

Laura Czajkowski es la Snr. Developer Community Manager en Couchbase supervisando la comunidad. Es responsable de nuestro boletín mensual para desarrolladores.

2 Comentarios

  1. [...] nuestro post anterior FakeIt Serie 2 de 5: Datos Compartidos y Dependencias vimos cómo crear dependencias multi-modelo con FakeIt. Hoy [...]

  2. [...] hasta ahora en nuestra serie FakeIt hemos visto cómo podemos Generar Datos Falsos, Compartir Datos y Dependencias, y utilizar Definiciones para modelos más pequeños. Hoy vamos a ver la última característica importante de [...]

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.