Cassandra - Veri Modeli

Cassandra'nın veri modeli, normalde RDBMS'de gördüğümüzden önemli ölçüde farklıdır. Bu bölüm, Cassandra'nın verilerini nasıl sakladığına dair bir genel bakış sağlar.

Küme

Cassandra veritabanı, birlikte çalışan birkaç makineye dağıtılmıştır. En dıştaki kapsayıcı, Küme olarak bilinir. Arıza işleme için, her düğüm bir eşleme içerir ve bir arıza durumunda çoğaltma sorumlu olur. Cassandra düğümleri halka biçiminde bir kümede düzenler ve bunlara veri atar.

Keyspace

Keyspace, Cassandra'daki veriler için en dıştaki kapsayıcıdır. Cassandra'daki bir Keyspace'in temel özellikleri şunlardır:

  • Replication factor - Aynı verilerin kopyalarını alacak kümedeki makinelerin sayısıdır.

  • Replica placement strategy- Halkaya kopyaları yerleştirme stratejisinden başka bir şey değil. Gibi stratejilerimiz varsimple strategy (raf farkındalığı stratejisi), old network topology strategy (raf farkındalık stratejisi) ve network topology strategy (veri merkezi paylaşımlı strateji).

  • Column families- Keyspace, bir veya daha fazla sütun ailesinin bir listesi için bir kapsayıcıdır. Bir sütun ailesi, sırayla, bir dizi satırdan oluşan bir kaptır. Her satır sıralı sütunları içerir. Sütun aileleri, verilerinizin yapısını temsil eder. Her anahtar alanında en az bir ve çoğu kez birçok sütun ailesi bulunur.

Bir Keyspace oluşturmanın sözdizimi aşağıdaki gibidir -

CREATE KEYSPACE Keyspace name
WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 3};

Aşağıdaki çizim, bir Keyspace'in şematik görünümünü göstermektedir.

Sütun Ailesi

Bir sütun ailesi, sıralı bir satır koleksiyonu için bir kaptır. Her sıra sırayla sütunların sıralı bir koleksiyonudur. Aşağıdaki tablo, bir sütun ailesini ilişkisel veritabanları tablosundan ayıran noktaları listeler.

İlişkisel Tablo Cassandra sütun Ailesi
İlişkisel modeldeki bir şema düzeltilmiştir. Bir tablo için belirli sütunları tanımladıktan sonra, veri eklerken, her satırdaki tüm sütunlar en azından bir boş değerle doldurulmalıdır. Cassandra'da sütun aileleri tanımlanmış olsa da, sütunlar tanımlanmamıştır. Herhangi bir sütun ailesine istediğiniz zaman istediğiniz sütunu özgürce ekleyebilirsiniz.
İlişkisel tablolar yalnızca sütunları tanımlar ve kullanıcı tabloyu değerlerle doldurur. Cassandra'da bir tablo sütunlar içerir veya bir süper sütun ailesi olarak tanımlanabilir.

Cassandra sütun ailesi aşağıdaki özniteliklere sahiptir -

  • keys_cached - SSTable başına önbelleğe alınacak konumların sayısını temsil eder.

  • rows_cached - Tüm içeriği hafızada önbelleğe alınacak satır sayısını temsil eder.

  • preload_row_cache - Satır önbelleğini önceden doldurmak isteyip istemediğinizi belirtir.

Note − Bir sütun ailesinin şemasının sabit olmadığı ilişkisel tablolardan farklı olarak, Cassandra tek tek satırları tüm sütunlara sahip olmaya zorlamaz.

Aşağıdaki şekil, Cassandra sütun ailesinin bir örneğini göstermektedir.

Sütun

Bir sütun, Cassandra'nın üç değeri olan temel veri yapısıdır, yani anahtar veya sütun adı, değer ve zaman damgası. Aşağıda bir sütunun yapısı verilmiştir.

Süper Sütun

Süper sütun özel bir sütundur, bu nedenle aynı zamanda bir anahtar / değer çiftidir. Ancak bir süper sütun, alt sütunların bir haritasını saklar.

Genellikle sütun aileleri diskte ayrı dosyalarda saklanır. Bu nedenle, performansı optimize etmek için, sorgulama olasılığınızın yüksek olduğu sütunları aynı sütun ailesinde tutmak önemlidir ve burada bir süper sütun yardımcı olabilir. Aşağıda bir süper sütunun yapısı verilmiştir.

Cassandra ve RDBMS'nin Veri Modelleri

Aşağıdaki tablo Cassandra'nın veri modelini bir RDBMS modelinden ayıran noktaları listelemektedir.

RDBMS Cassandra
RDBMS, yapılandırılmış verilerle ilgilenir. Cassandra yapılandırılmamış verilerle ilgilenir.
Sabit bir şeması vardır. Cassandra'nın esnek bir şeması var.
RDBMS'de, tablo bir dizi dizisidir. (SATIR x SÜTUN) Cassandra'da bir tablo, "iç içe geçmiş anahtar / değer çiftlerinin" listesidir. (SATIR x SÜTUN tuşu x SÜTUN değeri)
Veritabanı, bir uygulamaya karşılık gelen verileri içeren en dıştaki kapsayıcıdır. Keyspace, bir uygulamaya karşılık gelen verileri içeren en dıştaki kapsayıcıdır.
Tablolar, bir veritabanının varlıklarıdır. Tablolar veya sütun aileleri, bir anahtar boşluğunun varlığıdır.
Satır, RDBMS'deki bireysel bir kayıttır. Row, Cassandra'da bir çoğaltma birimidir.
Sütun, bir ilişkinin niteliklerini temsil eder. Sütun, Cassandra'daki bir depolama birimidir.
RDBMS, yabancı anahtar kavramlarını destekler, birleştirmeler. İlişkiler koleksiyonlar kullanılarak temsil edilir.