Cassandra'da, her satır (bir anahtarla adreslenir) bir veya daha fazla "sütun" içerir. Sütunların kendileri anahtar / değer çiftleridir. Sütun adlarının önceden tanımlanması gerekmez, yani yapı sabit değildir. Bir satırdaki sütunlar, anahtarlarına (adlarına) göre sıralı olarak saklanır.
Bazı durumlarda, bir satırda çok fazla sayıda sütununuz olabilir (örneğin, belirli türden sorguları etkinleştirmek için bir dizin görevi görmek için). Cassandra bu kadar büyük yapıları verimli bir şekilde idare edebilir ve belirli sütun aralıklarını alabilirsiniz.
Bir sütunun iç içe (alt) sütunlar içerdiği süper sütunlar olarak adlandırılan başka bir yapı düzeyi (çok yaygın olarak kullanılmamaktadır) vardır.
Genel yapıyı, 2 veya 3 seviyeli anahtarla iç içe geçmiş bir hashtable / sözlük olarak düşünebilirsiniz.
Normal sütun ailesi:
row
col col col ...
val val val ...
Süper sütun ailesi:
row
supercol supercol ...
(sub)col (sub)col ... (sub)col (sub)col ...
val val ... val val ...
Verilerinizi bölmek veya gruplamak için kullanılabilecek üst düzey yapılar (sütun aileleri ve anahtar alanları) da vardır.
Ayrıca şu Soruya bakın: Cassandra: Alt sütun nedir
Veya http://wiki.apache.org/cassandra/ArticlesAndPresentations adresindeki veri modelleme bağlantıları
Re: belge odaklı veritabanları ile karşılaştırma - ikincisi genellikle tüm belgeleri ekler (tipik olarak JSON), oysa Cassandra'da tek tek sütunları veya süper sütunları ele alabilir ve bunları ayrı ayrı güncelleyebilirsiniz, yani farklı bir ayrıntı düzeyinde çalışırlar. Her sütunun kendi ayrı zaman damgası / sürümü vardır (dağıtılmış küme genelinde güncellemeleri uzlaştırmak için kullanılır).
Cassandra sütun değerleri yalnızca bayttır, ancak ASCII, UTF8 metni, sayılar, tarihler vb. Olarak yazılabilir.
Elbette, Cassandra'yı JSON içeren sütunlar ekleyerek ilkel bir belge deposu olarak kullanabilirsiniz - ancak gerçek bir belge odaklı mağazanın tüm özelliklerini elde edemezsiniz.