поэтому после поиска и не нахождения похожих случаев я хочу открыть новый вопрос.
Итак, вот случай:
Мы работаем с большой базой данных с очень сложной структурой данных. Кроме того, мы работаем над несколькими системами, чтобы обеспечить стабильность (разработку, тестирование, качество и производительность), и всегда приходится бороться за перемещение данных между этими системами. Как я уже сказал, структура данных очень велика, и внутри базы данных также много логики. Клиенты могут добавлять новые части данных в качестве конфигурации, а также имеется статический доход от данных, которые используются для статистики и мониторинга. Итак, позвольте мне объяснить проблему на небольшом примере:
Давайте возьмем эту базу данных в качестве примера. У нас есть несколько семей, которые проводят соревнования друг с другом. И они создадут некоторую статистику о заработанных ими баллах.
- Фиолетовые таблицы являются фиксированными конфигурациями. Они создаются один раз и могут быть изменены только через оператора. Эти изменения будут сначала выполнены и протестированы в системе разработки.
- Желтые таблицы меняют конфигурации. Каждая семья может создавать или удалять несколько конкурсов и назначать своих детей.
- Красная таблица - это просто данные. Каждый раз, когда ребенок зарабатывает очки, добавляется новая строка с указанием суммы и текущего времени, а также отношения к ребенку и соревнованиям.
Эта таблица будет основой для более поздней статистики.
Эта база данных разработана на двух продуктивных системах: семействе и системе разработки, используемой программистами / операторами.
При разработке программисты будут добавлять тестовые данные, такие как конкурсы и баллы детских семей. А во время использования семьи будут создавать новые конкурсы и назначать новых детей и заполнять таблицу баллов.
- Необходимо скопировать новые / проверенные / исправленные семейства из разработки в продуктивную систему.
- Также необходимо копировать Contests, Contest-Kid-Assignments и Points из продуктивного в систему разработки, чтобы найти новые ошибки.
- Также должна быть возможность изменить структуру таблицы в системе разработки и передать это изменение в производительную систему. (Это не должно быть главной темой здесь, иногда это могут быть такие большие изменения, что просто не существует легкого пути, поэтому давайте оставим этот пункт простым, но помните об этом.)
Я хочу скопировать части таблиц в другую систему, но иметь возможность игнорировать некоторые таблицы (например, «Точки»), и я хочу убедиться, что дети не копируются без родительского семейства, поэтому в них нет объекта «без родителей». база данных.
Вопрос: Что было бы хорошим и безопасным способом сделать это?
Мне не нужно решение для определенного типа базы данных или некоторых сценариев. Я ищу инструменты, библиотеки или хорошую практику. (Но в качестве примечания мы используем mssql.)
В настоящее время мы создаем инструмент для решения этой проблемы (не очень хорошо: нестабильно, слишком сложно, медленно и возможно заново изобретать колесо).
Также многие разработчики, которых я знаю, просто копируют всю базу данных (делают резервную копию и запускают ее на другой сервер), но это также создает проблемы: пользователи копируются, и их guid меняются, поэтому они теряют разрешения и т. Д. Не думаю, что это хорошее решение. Кроме того, база данных не работает в течение достаточно долгого времени, и это никогда не гладкий процесс.
Иногда сделать это вручную - самый простой способ, но, учитывая размер нашей структуры данных, это не просто огромная работа, также существует большая вероятность ошибок.
Так что я надеюсь, что кто-то знает инструмент или что-то подобное, чтобы помочь мне.