@c-darwin

Стоит ли делать на nosql highload с несколькими млрд строк, чтобы уйти от add column?

Юзеры могут создавать свои таблицы, хранить и получать данные через наш API.
Данных может быть несколько млрд. Будет использоваться горизонтальный шардеринг. шарда = 1 мастер и 2 слейва.
Если у юзера уже несколько млрд. строк и он решит добавить колонку, то он должен об этом объявить за неделю. Т.к. на всех шардах нужно будет сделать следующее:
1. Остановить репликацию на слейв 1 и 2, сделать add column на слейв 1 и 2
2. Включить репликацию на слейв 1 и 2.
3. Заменить мастер на слейв 1.
4. Со слейв 2 залить БД на старый мастер.
5. В итоге у всех новая колонка и свежие данные, при этом мастер не пропадал из сети.
Собственно вопрос. Если всё перенести на leveldb, то можно будет избавиться от add column, но не добавит ли это новых более серьёзных проблем?
  • Вопрос задан
  • 598 просмотров
Решения вопроса 1
Melkij
@Melkij
PostgreSQL DBA
А зачем останавливать репликацию и прочие странные вещи для добавления колонки в postgresql?
Добавляете default null колонку. Транзакционно, мгновенно. Если колонка не должна быть null - то после добавления колонки меняете ей default, затем небольшими пачками обновляете имеющиеся строки, затем drop null.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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