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

У нас есть 2 базы данных Oracle. Одним из них является наша производственная база данных клиентов. Другая - тестовая база данных. Тестовая база данных - это копия продукции без каких-либо данных... только пустые таблицы. Я пытаюсь придумать эффективный и действенный способ скопировать набор образцов данных из производственной базы данных в тест.

Мне нужно начать с примера списка PK из нашей таблицы Customer и написать процесс заполнения таблицы Customer тестовой базы данных этим примером. Затем мне нужно заполнить дочерние таблицы соответствующими данными, основанными на образце.

Раньше у нас был процесс Java, который использовал готовый оператор для выбора данных из Production... строил файл на основе результирующего набора... затем использовал оператор update, чтобы получить его в Test db. Это было ужасно неэффективно.

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

Кто-нибудь знает способ сделать это... или, по крайней мере, дать мне отправную точку?

4 ответа

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

С точки зрения разработчика, вы не сможете надежно протестировать производительность вашего приложения без репрезентативного набора данных. Этот набор данных должен иметь те же свойства, что и производственные данные (объем данных, физическое распределение...). Самый простой способ добиться этого - иметь те же данные в тесте, что и в производстве.

Если вы можете позволить себе простои, вы можете остановить производственную базу данных, скопируйте файл на тестовый сервер и смонтируйте обе базы данных. Если вы не можете позволить себе простои, возможно, было бы неплохо приобрести некоторые навыки работы с БД (и в конечном итоге узнать о "горячем" резервном копировании, а затем восстановить его до нового экземпляра).


Обновление: если физическое копирование вашей базы данных не представляется возможным, вы должны изучить массовое копирование данных с expdp а также impdp (или старый exp/imp). Вы можете скопировать все схемы или отфильтровать данные при экспорте. В этом случае вы бы выбрали соответствующий пункт WHERE вручную. Массовый экспорт и импорт будут на несколько порядков быстрее, чем копирование данных строка за строкой.

Тестовые базы данных, которые являются полными копиями производства, будут работать намного лучше, чем подмножество для устранения ошибок. Большинство людей подмножество, потому что у них нет времени и ресурсов для создания полных копий, но все, что изменилось с виртуальными данными, то есть управление данными копирования. В таких системах вы можете проглотить одну копию производства и сделать тонкие клонированные копии за считанные минуты практически без дополнительного хранилища. Эти системы также обычно сжимают данные, так что загружаемая копия имеет размер оригинала 1/3 и обладает преимуществом быстрого обновления за считанные минуты, что очень хорошо при деструктивном тестировании. Они также имеют тенденцию интегрироваться с маскированием, поскольку мы, вероятно, не хотим, чтобы конфиденциальные данные выходили из производственной среды в dev и тестирование. Есть несколько поставщиков в этой области. Для начала ознакомьтесь с Netapp SMO, Actifio, Oracle Snap Clone и Delphix. Большинство из них требуют специального оборудования, которое может быть препятствием. Delphix полностью программный и даже имеет бесплатную версию Delphix Express, которую вы можете скачать. Подобная технология используется Рубриком и Cohesity для образов виртуальных машин.

С наилучшими пожеланиями, Кайл Хейли

Я просто хочу указать на отраслевой сценарий и продукты.. не решение, а вход для справки, так как @aintnoprophet отметил, что

"Я не администратор баз данных, поэтому я мало что знаю в этой области. Я пытался найти в Google некоторую информацию о ссылках на базы данных, но не смог найти очень хороших примеров".

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

Есть много вариантов использования, особенно в корпоративных примерах -

http://www.compuware.com/resources/mainframe/Fileaid_clientserver.pdf

http://www.erphome.net/wdb/upload/forum1_f_8007_1227768589.pdf

это для огромных корпоративных данных.

есть инструмент tdm с открытым исходным кодом http://sourceforge.net/projects/opentdm/ но не в java (я не уверен, хорошо это или нет)

Если вы ищете продукты (только для справки), некоторые из них

Это выглядит так, как будто вы ищите тюремщика. Он экспортирует непротиворечивые, ссылочно-неповрежденные наборы строк из реляционных баз данных.

Другие вопросы по тегам