Size: a a a

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

2019 December 23

Y

Yuran in Чат конференции HighLoad++
Схема особенно важна, когда требования очень быстро меняются :)
источник

Y

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

Y

Yuran in Чат конференции HighLoad++
И, например, сложно быть уверенным в том, используется ли какое-то поле до сих пор или нет
источник

AK

Andrew Komiagin in Чат конференции HighLoad++
Версионирование и json решают
источник

Y

Yuran in Чат конференции HighLoad++
Как раз наличие схемы позволяет быстро её менять и при этом иметь контроль над ситуацией
источник

Y

Yuran in Чат конференции HighLoad++
Если у вас итак есть четкое версионирование, то зачем вам JSON :)?
источник

PD

Phil Delgyado in Чат конференции HighLoad++
Andrew Komiagin
Версионирование и json решают
А кто мешает все то же делать в PG? Если уж схема мешает.
источник

AE

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

Но на тот момент для этого нужна была свежая версия и ещё более сырой сторадж-движок Винил.
источник

PD

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

AK

Andrew Komiagin in Чат конференции HighLoad++
Все можно и на pg. Для 90% систем его вполне хватит с запасом
источник

Y

Yuran in Чат конференции HighLoad++
Ну да ладно. Это философский вопрос :). Лично мне было очень сложно пользоваться монгой именно из-за отсутствия проверок существования полей, типов и т.д. со стороны базы данных. Особенно весело ждать, пока исполнится аналитический запрос, занимающий 10 минут, чтобы потом осознать, что в имени поля была опечатка :)
источник

PD

Phil Delgyado in Чат конференции HighLoad++
Ну, просто с json PG работает ещё лучше монги.
источник

AK

Andrew Komiagin in Чат конференции HighLoad++
Phil Delgyado
Ну, смена схемы не бесплатная операция...
100%
источник

Y

Yuran in Чат конференции HighLoad++
Phil Delgyado
Ну, смена схемы не бесплатная операция...
В PG — не бесплатная, но есть другие СУБД, где она умеет выполняться на фоне :)
источник

PD

Phil Delgyado in Чат конференции HighLoad++
Yuran
В PG — не бесплатная, но есть другие СУБД, где она умеет выполняться на фоне :)
Нее, везде блокировка вылезает в какой-то момент.
источник

Y

Yuran in Чат конференции HighLoad++
К тому же в PostgreSQL смена схемы часто тоже очень дешёвая, например добавление поля, переименование (хотя переименование не пробовал) по сути только обновляют метаданные таблицы
источник

AK

Andrew Komiagin in Чат конференции HighLoad++
Тут ещё вопрос в том как поведёт себя приложение когда в бд в фоне миграция))
источник

PD

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

PD

Phil Delgyado in Чат конференции HighLoad++
Andrew Komiagin
Тут ещё вопрос в том как поведёт себя приложение когда в бд в фоне миграция))
Ну, это как раз просто.
источник

Y

Yuran in Чат конференции HighLoad++
Andrew Komiagin
Тут ещё вопрос в том как поведёт себя приложение когда в бд в фоне миграция))
Вообще, я согласен, что мигрировать данные с одной схемы на другую сложно. Но отсутствие схемы эту проблему не решает, а скорее откладывает.
источник