Синхронизация базы данных: синхронизация нескольких баз данных с одной общей базой данных - PullRequest
0 голосов
/ 16 января 2019

Я создаю тестовое приложение, для которого требуется функционально стабильная база данных, заполненная данными, которые гарантированно работают в моем приложении. У меня есть одна стабильная среда, которую поддерживает моя команда (как качество данных, так и производительность), и несколько готовых баз данных, которые я хочу использовать для нового приложения. Мне все это удается через AWS.

Проблема: Базы данных тестирования / предварительной обработки могут быть не синхронизированы с общей функционально стабильной базой данных (давайте назовем эту функционально стабильную базу данных «stage db»). В идеале, для целей моего приложения, оно должно проверять известную, функционально стабильную базу данных без необходимости возвращать неверные данные каждый раз, когда база данных для тестирования / предварительной обработки загрязняется ошибочными тестами (поскольку у нас есть и поддерживается чистая база данных [stage-db], мы должны взять его набор данных).

Подход 1: Вручную создайте дамп соответствующих таблиц базы данных и восстановите только те таблицы в существующей базе данных. Это должно быть производительным, но может быть сложно. Я подозреваю, что здесь будет много неожиданных проблем. Я рассматриваю это скорее как классический подход, но я никогда не делал это сам, поэтому у меня есть сомнения. Это пример указанного подхода.

Подход 2 (мой предложенный подход на данный момент): Раскрутите новую базу данных из известного снимка чистой базы данных каждый раз, когда база данных загрязняется. Не очень производительный или экономически эффективный, но он всегда обеспечивает стабильную базу данных. Это создает ужасный сценарий постоянного раскрутки баз данных и создает задержку для полной настройки этой новой базы данных. Можно создать пул баз данных, чтобы не ждать, пока одна из них раскрутится (после того, как одна будет использована / загрязнена, просто уничтожьте ее, раскрутите другую и укажите общий DNS); однако это крайне неэффективно и пахнет неортодоксально.

Подход 3: Создайте приложение для синхронизации данных, чтобы обновлять известную базу данных тестирования, когда она загрязняется. Триггер может запустить код синхронизации по расписанию.

Мне бы очень хотелось услышать мысли и критику в отношении этих идей. Возможно, классический подход (подход 1) развился таким образом по причине! Я мог бы быть далеко от идеального ответа, поэтому я весь слух! Я буду обновлять этот пост, когда я буду встречаться с другими на эту тему.

...