Прелесть нового механизма хранения Cassandra заключается в возможности НЕ сохранять значения. Это означает то, чем оно должно было быть: значение null — это просто значение, которого не должно быть.
Это обеспечивает большую гибкость, поскольку нулевое значение, не вставленное явно (или неявно, см. ниже), не будет занимать место в хранилище, а также использовать вычислительную мощность и пропускную способность ввода-вывода.
Действительно, заполнить строку нулевыми значениями довольно просто:
INSERT INTO mytable (pk, c2, c3) VALUES (0x1234, null, null);
Таким образом, вы явно указываете C* хранить нулевое значение как в c2, так и в c3. Однако вы можете получить тот же макроскопический эффект с помощью:
INSERT INTO mytable (pk) VALUES (0x1234);
Обратите внимание, что я говорю макроскопический эффект, потому что, когда вы явно вставляете нулевое значение, C* будет вставлять надгробную плиту под капотом. В конечном итоге это вас укусит из-за того, как C * выполняет поиск, уплотнение и т. д., поэтому вам следует избегать, когда это возможно, вторая версия будет работать намного лучше.
Теперь есть и ловушка: вы также можете создавать надгробия неявно. Это произойдет при использовании функций TTL, встроенных в Cassandra.
В заключение, если вы заботитесь о себе, я бы посоветовал НЕ выполнять вставки нулевых значений. Сделайте проверку на уровне приложения, вы сэкономите время (и деньги) позже, например, во время чтения.
person
xmas79
schedule
21.11.2016