sql >> Base de Datos >  >> NoSQL >> MongoDB

Creación de datos de prueba para MongoDB

Introducción:este ejemplo demuestra un método más antiguo de usar IRI RowGen para generar y completar prototipos de colecciones grandes o complejos para probar la capacidad del sistema usando archivos planos. Como leerá, RowGen crearía los datos de prueba necesarios y crearía un archivo CSV que se cargaría en MongoDB utilizando la Utilidad de importación de Mongo.

Actualización de 2019:IRI ahora también ofrece JSON y compatibilidad con controladores directos para mover datos entre colecciones de MongoDB y productos de software IRI compatibles con SortCL, como RowGen o FieldShield. Esto significa que puede usar RowGen para generar archivos JSON de prueba para importar a MongoDB (no muy diferente del método que se muestra a continuación en este artículo) o usar FieldShield para enmascarar datos en tablas de Mongo en objetivos de prueba.

Tenga en cuenta que tanto FieldShield como RowGen están incluidos en la plataforma de gestión de datos IRI Voracity, que ofrece cuatro formas de crear datos de prueba.

Aunque MongoDB es una excelente base de datos NoSQL orientada a documentos y multiplataforma, no tiene una forma conveniente de generar y completar prototipos de colecciones grandes o complejos que se puedan usar para probar consultas o planificar la capacidad. Este artículo explica cómo crear datos de prueba que MongoDB puede usar a través de IRI RowGen, especificando los parámetros para un archivo CSV sintético, pero realista, que MongoDB puede importar para pruebas funcionales y de rendimiento.

Primero debe considerar la estructura y el contenido de los datos de prueba para las necesidades de su colección (tabla MongoDB). Consulte este artículo para conocer las consideraciones típicas de planificación.

En el ejemplo, sabemos que nuestra colección estará compuesta por clientes que tienen nombres de usuario. , Nombres y Apellidos , Direcciones de correo electrónico y Números de tarjetas de crédito .

Para crear nuestros datos de prueba, primero debemos generar algunos archivos establecidos. Un archivo de conjunto es una lista de uno o más valores delimitados por tabuladores que ya pueden existir, o que deben generarse manual o automáticamente a partir de las columnas de la base de datos a través del asistente 'Generar nuevo archivo de conjunto' en IRI RowGen.

Generación de nombres

1) Cree un script de trabajo de valor de datos compuestos (nombre y apellido combinados) llamado "CreateNamesSet.rcl" que RowGen puede ejecutar para producir un archivo de conjunto; llame a la salida "User.set" porque estos nombres también se utilizarán como base para nuestros nombres de usuario.

2) Cree tres campos que se generarán en Names.set:apellido, tabulador y nombre. Asigne al primer campo el nombre "Apellido" y elija el método que seleccionará valores de un archivo de conjunto proporcionado por IRI llamado "names_last.set". Agregue el valor literal "\t" para agregar un separador de tabulación y, a continuación, repita el proceso utilizado para los valores de Apellido y Nombre usando names_first.set.

3) Ejecute CreateNamesSet.rcl con RowGen, ya sea en la línea de comando o desde la GUI de IRI Workbench, para producir el archivo User.set delimitado por tabuladores de nombres y apellidos, que se usará en tanto en la generación de nombres de usuario como en la compilación final del archivo de prueba que completa nuestra colección de prototipos.

Generación de nombres de usuario

Para los nombres de usuario, crearemos un archivo de conjunto que utilice el archivo Users.set generado anteriormente. Los nombres de usuario de este ejemplo combinarán el apellido, la primera inicial y un número generado aleatoriamente entre 100 y 999.

1) Cree un nuevo script de trabajo de RowGen con el asistente de datos compuestos, llámelo "Crear conjunto de nombres de usuario.rcl" y nombre el archivo de conjunto de salida "Nombres de usuario. conjunto".

2) Cree valores de nombre de usuario compuestos con tres componentes denominados Parte1, Parte2 y Parte3.

3) Para la Parte 1, elija el método que seleccionará valores de (buscará) el archivo User.set generado previamente y especifique 'TODO' para el tipo de selección para mantener la asociación entre usuarios, nombres de usuario y direcciones de correo electrónico. Establezca el tamaño en 5.

