Как изменить схему базы данных на производстве - PullRequest
0 голосов
/ 12 апреля 2020

Когда я запускаю проект с процессом agile, в котором у меня нет полной DER для моей базы данных, как я делаю изменения в таблицах, в которых уже есть данные в производстве. Например:

Иметь таблицы покупателей товаров и продаж, в начале таблицы продаж есть только столбцы id, costumerId, productId и количество. Но в будущем нам нужно изменить эту таблицу, например, добавить новый столбец employeeId и то количество, которое было целым для float. Могу ли я внести эти изменения в производственную базу данных или нужно создать промежуточную таблицу, чтобы не касаться реальных данных?

Я привожу простой пример, но думаю о чем-то большем, что проходит несколько спринтов, и никто не видит зависимости ... Как действовать в этой ситуации?

С уважением!

1 Ответ

2 голосов
/ 12 апреля 2020

Это распространенная проблема. Существует несколько подходов, и некоторые из них зависят от используемой СУБД.

Ключевые советы:

  1. Не вносите обратно несовместимые изменения в метаданные в базе данных. Это означает, что вы можете добавить поле в таблицу, но вы не можете удалить его и (это зависит) вы не можете переименовать его.
  2. Если вы измените тип поля, то, на самом деле, вы добавите новое поле и должны решить проблему миграции данных. Возможность такого решения и способ его реализации зависит от объема данных. На миллионах записей это не проблема. Особенно, если ваша система не имеет SLA 99999.
  3. Следствие из пункта 1. Если вы добавили что-то в метаданные, вам не следует откатывать эти изменения после отправки рабочей нагрузки.
  4. Вы должны знать и использовать возможности вашей базы данных. Oracle, например, имеет возможность переключения между версиями схем с разными структурами. Также вы можете сделать фасад над несколькими столами с помощью View. Он даже может поддерживать DML.
  5. Попробуйте составить план повышения версии вашей БД и приложения. В общем случае у вас есть БД и некоторые приложения, которые работают с этой БД. Последовательность обновления БД и APP в их отношениях сильно зависит от вашей системной арки и SLA. Это намного проще, если у вас могут быть простои, и это проблема, если нет. Вы можете обновить и откатить свое приложение независимо от вашей БД. В этом случае вы должны обеспечить обратную совместимость при обновлении версии вашей БД. Новые изменения БД "могут ждать" для нового приложения.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...