Дефис в названии столбца cassandra

Я создал таблицу, в которой в одном из столбцов есть дефект

create table word ( name text,"all-category" text,primary key(name));

Я мог бы сделать это успешно

desc schema; 
CREATE KEYSPACE demo WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '1'}  AND durable_writes = true;

CREATE TABLE demo.word (
name text PRIMARY KEY,
"all-category" text
) WITH bloom_filter_fp_chance = 0.01
AND caching = {'keys': 'ALL', 'rows_per_partition': 'NONE'}
AND comment = ''
AND compaction = {'class': 'org.apache.cassandra.db.compaction.SizeTieredCompactionStrategy', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 0
AND gc_grace_seconds = 864000
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
AND min_index_interval = 128
AND read_repair_chance = 0.0
AND speculative_retry = '99PERCENTILE';

но теперь, когда я пытаюсь запросить этот столбец следующим образом

SELECT * FROM word where "all-category" = 'FOOD';

Я получаю эту ошибку

InvalidRequest: code = 2200 [Invalid query] message = "Не найден поддерживаемый вторичный индекс для ограничений столбцов, не являющихся первичными ключами"

Как сделать запрос в этом случае?


person Vivek Aditya    schedule 21.12.2015    source источник


Ответы (1)


Чтобы запросить данные из семейства столбцов в cassandra, столбец, в котором условие, должен быть либо первичным ключом, либо вы должны создать индекс для этого столбца.

чтобы ваш запрос работал, вам нужно будет создать индекс в этом поле

create index idx_category on word ("all-category")

После создания указанного выше индекса ваш запрос будет работать. Хотя в кассандре следует избегать вторичных индексов.

person undefined_variable    schedule 21.12.2015
comment
что мне делать, если у меня более одного столбца, и мне нужно запросить любой столбец? - person Vivek Aditya; 21.12.2015
comment
соответственно создайте свою модель данных. В любой базе данных NoSQL моделирование играет очень важную роль. Например, если у вас есть составной первичный ключ для категории и имени, вторичный индекс не потребуется. - person undefined_variable; 21.12.2015
comment
Чем больше у вас вторичных индексов, тем медленнее будет производительность записи. - person undefined_variable; 21.12.2015
comment
Я думаю, что это не проблема, так как в моем случае скорость чтения будет намного выше, чем скорость записи, но это мне помогло. Спасибо !! - person Vivek Aditya; 21.12.2015