4) Para la Parte 2, repita el proceso utilizado para la Parte 1, excepto para el tipo de Selección, seleccione 'Fila' y configure el Índice de columna en 2.  Establezca el tamaño en 1. Esto garantiza que se usarán todos los apellidos en la generación, y que la primera letra del primer nombre en la misma fila se agregue al nombre de usuario.

5) Para la Parte 3, especifique la generación de un valor numérico entre 100 y 999 para sufijar un número entero aleatorio con cada nombre de usuario.

Al ejecutar CreateUsernamesSet.rcl, vemos que cada nombre de usuario contiene las primeras cinco letras de su apellido, luego su primera inicial y luego un número aleatorio de 3 dígitos:

Generación de correos electrónicos

A continuación, crearemos un archivo de conjunto de correos electrónicos que agregue los valores de nombre de usuario con nombres de dominio seleccionados al azar. Debido a que algunos servicios de correo electrónico son más populares que otros, también crearemos un sistema de ponderación para reflejar una mayor frecuencia de dominios de Yahoo y Gmail.

1) Ejecute el asistente de trabajo 'Nuevos datos de prueba personalizados' de RowGen para crear un trabajo llamado "CreateEmailsSet" que produce un archivo de conjunto llamado "Emails.set".

2) Produce la parte del nombre de usuario del correo electrónico. En el cuadro de diálogo Definición de datos de prueba, haga clic en Nuevo campo y cambie el nombre del primer campo Nombres de usuario. Haga doble clic en él para iniciar el cuadro de diálogo Campo de generación y "Definir..." su archivo Establecer como Nombres de usuario.set. Establezca el tamaño en 9 y haga clic en Aceptar.

3) Produzca la parte del dominio del correo electrónico (que incluye el símbolo @). En el cuadro de diálogo Campos de diseño, haga clic en Nuevo campo y cámbiele el nombre a "dirección" y haga doble clic en él. En el cuadro de diálogo Campo de generación, especifique un "", con una posición de 10 y un tamaño de 20. En la sección Generación de datos/Distribución de datos a continuación, haga clic en "Definir..." para nombrar una nueva distribución de datos de elementos "Correos electrónicos ponderados".

4) En el Asistente de nueva distribución, elija "Distribución ponderada de elementos" e ingrese estos elementos en los cuadros de texto de relación y literal respectivamente, luego agregue cada uno a la lista.

(32 | @gmail.com), (32 | @yahoo.com), (2 | @ibm.com), (4 | @msn.com), (2 | @ymail.com), (2 | @inmail.com), (2 | @cnet.net), (2 | @chase.org), (1 | @iri.com), (1 | @gdic.com), (1 | @aci.com), (2 | @oracle.net), (1 | @gmx.org), (4 | @aol.com), (2 | @inbox.com), (2 | @hushmail.com), (2 | @outlook.com), (2 | @zoho.com), (2 | @yandex.net), (2 | @mail.com)

Después de ingresar estos valores, haga clic en Siguiente en el asistente original para pasar al cuadro de diálogo Destinos de datos. Use "Agregar destino de datos..." para especificar el archivo de salida "Email.set". Esto también se usará en el momento de compilar la colección.

El correo electrónico para el que configuramos las ponderaciones más altas (gmail y yahoo) aparece con mayor frecuencia, y otros aparecen periódicamente.

Generación de números de tarjetas de crédito

Por último, crearemos números de tarjeta válidos computacionalmente en el formato XXXX-XXXX-XXXX-XXXX. Los primeros cuatro dígitos reflejan Números de identificación de emisión (IIN) reales de varias compañías de tarjetas de crédito, y el último dígito verifica la autenticidad de las tarjetas.

Para hacer esto, cree y ejecute un nuevo trabajo (vacío). Llámelo "CreateCCNSet.rcl" (o .scl) y rellénelo con el siguiente script para crear "CCN.set". El valor /INCOLLECT en los scripts de RowGen determina el número de filas generadas.

