Dans Cassandra, chaque ligne (adressée par une clé) contient une ou plusieurs "colonnes". Les colonnes sont elles-mêmes des paires clé-valeur. Les noms de colonnes n'ont pas besoin d'être prédéfinis, c'est-à-dire que la structure n'est pas fixe. Les colonnes d'une ligne sont stockées dans l'ordre trié en fonction de leurs clés (noms).
Dans certains cas, vous pouvez avoir un très grand nombre de colonnes dans une ligne (par exemple pour agir comme un index pour activer des types particuliers de requête). Cassandra peut gérer efficacement ces grandes structures et vous pouvez récupérer des plages spécifiques de colonnes.
Il existe un autre niveau de structure (pas si couramment utilisé) appelé super-colonnes, où une colonne contient des (sous) colonnes imbriquées.
Vous pouvez considérer la structure globale comme une table de hachage / dictionnaire imbriquée, avec 2 ou 3 niveaux de clé.
Famille de colonnes normales:
row
col col col ...
val val val ...
Famille de super colonnes:
row
supercol supercol ...
(sub)col (sub)col ... (sub)col (sub)col ...
val val ... val val ...
Il existe également des structures de niveau supérieur - familles de colonnes et espaces de clés - qui peuvent être utilisées pour diviser ou regrouper vos données.
Voir aussi cette Question: Cassandra: Qu'est-ce qu'une sous-colonne
Ou les liens de modélisation de données de http://wiki.apache.org/cassandra/ArticlesAndPresentations
Re: comparaison avec les bases de données orientées document - ces dernières insèrent généralement des documents entiers (généralement JSON), alors que dans Cassandra, vous pouvez adresser des colonnes individuelles ou des supercolonnes et les mettre à jour individuellement, c'est-à-dire qu'elles fonctionnent à un niveau de granularité différent. Chaque colonne a son propre horodatage / version (utilisé pour réconcilier les mises à jour dans le cluster distribué).
Les valeurs de la colonne Cassandra ne sont que des octets, mais peuvent être saisies sous forme de texte ASCII, UTF8, de nombres, de dates, etc.
Bien sûr, vous pouvez utiliser Cassandra comme magasin de documents primitif en insérant des colonnes contenant JSON - mais vous n'obtiendrez pas toutes les fonctionnalités d'un véritable magasin orienté document.