2010-10-07 22 views
5

¿Existe una herramienta (idealmente para PosgreSQL) que pueda hacer una pequeña pero muestra consistente de una gran base de datos?¿Cómo crear una muestra de base de datos de producción para probar?

Esto es que necesitamos una base de datos de prueba, pero no queremos copiar completamente la de producción. Primero, porque es demasiado grande y, en segundo lugar, la naturaleza de las pruebas implica que la base de datos de pruebas se volverá a crear varias veces en el proceso.

Obviamente, no puede simplemente tomar filas aleatorias de algunas tablas, porque esto violará el límite de claves externas y lo que no. Entonces, me pregunto ¿hay alguna herramienta disponible que pueda hacer eso?

+0

Puede importar la base de datos a través de la línea de cmd. ¿Utiliza un archivo por lotes para importar el db antes de la fase de prueba? ¿Realmente ha exportado e importado el db para ver cuánto tiempo lleva realmente? Puede que no sea tan malo como piensas. El hecho de que ya tenga buenos datos, aprovecharé eso tanto como sea posible. –

+0

¿Cuál es el problema con la gran base de datos? En realidad, preferiría usar una gran base de datos para las pruebas porque también te dirá mientras pruebas dónde están los riesgos de desempeño. En cualquier caso, no conozco ninguna herramienta en este momento que pueda hacer esto. – mezzie

+0

@mezzie Está bien, cuando haces pruebas normales, es decir, cuando pruebas la aplicación. Pero primero, prueba el _update_process_, y cada vez que falla, tiene que volver a crear la base de datos, lo cual, francamente, sucede con más frecuencia, entonces me gustaría admitir :) –

Respuesta

1

¿Qué pasa con generating some mock data con una herramienta como databene benerator, tanto como desee, y almacenarlos para su reutilización.

+0

Parece muy prometedor. Creo que intentaré este enfoque, ¡gracias! –

+0

@maksymko De nada. Soy un usuario muy satisfecho de Benerator, estoy bastante seguro de que te gustará. –

0

Puede usar pg_dump --schema-only para volcar solo el esquema de la base de datos. Luego use pg_restore para cargar el volcado en una nueva base de datos. Desde allí tiene algunas opciones:

  1. Cree sus datos a mano; esto le permitirá cubrir casos límite, pero llevará un tiempo si desea probar muchos datos.

  2. Escriba algunas consultas para importar secciones aleatorias de cada tabla en su base de datos. Como dijiste, esto violará las restricciones de clave externa, pero cuando lo haga simplemente ignorará la falla. Lleve un registro de la cantidad de éxitos y continúe hasta que tenga tantos elementos de datos como desee. Sin embargo, es posible que esto no funcione dependiendo de su esquema, si tiene restricciones muy restrictivas, ya que puede llevar demasiado tiempo acceder a los datos subsiguientes.

1

Una vez construí una herramienta para el sistema IDMS.

Estaba en el proceso de hacer que funcione también para sistemas SQL cuando los gerentes de la empresa en la que nos contactamos me dijeron que no podía seguir perdiendo el tiempo con tales piezas de software fútiles e innecesarias.

Hasta el día de hoy, aún no he visto ni escuchado nada comercialmente disponible que coincida con lo que logré en aquel entonces.

0

De vuelta en mis días de Oracle tendríamos una base de datos de prueba con un muy pequeño conjunto de datos autogenerados. En ese momento era aproximadamente una quinta parte del tamaño de la base de datos de producción. Queremos copiar las estadísticas de la base de datos de producción y ponerlas en nuestra base de datos de prueba para que piense que tenía miles de millones de filas en tablas cuando en realidad solo tenía 500,000. Esto nos permitió obtener planes de explicación en la prueba que obtendríamos en producción. Tiene sus valores, pero no resuelve todas sus preguntas y no estoy seguro de qué tan fácil o incluso factible es meterse con las estadísticas de PostgreSQL.

1

Sí, escribí una herramienta para hacer esto: https://github.com/mla/pg_sample

Desde el README:

pg_sample es una utilidad para exportar un pequeño conjunto de datos de muestra desde una base de datos PostgreSQL más grande .Las opciones de salida y línea de comando se parecen mucho a la utilidad de copia de seguridad pg_dump (aunque solo se admite el formato de texto sin formato ).

La base de datos de muestra producida incluye todas las tablas del original, mantiene la integridad referencial y admite dependencias circulares.

Cuestiones relacionadas