DenisOgr
@DenisOgr
Developer

Чем плохо использовать Crossdatabase foreign key?

Чем плохо межбазовые внешние ключи? В проекте так сложилось, что есть несколько баз данных.
Киньте пруф линку, плиз? Все что гуглил - это как сделать или как не делать, а почему - не нашел. Нашел только "это очень плохо". Тоже слышу и от коллег, но почему - не понятно.
  • Вопрос задан
  • 151 просмотр
Пригласить эксперта
Ответы на вопрос 1
elevenelven
@elevenelven
Php Dev @ Amadeus
Без пруфов, просто информация для размышления.

Foreign Key Constraint при операциях над таблицей в которой есть Constraint , обязывает смотреть и поддерживать консистентность с записями, которые являются ключами. Это 'on Delete', 'on Update'. То есть операции вставки и обновления теряют в скорости. (хотя мы получаем профит в виде контроля целостности и непротиворечивости данных)

  • Когда Constraint смотрит на другую базу данных, время на взаимодействие растет сильнее.
  • Теряется область видимости согласованности данных на уровне ЯП - части системы могут изолированно работать только с одной БД и не иметь влияния на всю распределенную систему хранения данных. То есть мы имеем механизм контроля согласованности на уровне БД, но на уровне ЯП мы не имеем явных указаний на то, что изменения в нашей модели распространятся на другие БД. Не можем удалить какой-то entity, потому что на него наложен Constraint, а наш контекст не позволяет заглядывать в другую БД.
  • Нарушается доступность - отказ одной из БД приводит к падению всех Constraint на рабочих БД.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы