Согласованность эволюции схемы данных в среде асинхронной репликации #8
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Проблема
В текущей реализации миграции схемы данных используется ленивая стратегия миграции документов (StrategyLazy) при обновлении версии СУБД.
Однако при работе в кластерной среде с асинхронной репликацией возникает ситуация, когда узлы кластера могут иметь разные версии схемы в переходный период обновления.
Симптомы. Документ, мигрированный на основном узле (Node A), реплицируется на вторичный узел (Node B) с более старой версией схемы. Движок MigrateDocument выполняет преобразование «на лету», но это преобразование недетерминировано и зависит от текущей версии схемы на вторичном узле. Отсутствует механизм каскадного обновления или версионирования для репликации, что может приводить к несогласованности данных.
Архитектурная проблема
Как обеспечить согласованные обновления схемы данных в распределённой системе с асинхронной репликацией при сохранении высокой доступности?
Предлагаемые направления исследований
Соответствующие файлы с исходным кодом
internal/migration/schema_migrator.gointernal/cluster/node.go(движок репликации)internal/cluster/raft_coordinator.go(координация кластера)