Se llama a la función de generación de CCN especialmente diseñada de RowGen, ccn_gen(“ANY, “-“) para completar este campo. Tenga en cuenta que existen funciones similares para los números de seguridad social de EE. UU. y Corea, y las identificaciones nacionales de Italia y los Países Bajos.

Creación del archivo de prueba final

Con todos los archivos creados, es hora de usarlos en el archivo CSV de prueba que crearemos y exportaremos a una colección de MongoDB.

1) Ejecute el asistente de trabajo 'Nuevos datos de prueba personalizados' de RowGen para crear un trabajo llamado "CreateMongoUserData.rcl" que generará el archivo Customers.csv, el archivo que luego exportaremos a MongoDB.

2) Haga clic en "Campos de diseño..." para acceder al cuadro de diálogo Campos de diseño. Haga clic en Nuevo campo y cambie el nombre del primer campo a Nombres de usuario. Haga doble clic en él para iniciar el cuadro de diálogo Campo de generación y "Definir..." su archivo Establecer como Nombres de usuario.set; luego seleccione TODO para su tipo de selección.

3) Haga clic en Nuevo campo y cambie el nombre del segundo campo a Apellidos. Haga doble clic en él para iniciar el cuadro de diálogo Campo de generación y "Definir..." su archivo de conjunto como Users.set; luego seleccione TODO para su tipo de selección.

4) Haga clic en Nuevo campo y cambie el nombre del tercer campo a FirstNames. Haga doble clic en él para iniciar el cuadro de diálogo Campo de generación y "Definir..." su archivo de conjunto como Users.set; luego seleccione FILAS para su tipo de selección y establezca el índice de columna en 2.

5) Haga clic en Nuevo campo y cambie el nombre del cuarto campo a Correo electrónico. Haga doble clic en él para iniciar el cuadro de diálogo Campo de generación y "Definir..." su archivo Establecer como Emails.set; luego seleccione TODO para su tipo de selección.

6) Haga clic en Nuevo campo y cambie el nombre del quinto campo a CreditCardNumbers. Haga doble clic en él para iniciar el cuadro de diálogo Campo de generación y "Definir..." su archivo de conjunto como CCN.set; luego seleccione TODO para su tipo de selección.

7) Después de ingresar estos valores, haga clic en Siguiente en el asistente original para pasar al cuadro de diálogo Destinos de datos. Use "Agregar destino de datos..." para especificar el archivo de salida Customers.csv; luego ejecute la secuencia de comandos en Workbench o en la línea de comando para generar ese archivo:

rowgen /spec=CreateMongoUserData.rcl

Tenga en cuenta que RowGen, además de producir este archivo CSV en tiempo de ejecución, también podría haber producido múltiples, otros archivos, bases de datos, informes formateados, canalizaciones con nombre, procedimientos e incluso pantallas BIRT en tiempo real , con campos de los datos de prueba generados, todo al mismo tiempo.

Importando a MongoDB

Para importar el archivo CSV a su base de datos Mongo, llame a la 'utilidad mongoimport' y ejecute el siguiente comando:

--db <Database Name> --collection <Collection Name> --type csv --fields <fieldname1,fieldname2,...> --file <File path to the CSV file to import>

Estos son los registros de la colección de prueba (que se muestran con MongoVUE), que MongoDB indexará automáticamente con los valores de ID generados para cada entrada:

MongoDB asigna un valor de ID único a cada entrada de la colección.

También puede cargar datos de prueba directamente en la base de datos de Mongo utilizando el controlador ODBC DataDirect de Progress Software para MongoDB. Antes de ejecutar el trabajo de RowGen en Workbench, tenía una colección vacía llamada CUSTOMERS_CNN en MYDB para recibir los datos.

Primero ejecuté el trabajo usando stdout, para obtener una vista previa de mis datos de prueba en la ventana de la consola:

Después de ejecutar el script en Workbench, ahora puedo ver mis datos usando el Explorador de fuentes de datos y el controlador JDBC de DataDirect.

Para obtener más información sobre las opciones de generación disponibles, consulte Destinos del archivo de prueba. sección en: http://www.iri.com/products/rowgen/technical-details.