Создание новой таблицы и удаление старой таблицы тоже вариант ИМХО.Это просто, изменив команду «создать таблицу» («создать таблицу mytable_v2 ...» и «удалить таблицу mytable ...»), изменив имя смещения и изменив обработчики событий.
override def buildHandler( ): ReadSideProcessor.ReadSideHandler[MyEvent] = {
readSide.builder[MyEvent]("myOffset") // change it to "myOffset_v2"
...
}
Это приводит к тому, что все события будут воспроизведены, а таблица чтения для чтения будет восстановлена с нуля.Это не может быть вариантом, если текущая таблица действительно огромна, поскольку восстановление может длиться очень долго.
Что касается того, что говорит @erip, я вижу совершенно нормальным добавление нового столбца в вашу таблицу чтения.Предположим, что в этой таблице много записей со списком всех сущностей, и вы хотите получить список сущностей на основе некоторых критериев, поэтому вам нужно включить несколько столбцов в предложение where.Извлечь список всех сущностей и спросить у каждого из них, соответствует ли он критериям, совсем не вариант - это может быть очень неэффективно, так как требует больше времени, памяти и использования сети.