Из CQL вы можете читать эти данные из системных таблиц.В Cassandra 3.x эта информация находится в таблице system_schema.columns
, которая имеет следующую схему:
CREATE TABLE system_schema.columns (
keyspace_name text,
table_name text,
column_name text,
clustering_order text,
column_name_bytes blob,
kind text,
position int,
type text,
PRIMARY KEY (keyspace_name, table_name, column_name)
) WITH CLUSTERING ORDER BY (table_name ASC, column_name ASC);
, поэтому вы можете использовать запрос, подобный этому, для извлечения данных:
select type from system_schema.columns where keyspace_name = 'your_ks'
and table_name = 'users' and column_name = 'name';
В Cassandra 2.x структура системных таблиц отличается, поэтому вам может потребоваться адаптировать ваш запрос.
Если вы обращаетесь к кластеру программно, то драйвер скрывает различия между версиями Cassandra, и выможет использовать что-то вроде класса метаданных из драйвера Java , чтобы получить информацию о структуре таблицы и типах столбцов.Но если вы делаете программные изменения схемы, вы должны быть осторожными и явно ждать соглашения схемы , как в в следующем примере .