Learning Apache Cassandra(Second Edition)
上QQ阅读APP看书,第一时间看更新

Partial inserts

You are not, of course, required to provide values for all columns—other than primary key columns—when inserting a row. If, for instance, we decide to allow users to register without providing an email, we may issue this perfectly valid query:

    INSERT INTO "users"
("username", "encrypted_password")
VALUES (
'bob',
0x10920941a69549d33aaee6116ed1f47e19b8e713
);

In the preceding query, we only insert values for the username and encrypted_password fields; the row will have no value in the email field.

Do empty columns take up space?
Only columns with values take up storage space in Cassandra. This is in contrast to relational databases, in which every row has space allocated for every column, whether or not that column has a value. So, there's little downside to defining columns in Cassandra that you expect to rarely populate; they'll only take up space where they have values. For a full reference on the INSERT statement in CQL, consult the DataStax CQL documentation at http://www.datastax.com/documentation/cql/3.1/cql/cql_reference/insert_r.html.

We haven't explored all of the possibilities for INSERT statements yet, but we'll cover many of them in future chapters.