Поддерживает ли YugaByte DB онлайн-изменения схемы, особенно возможность добавления новых столбцов в существующую таблицу?

Можете ли вы поделиться какой-либо информацией о влиянии операции типа «добавить столбец», когда рабочая нагрузка все еще выполняется/реальные сценарии развертывания? Мы хотели бы знать об этой возможности для API YSQL и YCQL YugabyteDB.


person David Bruner    schedule 07.11.2019    source источник


Ответы (1)


Да. Существует ALTER TABLE поддержка как YSQL, так и YCQL.

https://docs.yugabyte.com/latest/api/ycql/ddl_alter_table/#add-a-column-to-a-table https://docs.yugabyte.com/latest/api/ysql/commands/ddl_alter_table/

Пример: ALTER TABLE employees ADD title TEXT; добавит новый столбец title типа TEXT.

person dorian YB    schedule 07.11.2019
comment
С изменением онлайн-схемы в YugaByte могут возникнуть проблемы (хотя я надеюсь, что разработчики исправят эти проблемы!). Пример здесь показывает, как онлайн-проверка CREATE INDEX в YugaByte v2.0.0 приводит к противоречивым данным: cockreachlabs.com/blog/unpacking-competitive-benchmarks/ Так что будьте осторожны, возможно, обсудите с разработчиками YugaByte и/или запланируйте время обслуживания, чтобы применить изменения схемы (пока). - person David Baird; 06.04.2020
comment
@DavidBaird, мы активно работаем над поддержкой индексов обратной засыпки: github.com/yugabyte/yugabyte -db/issues/2301 . Мы также поддерживаем большинство команд ALTER TABLE в Postgresql и многое другое на пути github.com/yugabyte. /yugabyte-db/issues/1124 . Вы можете задать любой вопрос в нашем Slack, на форуме или здесь. - person dorian YB; 07.04.2020
comment
тест Джепсена, опубликованный в сентябре 2019 г., выявил ряд проблем согласованности с DDL. операции. Существует также открытая проблема, описывающая поддержку онлайн-миграции схем, в частности, операции DDL могут безопасно запускать как часть миграции схемы одновременно с операциями переднего плана. На сегодняшний день большинство из них не помечены как безопасные для онлайна ALTER, но добавление столбца помечено (это то, о чем спрашивал первоначальный автор запроса). - person Dave Pacheco; 21.05.2020
comment
@DavePacheco Safe for online ALTER означает, что операция выполняется асинхронно, таблица не будет заблокирована. Хотя они все еще работают. Пример: добавление столбца со значением по умолчанию будет заблокировано до тех пор, пока таблица не будет заполнена. Это было верно даже для Postgresql до последних версий. - person dorian YB; 28.05.2020