Trong Cassandra, mỗi hàng (được đánh địa chỉ bằng một khóa) chứa một hoặc nhiều "cột". Bản thân các cột là cặp khóa-giá trị. Tên cột không cần được xác định trước, tức là cấu trúc không cố định. Các cột trong một hàng được lưu trữ theo thứ tự được sắp xếp theo các khóa (tên) của chúng.
Trong một số trường hợp, bạn có thể có số lượng cột rất lớn trong một hàng (ví dụ: hoạt động như một chỉ mục để kích hoạt các loại truy vấn cụ thể). Cassandra có thể xử lý các cấu trúc lớn như vậy một cách hiệu quả và bạn có thể truy xuất các dải cột cụ thể.
Có một cấp cấu trúc khác (không được sử dụng phổ biến) được gọi là siêu cột, trong đó một cột chứa các cột (con) lồng nhau.
Bạn có thể coi cấu trúc tổng thể như một bảng băm / từ điển lồng nhau, với 2 hoặc 3 cấp độ khóa.
Họ cột bình thường:
row
col col col ...
val val val ...
Họ siêu cột:
row
supercol supercol ...
(sub)col (sub)col ... (sub)col (sub)col ...
val val ... val val ...
Ngoài ra còn có các cấu trúc cấp cao hơn - họ cột và không gian khóa - có thể được sử dụng để phân chia hoặc nhóm dữ liệu của bạn lại với nhau.
Xem thêm Câu hỏi này: Cassandra: Cột con là gì
Hoặc các liên kết mô hình hóa dữ liệu từ http://wiki.apache.org/cassandra/ArticlesAndPresentations
Re: so sánh với cơ sở dữ liệu hướng tài liệu - cơ sở dữ liệu sau này thường chèn toàn bộ tài liệu (thường là JSON), trong khi trong Cassandra, bạn có thể giải quyết các cột hoặc siêu cột riêng lẻ và cập nhật chúng một cách riêng lẻ, tức là chúng hoạt động ở một mức độ chi tiết khác. Mỗi cột có dấu thời gian / phiên bản riêng biệt (được sử dụng để điều chỉnh các bản cập nhật trên toàn bộ cụm phân tán).
Giá trị cột Cassandra chỉ là byte, nhưng có thể được nhập dưới dạng ASCII, văn bản UTF8, số, ngày, v.v.
Tất nhiên, bạn có thể sử dụng Cassandra như một kho lưu trữ tài liệu nguyên thủy bằng cách chèn các cột chứa JSON - nhưng bạn sẽ không nhận được tất cả các tính năng của một cửa hàng hướng tài liệu thực.