Как сделать срез данных с базы данных, которая находится в production?
Предположим, есть структура БД.
Сотни таблиц, ключей, десятки индексов и т.п. Важно, что структура БД в окружении разработки и в production одинакова (достигаем этого миграциями).
Данные:
В production базе 100 ГБ данных. Слишком много, чтобы сделать дамп и дать разработчику для разработки, но вести разработку необходимо на реальных данных (я знаю про библиотеки генерации фейковых данных, вопрос не в этом).
Как выполнить срез (или как это грамотно назвать) небольшого кусочка (допустим, в 50 мб) данных для разработки, при этом сохранить все внешние ключи и целостность данных?
Не совсем понял, вы мне предлагаете каждому разработчику каждый раз делать снапшот? Допустим, команда из 5 человек. Мне 5 инстансов RDS (+1 основной) поднять? Жирновато, мне кажется.
Делаете дамп из двух кусков: основная часть без здоровых таблиц + выборка данных из здоровых таблиц. Накатываете 1, затем 2.
Вообще, для таких целей отлично подходит партиционирование - при переносе просто не дампите всё подряд, а только тот набор, который вас устраивает по полноте/размеру.
blohinn, Дело не в куске. Я постоянно вижу совершенно дикие запросы, которые способны работать нормально только пока база помещается целиком в память или seq scan выполняется быстро.