Как построить локальную среду с большими базами данных - PullRequest
3 голосов
/ 07 октября 2011

У меня есть два хранилища (PostgreSQL, MongoDB), и, поскольку мне нужно локально разрабатывать приложение на моем компьютере (в идеале в автономном режиме), мне нужно скопировать данные с этих хранилищ на мой жесткий диск.

В любом случае, этоогромные базы данных с сотнями гигабайт данных.

Мне не нужны все данные, хранящиеся там, только образец их, чтобы иметь возможность локально запускать мое приложение на этих данных.В обоих хранилищах есть несколько мощных инструментов для экспорта данных (pg_dump, mongodump, mongoexport и т. Д.).

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

Ответы [ 2 ]

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

Я не знаю о тестировании для MongoDB, но вот что я делаю для PostgreSQL.

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

Для тестирования кода, вызывающего вызовы в базу данных, слой базы данных всегда моделируется, поэтому никогда не будет каких-либо вызовов , которые действительно идут в базу данных.

То, что вы описываете, подсказывает мне, что вы пытаетесь смешать модульное тестирование с интеграционным тестированием, и я настоятельно рекомендую вам не делать этого. Интеграционное тестирование - это то, что происходит, когда вы уже доказали базовую функциональность и хотите доказать интеграцию между компонентами и, возможно, также и производительность. Для ИТ вам действительно нужен репрезентативный набор данных на репрезентативном оборудовании. Обычно это означает выделенную машину и использование Hudson для CI.

Направление, в котором вы, кажется, движетесь, будет трудным, потому что, как вы уже заметили, трудно обрабатывать этот объем данных и сложно создавать репрезентативные наборы данных (большинство систем CI фактически используют производственные данные, которые был "очищен" от конфиденциальной информации)

Именно поэтому большинство мест, где я работал, не пошли по этому пути.

0 голосов
/ 08 октября 2011

Просто скопируйте все это. Несколько сотен гигабайт - это не очень много по сегодняшним меркам - вы можете купить диск на 2000 Гб за 80 долларов.

Если вы тестируете свой код на небольших выборочных данных, то как узнать, достаточно ли эффективен ваш код для полной базы данных?

Просто не забудьте зашифровать его надежным паролем, если он выходит из здания вашей компании.

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