Плавающее значение по умолчанию

Столбец в таблице имеет тип float, который не заполняется при вставке строки, т. е. заполняется позже. Есть ли способ выбрать эти строки?

Интерфейс командной строки cql выводит значение null.

Это был запрос, который я пробовал.

select * from <table> where <column> is null;

А затем последовало это CQL: Unable to Null Check in Where Clause

то есть в кассандре нет нулевых вещей.

Есть ли обходной путь для этого?


person Mudit Tuli    schedule 17.02.2014    source источник


Ответы (2)


К сожалению, в настоящее время это не поддерживается. Cassandra интерпретирует null как отсутствие значения, а не как специальную константу. Я предполагаю, что добавление нулевой поддержки для запросов на выборку (а также индексирование, разбиение на разделы и т. д.) будет серьезным изменением как с точки зрения кода, так и с точки зрения того, как данные сохраняются в таблицах, поэтому в настоящее время это не преследуется.

В качестве обходного пути я бы предложил использовать постоянное значение, которое вы интерпретируете как «нулевое» на стороне клиента (например: NaN, -Infinity или что-то еще за пределами вашего обычного диапазона значений). Вы должны убедиться, что вы явно инициализируете соответствующие строки с этим значением, потому что значения по умолчанию также в настоящее время не поддерживаются.

person Daniel S.    schedule 17.02.2014
comment
Да, многие вещи не поддерживаются, я планирую перейти на mongodb. - person Mudit Tuli; 18.02.2014
comment
Справедливо. Если вам конкретно не требуются возможности масштабирования и производительности Cassandra, MongoDB может оказаться более простым и эффективным решением. - person Daniel S.; 18.02.2014

Даниэль прав, что это еще не поддерживается, но по неправильной причине. :)

Null фактически поддерживается с версии 1.2.4, по ссылке в исходном выпуске. Однако такие неиндексированные отфильтрованные запросы по-прежнему не поддерживаются (https://issues.apache.org/jira/browse/CASSANDRA-6377), даже с ALLOW FILTERING, потому что они выходят за рамки миссии Cassandra по поддержке масштабируемых приложений. Этот тип запроса весьма полезен при прототипировании, но когда у вас есть миллиарды строк, десять из которых пустые, и вы используете это в своем кластере, у вас будут плохие времена.

(Теперь, если вам нужно сделать это в рамках масштабной аналитики, Cassandra предложит вам нашу интеграцию с Hadoop или DataStax Enterprise.)

Тем не менее, мы движемся к позиции, позволяющей пользователям делать то, что они хотят, даже если это означает выстрелить себе в ногу. Ожидается, что поддержка такого типа запросов появится в версии 3.0 позже в 2014 году.

person jbellis    schedule 18.02.2014