Size: a a a

Чат конференции HighLoad++

2019 December 23

PD

Phil Delgyado in Чат конференции HighLoad++
Можно хранить версию схемы рядом с записью и обновлять потихоньку. Я так на json под Pg и делал всегда
источник

AK

Andrew Komiagin in Чат конференции HighLoad++
Оч сложно делать миграцию когда у тебя ну оч много данных а downtime не более 4 часа в год с учётом релизов))
источник

PD

Phil Delgyado in Чат конференции HighLoad++
Т.е. схема есть и строгая, но на уровне apppserver.
источник

Y

Yuran in Чат конференции HighLoad++
Если те изменения в схему, которые вам нужны, нельзя свести к удалению ненужных колонок и добавлению новых, то это больно в любой СУБД и будет требовать миграции данных в любом случае
источник

PD

Phil Delgyado in Чат конференции HighLoad++
Andrew Komiagin
Оч сложно делать миграцию когда у тебя ну оч много данных а downtime не более 4 часа в год с учётом релизов))
А зачем делать миграции всех данных сразу? Потихоньку...
источник

PD

Phil Delgyado in Чат конференции HighLoad++
Yuran
Если те изменения в схему, которые вам нужны, нельзя свести к удалению ненужных колонок и добавлению новых, то это больно в любой СУБД и будет требовать миграции данных в любом случае
Удаление и добавление колонок тоже опасны.
источник

PD

Phil Delgyado in Чат конференции HighLoad++
Даже nullable
источник

AK

Andrew Komiagin in Чат конференции HighLoad++
Phil Delgyado
А зачем делать миграции всех данных сразу? Потихоньку...
К сожалению иногда есть требования все и сразу)
источник

PD

Phil Delgyado in Чат конференции HighLoad++
А я делал сложные миграции с изменением структуры данных - и ничего.
источник

PD

Phil Delgyado in Чат конференции HighLoad++
Andrew Komiagin
К сожалению иногда есть требования все и сразу)
А откуда они возьмутся, что за кейс?
источник

Y

Yuran in Чат конференции HighLoad++
Кстати для MySQL есть тулза от percona на триггерах, называется pt-online-schema-change. Оно позволяет делать неблокирующие альтеры без даунтайма (почти). Но она тоже имеет ограничения, конечно же.
источник

Y

Yuran in Чат конференции HighLoad++
Приложение в любом случае нужно адаптировать так, чтобы оно могло с обеими схемами работать в процессе миграции.
источник

AE

Alexey Er in Чат конференции HighLoad++
Phil Delgyado
Нее. Всегда при смене метаинформации есть эксклюзивная блокировка. Которая может привести к остановке всей работы с таблицей
Это может быть очень лёгкая блокировка, чисто чтобы другая транзакция не добавляла/меняла то же поле в таблице метаданных. В частности, добавление поля в Постгресе на чтение/запись из таблицы не влияет.
источник

PD

Phil Delgyado in Чат конференции HighLoad++
Там всегда есть блокировка, ее не обойти. И сценарий 'все мелкие задачи ждут мгновенной миграции, а она ждёт толстый запрос' я отлавливал ни раз.
источник

Y

Yuran in Чат конференции HighLoad++
С монгой просто придется поддерживать все ранее существовавшие схемы вдобавок к этому.
источник

Y

Yuran in Чат конференции HighLoad++
Или мигрировать данные каждый раз.
источник

PD

Phil Delgyado in Чат конференции HighLoad++
Ну, мне больше трёх последних версий было не нужно держать. Успевало отмигрироваться.
источник

AK

Andrew Komiagin in Чат конференции HighLoad++
Так и есть. Поддержка сразу кучи схем данных и постепенная миграция самых древних
источник

PD

Phil Delgyado in Чат конференции HighLoad++
При хорошей сериализации всерьез нужно поддерживать только сложные изменёния.
источник

AK

Andrew Komiagin in Чат конференции HighLoad++
Ну так и есть. У нас есть группы обратносовместимых между собой схем
источник