Организация тестирования с большой базой данных
Есть команда web-разработчиков около 50 человек. Web приложение работает с БД. Каждый разворачивает тестовую MS SQL базу данных для своей разработки. Каждая БД очень большая (около 1 TB). В итоге имеем большие проблемы со свободным местом. Шринк особо не спасает. Сейчас уже очень дорого разделять БД на отдельные "модульные" БД. Хранение таблиц и индексов уже оптимизировали (например, с помощью Columnstore).
Есть такая идея: делать особый бэкап, в котором вырезать всю "мертвую" информацию (письма, логи, файлы), и потом уже восстанавливать тестовый стенд из него.
Помогите, пожалуйста, советом. Нормально ли такое решение? Какие есть практики организации работы в таких ситуациях? Может есть какое-нибудь подходящая методология, чтобы изучить?
Ответы (1 шт):
Смотрите, еслиу Вас проблема именно с МЕСТОМ, то можно попробовать вот что.
Я осознаю, что идея выглядит немного безумной, но задачу с местом она решит.
Делаем один центральный сервер.
На нём кладём некую "исходную" базу данных в файловую систему с блочной дедупликацией. (Мне нравится ZFS, но можно попробовать, например, BTRFS)
Создаём 50 её копий, запущенных на 50 SQL серверах. К каждому из них подключается разрботчик, и начинает эту базу менять.
База данных хранит все данные в "страницах". (по моему, в MS SQL размер страницы - 8 мб).
Из за того, что используется блочная дедупликация - то все страницы всех баз данных, в которых не происхоило изменений - будут храниться на диске только в одном экземпляре.
А "разница" - то есть, новые страниц или страницы с переписанными (относительно исходной БД) данными - это и будет тот "прирост места", котрый возникнет в процессе работы.
Я почти уверен, что в базе такого объема большая часть страниц использутся без модификации данных. Их только читают из базы.
Соответственно, все довольны: у каждого разработчика своя база, все базы в совокупности занимают место как одна + сумма изменённых в них данных.
А 50 отдельных SQL серверов - это всего лишь 50 докер-контейнеров, в общем то, не очень много для сервера.