Скажем, у меня есть семья колонки в Кассандре, которая была создана с помощью cassandra-cli
вроде этого:Преобразовать динамический столбец Cassandra семьи к статическому одного
create column family users with key_validation_class = UTF8Type and comparator = UTF8Type;
С точки зрения thrift to CQL3 migration guide from Datastax этого является динамический столбец семьи.
При осмотре CQL3 клиента с помощью DESCRIBE TABLE users
это выглядит следующим образом:
CREATE TABLE users (
key text,
column1 text,
value blob,
PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (column1 ASC);
Это ожидаемое поведение. Я хочу добавить метаданные столбцов, чтобы семейство столбцов рассматривалось как static.
Так что я попытался это с помощью cassandra-cli
:
update column family users
with column_metadata = [{column_name: email, validation_class: UTF8Type}];
Однако конечный результат в CQL3 не то, что я хотел:
CREATE TABLE users (
key text,
column1 text,
value blob,
email text,
PRIMARY KEY (key, column1)
) WITH COMPACT STORAGE
AND CLUSTERING ORDER BY (column1 ASC);
Что я ожидал такой же результат, как при создании столбца семья с метаданными с начала:
create column family users2
with key_validation_class = UTF8Type
and comparator = UTF8Type
and column_metadata = [{column_name: email, validation_class: UTF8Type}];
В этом случае представление CQL3 это то, что я хочу:
CREATE TABLE users2 (
key text PRIMARY KEY,
email text
) WITH COMPACT STORAGE;
Есть ли какой-нибудь способ, как я могу добавить метаданные столбца в семье колонке, которая была создана без каких-либо - так, что он будет смотреть CQL3 точно так же, как если бы метаданные были при создании семейства столбцов? Разумеется, без повторного создания семейства столбцов.
Я не использую * статические столбцы *, но семейства столбцов, которые имеют одни и те же столбцы в каждой строке. Термин * статические семейства столбцов * был определен в справочнике [бережливость к CQL3] (http://www.datastax.com/dev/blog/thrift-to-cql3). И я перехожу из Thrift в CQL - я просто хочу иметь более яркие имена столбцов в запросах CQL, чем 'column1' и' value'. –
См. Полный ответ ниже – doanduyhai