Если вы используете CQL, то вам нужно определить все столбцы перед вставкой данных. Теоретически вы можете использовать ALTER TABLE add ...
для добавления новых столбцов, но обычно это не рекомендуется делать программно, так как это может вызвать несогласие со схемой и другие проблемы.
Вы можете обойти эту проблему следующим образом:
- Сохраните JSON в виде текста в дополнение к первичному ключу и наиболее часто используемым столбцам, а затем проанализируйте данные при их чтении (это можно сделать даже автоматически в Java driver 3.x с помощью дополнительные кодеки ;
- Сохранение данных на картах (лучше всего использовать замороженную карту, если вы не будете обновлять отдельные значения) с ключом как
text
и значением, соответствующим фактическому типу значения - int
, text
, et c. Например:
create table test (
pk1 ..,
pk2 ..,
pkN ..,
imap frozen<map<text, int>,
tmap frozen<map<text, text>,
...
primary key(pk1, pk2, ...)
);
, а затем в вашем коде разделить столбцы по типам и вставить в соответствующую карту.