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 1 de 5: Generación de datos falsos

Hay innumerables entradas de blog sobre modelado de datosy patrones de documentos. Todos estos posts dan una gran introducción a cómo estructurar y modelar tus documentos en Couchbase, pero ninguno de ellos te dice qué hacer a continuación. En esta serie de blogs vamos a responder a la pregunta, ¿qué hacer después de haber definido tu modelo de datos?

Modelo de usuario

Para esta serie vamos a trabajar con una aplicación de comercio electrónico greenfield. Como con la mayoría de las aplicaciones de comercio electrónico, nuestra aplicación va a tener usuarios, así que aquí es donde vamos a empezar.

Para empezar, hemos definido un modelo de usuario básico.

Hemos hecho lo más difícil, que es definir nuestro modelo, pero ¿ahora qué?

  • ¿Cómo representamos este modelo?
  • ¿Cómo documentamos este modelo?
  • ¿Se basa este modelo en datos de otros modelos?
  • ¿Cómo se pueden generar datos a partir de este modelo?
  • ¿Cómo podemos generar datos falsos o de prueba?

Por suerte para nosotros existe un proyecto NodeJS llamado FakeIt que pueda respondernos a todas estas preguntas. FakeIt es una utilidad de línea de comandos que genera datos falsos en formatos json, yaml, yml, cson o csv basados en modelos definidos en yaml. Los datos pueden generarse utilizando cualquier combinación de FakerJS, ChanceJS o funciones personalizadas. Los datos generados pueden ser emitidos en los siguientes formatos y destinos:

  • json
  • yaml
  • cson
  • csv
  • Archivo Zip de archivos json, yaml, cson o csv
  • Servidor Couchbase
  • Servidor Couchbase Sync Gateway

Podemos definir un modelo FakeIt en YAML para representar nuestro modelo JSON. Esto nos proporciona un modelo documentado y tipado por datos que podemos comunicar cómo debe ser la estructura de nuestro modelo y para qué sirven las propiedades.

Probablemente te estés diciendo, "Genial, he definido mi modelo en YAML pero ¿de qué me sirve?" Uno de los mayores problemas a los que se enfrentan los desarrolladores cuando empiezan a desarrollar es tener datos con los que trabajar. A menudo se pierde una cantidad exorbitante de tiempo creando documentos manualmente, escribiendo código para rellenar un cubo. Además, es posible que tenga un volcado de datos completo o parcial de su base de datos que tiene que ser importado.

Estos son lentos, tediosos y, en el caso de un volcado de datos, no proporcionan ninguna información o documentación sobre los modelos disponibles. Podemos añadir unas sencillas propiedades a nuestro modelo FakeIt que describan cómo debe generarse nuestro modelo, y a través de un único archivo podemos crear un sinfín de documentos aleatorios falsos.

Hemos añadido una propiedad de datos a cada una de las propiedades de nuestros modelos que describe cómo se debe generar ese valor. FakeIt soporta 5 formas diferentes de generar un valor:

  • pre_build: para inicializar el valor
  • construir: que construye un valor
  • falso: Una cadena de plantilla FakerJS, por ejemplo {{internet.userName}}
  • valor: Un valor estático a utilizar
  • post_build: una función que se ejecuta después de establecer todas las propiedades del modelo

Estas funciones de compilación son un cuerpo de función JavaScript. A cada una de estas funciones se le pasan las siguientes variables que se pueden utilizar en el momento de su ejecución:

  • documentos - Un objeto que contiene una clave para cada modelo cuyo valor es una matriz de cada documento que se ha generado
  • globals - Un objeto que contiene cualquier variable global que pueda haber sido establecida por cualquiera de las funciones run o build
  • inputs - Un objeto que contiene una clave para cada archivo de entrada utilizado cuyo valor es la versión deserializada de los datos de los archivos
  • faker - Una referencia a FakerJS
  • chance - Una referencia a ChanceJS
  • document_index - Es un número que representa la posición del documento generado actualmente en el orden de ejecución
  • require - Esta es la función require del nodo, le permite requerir sus propios paquetes. Para un mejor rendimiento requerir y seth ellos en la función pre_run.

Por ejemplo, si nos fijamos en la función de construcción de propiedades de nombre de usuario se vería así:

Ahora que hemos definido cómo debe generarse nuestro modelo, podemos empezar a generar algunos datos falsos con él.

Con nuestro modelo de usuarios guardado en un archivo models/users.yaml, podemos enviar los datos directamente a la consola utilizando el comando

blog1 example1

Usando este mismo modelo podemos generar 100 archivos JSON y guardarlos en un directorio llamado output/ usando el comando

blog 1 example 2

Además, podemos crear un archivo zip de 1.000 archivos JSON utilizando el comando:


blog1 example3

Incluso podemos generar un único archivo CSV de nuestro modelo utilizando el siguiente comando:


Esto creará un único archivo CSV cuyo nombre es el nombre del modelo, en este caso nombre: Usuarios con el archivo resultante llamado Usuarios.csv

Tanto si utilizas archivos JSON, archivos Zip o archivos CSV, todos ellos pueden importarse a Couchbase Server utilizando las herramientas CLI cbdocloader (para archivos *.json y *.zip) o cbimport (para archivos *.json y *.csv)

Mientras que la generación de archivos estáticos es beneficioso, todavía hay el paso extra de tener que importarlos a Couchbase Server a través de las herramientas CLI disponibles. FakeIt también soporta Couchbase Server y Sync Gateway como destinos de salida. Podemos generar 10.000 documentos JSON a partir de nuestro modelo users.yaml, y enviarlos a un bucket llamado ecommerce en un Couchbase Server ejecutándose localmente usando el comando:

blog 1 example 5

Conclusión

Hemos visto cómo podemos representar el modelo JSON de un usuario usando YAML para documentar y describir cómo debe generarse un valor de propiedades. Ese único archivo users.yaml puede ser enviado a la consola, archivos JSON, archivo Zip de archivos JSON, archivos CSV, e incluso directamente a Couchbase. FakeIt es una herramienta fantástica para acelerar tu desarrollo y generar grandes conjuntos de datos de desarrollo. Puede guardar sus modelos FakeIt como parte de su código base para facilitar la repetición de conjuntos de datos por cualquier desarrollador.

FakeIt es una herramienta para facilitar el desarrollo y las pruebas de tu despliegue de Couchbase. Aunque puede generar grandes cantidades de datos, no es una verdadera herramienta de pruebas de carga. Hay herramientas CLI disponibles para pruebas de carga y dimensionamiento tales como cbc-pillowfight y cbworkloadgen

A continuación

Couchbase Champion

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

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.

4 Comentarios

  1. [...] FakeIt Serie 1 de 5: Generando Datos Falsos aprendimos que FakeIt puede generar una gran cantidad de datos aleatorios basados en un solo archivo YAML y [...]

  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 [...]

  3. En Couchbase 5.0 y superiores, es necesario especificar un nombre de usuario y una contraseña para Couchbase.
    Puede hacerlo añadiendo los parámetros -username (o -u) y -password (o -p) al comando "fakeit couchbase

Dejar una respuesta