2014-11-12 6 views
2

При использовании Кассандры, в cqlsh, я печатаю это:Cassandra Column Limit

cqlsh:info> SELECT count(*) FROM info.customerinfo WHERE KEY = 'ds10128832'; 

и получил следующие результаты:

count 
------- 
10000 

Default LIMIT of 10000 was used. Specify your own LIMIT clause to get more results. 

В основном я хочу, чтобы найти, сколько столбцов уже хранится в rowkeyds10128832.

Получает ли вывод, что я получил 10000 столбцов, хранящихся в этом ключе, и не может добавить в него больше столбцов, поскольку LIMIT равен 10000? И больше столбцов не будет вставлено в этот ключ, если он достигнет 10000? Если да, то как я могу изменить эту ситуацию? Должен ли я установить LIMIT? Потому что у меня много столбцов для хранения, поэтому я не хочу иметь LIMIT.

ответ

1

Максимальное количество столбцов в разделе (строке) равно 2B. Значение LIMIT по умолчанию означает, что cqlsh ограничивает количество результатов, которые он показывает до 10000. Значение по умолчанию LIMIT на выходе объяснено на этой странице: http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/select_r.html?scroll=reference_ds_d35_v2q_xj__specifying-rows-returned-using-limit

В Cassandra 2.1.1 вы можете использовать поисковый запрос в cqlsh для получить вывод запросов в 100-линии куски с последующим более быстрым: http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/paging.html

CQL вещи, такие, как колонны в перегородке, которые имеют жесткий, верхний предел, перечислены на этой странице: http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/refLimits.html.

граф (*), используемый в выражении выбора возвращает количество строк, которые соответствовали запросу: http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/select_r.html?scroll=reference_ds_d35_v2q_xj__counting-returned-rows

3

Кассандра терминология делает различие между разделами и строками. Результат запроса указывает, что в файле раздела ds10128832 имеется 10000 строк.

На самом деле, как указывали котята, существует предел по умолчанию 10000, поэтому, возможно, у вас больше строк с этим ключом раздела. Для того, чтобы посчитать остальное, вам нужно указать более высокое дизъюнкцию LIMIT, например:

cqlsh: информация> SELECT COUNT (*) FROM info.customerinfo WHERE KEY = LIMIT 'ds10128832' ;

Возможно, вам понадобится увеличить лимит-номер вверх, если вы обнаружите, что во время запроса вы преследуете лимит.

В своем вопросе вы указали на подсчет COLUMNS, и я ответил о ROWS. Надеюсь, я не ошибаюсь в ваших намерениях. Внутри Cassandra хранит «строки» на основе ваших ключей сортировки в виде столбцов (фактически наборов столбцов), что я и предполагаю, что вы имеете в виду. Жаргон в этом случае важен. catpaws упомянули, что существует ограничение по столбцу 2B, это включает в себя все вспомогательные столбцы на основе сортировки ключей и строк, которые будут способствовать ограничению. Каждая из ваших строк будет содержать количество фактических (внутренних) столбцов, равное количеству значений в вашей схеме, которые не являются первичными ключами.

Например, если ваша таблица

CREATE TABLE информацию.customerinfo ( текст ключа, текст учетной записи, текст электронной почты, имя экрана, ПЕРВИЧНЫЙ КЛЮЧ (ключ, счет) );

Тогда подсчет, указанный выше, подсчитал бы количество строк «учетных записей» на ключ раздела «ds10128832». Каждая комбинация (ключ, учетная запись) была бы уникальной логической строкой, которая (внутренне) была бы двумя столбцами: одна для электронной почты, одна для имени экрана. Каждый ключ customerinfo мог гипотетически иметь 1B таких учетных записей, прежде чем использовать ограничение 2B в столбцах, наложенных Cassandra.

РЕДАКТИРОВАТЬ: Превышение лимита вызовет исключение.

Смежные вопросы