Database Reference
In-Depth Information
Summary
Collection columns are a powerful feature of CQL that allow us to store multiple values in
a single column. Most importantly, it's possible to discretely update single values in a col-
lection without reading the collection's current contents or fully providing the new contents
of the collection.
This capability is particularly useful when multiple processes might need to concurrently
modify a collection. By avoiding the need to read and then fully overwrite a collection's
contents, we avoid situations in which concurrent updates can lead to data loss and can sup-
port concurrent updates without resorting to optimistic locking.
Collections are best suited to datasets that are small and bounded. This is both because
there is a hard upper limit on the amount of data a collection can hold, and because, when a
collection is read, it is always read in full. For larger data sets, it is usually most appropriate
to create a separate table whose partition key reflects the full primary key of the parent row,
as we covered in Chapter 3 , Organizing Related Data .
Tuples and user-defined types are both data structures that store a fixed number of values in
a column. Values can be of different types, but they must be of the exact number and types
declared in the column definition. Tuples and user-defined types are particularly useful in
the way that they can be indexed, providing a workaround for the rule that a secondary in-
dex can only apply to a single column. In most situations, user-defined types are a better
choice than tuples because they offer the additional benefit of named fields and partial se-
lection.
In the next chapter, we will explore another special type of column that allows us to incre-
ment and decrement counter information without reading first. Like collection columns,
counter columns are useful primarily because we can perform discrete mutations on their
values without knowing what the value is. Counter columns are particularly useful for
time-series statistical aggregation; we'll explore data structures for this use case next.
Search WWH ::




Custom Search