Лимит столбцов Кассандры

При использовании Cassandra в cqlsh я набираю следующее:

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.

В основном я хочу узнать, сколько столбцов уже хранится в rowkey ds10128832.

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


person chrisTina    schedule 12.11.2014    source источник


Ответы (2)


Терминология Cassandra делает различие между разделами и строками. Результат запроса показывает, что в ключе секции ds10128832 содержится 10 000 строк.

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

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

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

В своем вопросе вы упомянули о подсчете СТОЛБЦОВ, а я ответил о СТРОКАХ. Надеюсь, я не ошибаюсь в ваших намерениях. Внутри Cassandra хранит «строки» на основе ваших ключей сортировки в виде столбцов (фактически наборов столбцов), о чем, как я полагаю, вы говорите. Жаргон в данном случае важен. catpaws упомянул, что существует ограничение в 2 миллиарда столбцов, включая все подстолбцы, основанные на ключах сортировки и строках, которые будут способствовать ограничению. Каждая из ваших строк будет содержать количество фактических (внутренних) столбцов, равное количеству значений в вашей схеме, которые не являются первичными ключами.

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

CREATE TABLE info.customerinfo (текст ключа, текст учетной записи, текст электронной почты, текст имени экрана, PRIMARY KEY (ключ, учетная запись));

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

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

person mildewey    schedule 13.11.2014

Максимальное количество столбцов в разделе (строке) — 2 байта. 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.

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

person catpaws    schedule 12.11.2014