Как создать производственную базу данных для тестирования? - PullRequest
6 голосов
/ 07 октября 2010

Существует ли инструмент (в идеале для PosgreSQL), который может сделать небольшой, но последовательный образец большой базы данных?

Это то, что нам нужна тестовая база данных, но мы не хотим полностью копировать рабочую. Во-первых, поскольку он слишком большой, а во-вторых, характер тестирования подразумевает, что тестовая база данных будет повторяться несколько раз в процессе.

Очевидно, что вы не можете просто брать случайные строки из некоторых таблиц, потому что это нарушит чертовски внешние ключи, а что нет. Итак, мне интересно, есть ли инструмент, который может это сделать?

Ответы [ 6 ]

1 голос
/ 12 октября 2014

Да, я написал инструмент для этого: https://github.com/mla/pg_sample

Из README:

pg_sample - это утилита для экспорта небольшого образца набора данных из большего PostgreSQL.база данных.Параметры вывода и командной строки очень похожи на утилиту резервного копирования pg_dump (хотя поддерживается только простой текстовый формат).

Созданный образец базы данных включает все таблицы из оригинала, поддерживает ссылочную целостность и поддерживает циклические зависимости.

1 голос
/ 08 октября 2010

Как насчет генерации некоторых фиктивных данных с помощью такого инструмента, как обработчик данных , столько раз, сколько вы хотите, и сохранения их для повторного использования.

1 голос
/ 07 октября 2010

Я однажды создал такой инструмент для системы IDMS.

Я также пытался заставить его работать для систем SQL, когда руководители компании, в которую мы были объединены, сказали мне, что я не могу больше тратить время на такие бесполезные и ненужные части программного обеспечения.

До сегодняшнего дня я до сих пор не видел и не слышал ни о какой коммерчески доступной вещи, которая бы соответствовала тому, чего я достиг тогда.

0 голосов
/ 23 ноября 2012

Вы можете создавать собственные сценарии для создания значимой копии производственных данных или использовать коммерческие продукты, такие как Подмножество данных Informatica или IBM optim

0 голосов
/ 07 октября 2010

В те времена, когда у меня были Oracle, у нас была бы тестовая база данных с очень небольшим автоматически сгенерированным набором данных. В то время это было около 5-го размера производственной базы данных. Затем мы скопировали бы статистику из производственной базы данных и поместили бы ее в нашу тестовую базу данных, чтобы заставить ее думать, что в таблицах содержатся миллиарды строк, тогда как на самом деле их всего 500 000. Это позволило нам получить в планах объяснения планов, которые мы получили бы в производстве. У него есть свои значения, но он не решает все ваши вопросы, и я не уверен, насколько легко или даже выполнимо связываться со статистикой PostgreSQL.

0 голосов
/ 07 октября 2010

Вы можете использовать pg_dump --schema-only, чтобы вывести только схему базы данных. Затем используйте pg_restore, чтобы загрузить дамп в новую базу данных. Оттуда у вас есть несколько вариантов:

  1. Создайте свои данные вручную; это позволит вам охватить крайние случаи, но займет некоторое время, если вы хотите протестировать большое количество данных.

  2. Сценарий нескольких запросов для импорта случайных разделов каждой таблицы в вашей базе данных. Как вы сказали, это нарушит ограничения внешнего ключа, но когда оно просто игнорирует ошибку. Следите за количеством успехов и продолжайте, пока у вас не будет столько элементов данных, сколько вы хотите. Это может не сработать в зависимости от вашей схемы, однако, если у вас очень строгие ограничения, потому что может потребоваться слишком много времени для попадания в последующие данные.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...