Cassandra dağıtılmış, merkezi olmayan, ölçeklenebilir ve yüksek düzeyde kullanılabilir, geniş sütunlu bir veritabanıdır. CAP teoremi açısından Cassandra, AP (kullanılabilirlik ve bölüm toleransı) anlamına gelir. Bu, Cassandra'nın tüm düğümlerin mevcut olmadığı durumlarda bile tüm istemcilerin veri bulabilmesini tercih ettiği ve kısmi ağ arızası meydana geldiğinde beklendiği gibi çalışacağı anlamına gelir. Ancak bu aynı zamanda kullanılabilirlik ve bölüm toleransı nedeniyle verilerin tutarlılığının tehlikeye girebileceği anlamına da gelir; kullanıcılar verileri görür ancak veriler bir süreliğine eski kalabilir. Cassandra, yüksek verim ve daha hızlı yazma işlemleri elde etmek için tasarlanmıştır. Ve Cassandra'nın yüksek oranda kullanılabilir olmasını sağlayan şey kesinlikle tutarlılıktan ödün verilmesidir. Varsayılan olarak Cassandra sonuçta tutarlı olacak şekilde tasarlanmıştır; bu da güçlü bir tutarlılık sağlayamayabileceği anlamına gelir. Bu, Cassandra'yı tutarlılığın kritik bir gereklilik olmadığı uygulamalar için uygun kılar. Ancak Cassandra'yı güçlü tutarlılık sağlayacak şekilde yapılandırmak mümkündür, ancak bu performansı etkileyebilir. Bir NoSQL veritabanı olan Cassandra, sorgulama sırasında tablo birleştirmelerini, yabancı anahtarları veya WHERE yan tümcesinde birincil anahtar dışında sütun ekleme özelliğini desteklemez. Cassandra'yı kullanmayı seçmeden önce bu sınırlamalar dikkate alınmalıdır. Cassandra Yapı taşları : Sütun, bir anahtar/değer çiftini temsil eder ve veri yapısının temel birimi olarak hizmet eder. Sütun : Birincil anahtar tarafından başvurulan sütunlar için kapsayıcı görevi görür. Row : Bir veya daha fazla Cassandra düğümüne yayılan tablolar için bir kapsayıcı görevi görür. Keyspace : Cassandra içindeki anahtar alanların kapsayıcısı. Cluster : Cassandra örneğini çalıştıran bir bilgisayar sistemini ifade eder. Bir düğüm fiziksel bir ana bilgisayar, buluttaki bir makine örneği veya hatta bir Docker konteyneri olabilir. Düğüm Cassandra verileri nasıl saklıyor? Cassandra, verileri bir sütun ailesi olarak saklar. Birincil anahtar tarafından başvurulan sütunlar için bir kap görevi görür. Bir sütun ailesinin bir satırı, anahtar ve değer içeren birkaç sütun içerir ve satır anahtarı, birincil anahtar görevi görür: Bir sütun ailesi, her satır anahtarı için farklı bir sütun kümesini depolayabilir: Cassandra, boş değere sahip sütunları depolamaz; bu, depolama alanından önemli ölçüde tasarruf etmenize yardımcı olur Cassandra'daki birincil anahtar nedir? bir tablonun her satırını benzersiz şekilde tanımlar. Cassandra'da birincil anahtarın iki bölümü vardır: Birincil anahtar, Cassandra'da bölüm anahtarı, verileri hangi düğümün depolayacağını belirlerken, kümeleme anahtarı, verilerin bir düğüm içinde nasıl depolanacağını belirler. Örneğin, bir tablo düşünün . Bu birincil anahtar, iki sütunla temsil edilen iki bölümden oluşur: PRIMARY KEY (city_id, event_id) 1. bölüm anahtarı görevi görür; bu, verilerin alanına göre bölümleneceği ve bunun sonucunda aynı sahip tüm satırların aynı düğümde depolanacağı anlamına gelir. city_id city_id city_id 2. kümeleme anahtarı görevi görür. Her düğümde veriler, sütununa göre sıralanmış bir şekilde düzenlenir ve depolanır. event_id event_id Kümeleme anahtarları, bir düğüm içindeki verilerin depolama düzenini belirler. Birden fazla kümeleme anahtarına sahip olmak mümkündür ve bölüm anahtarından sonra listelenen sütunlara kümeleme sütunları adı verilir. Kümeleme sütunları, verilerin bir düğümde düzenlenme sırasını tanımlar. Bölüm anahtarı = "Paris" olan her satır, event_id sütununun değerine göre sıralanarak aynı düğümde depolanacaktır. Kutunun dışında veri bölümleme Cassandra, okuma/yazma işlemlerindeki gecikmeyi azaltmak ve veritabanında depolanan veri miktarı arttığında sistemin verimini artırmak için dayalı veri bölümleme sağlar. Tutarlı Hashing'e Cassandra'daki , verilerin Tutarlı Hash halkası boyunca nasıl dağıtılacağına karar vermekten sorumludur. Veriler bir Cassandra kümesine eklendiğinde, bölümleyici, bir karma algoritması uygular. Bu karma algoritmasının sonucu, verinin düştüğü aralığı belirler ve verinin hangi düğümde saklanacağını belirler. bölümleyici bölüm anahtarına Koordinatör düğümü Cassandra'da her düğüm, aracılığıyla diğer düğümlerin belirteç atamalarının farkındadır ve herhangi bir düğümün, diğer herhangi bir düğümün aralığına yönelik istekleri işlemesine olanak tanır. Bu nedenle bir istemci, okuma veya yazma sorgularını başlatmak için herhangi bir düğüme bağlanabilir. dedikodu protokolü İsteği alan düğüm olarak bilinir ve kümedeki herhangi bir düğüm olabilir. Bir anahtar koordinatörün aralığına ait değilse istek o aralıktan sorumlu replikalara iletilir. koordinatör Çoğaltma Cassandra, yüksek kullanılabilirlik sağlamak için verileri birden fazla düğümde çoğaltır. Cassandra'daki her düğüm, belirli bir veri aralığının kopyası görevi görür. Cassandra, verilerin birden fazla kopyasını farklı replikalara yayarak, bir düğümün kullanılamaması durumunda diğer replikaların söz konusu veri aralığına yönelik sorguları işlemesine olanak tanır. Çoğaltma işlemini iki ayar etkileyecektir: Çoğaltma faktörü, aynı verinin kopyalarını kaç düğümün depolayacağını belirler. Çoğaltma faktörü 3 olan bir kümede her satır üç farklı düğümde depolanacaktır. Cassandra'daki her anahtar alanın farklı bir çoğaltma faktörü olabilir. Cassandra'da ilk kopya, bölüm anahtarının karma değerine göre aralığa sahip olan düğüme atanır. Geriye kalan kopyalar daha sonra saat yönünde ardışık düğümlere yerleştirilir. Cassandra, kopyalardan hangi düğümlerin sorumlu olacağını belirlemek için iki çoğaltma stratejisi kullanır: Basit çoğaltma stratejisi Bu stratejide, ilk kopya bölümleyici tarafından belirlenen bir düğüme yerleştirilir ve sonraki kopyalar sonraki düğümlere saat yönünde yerleştirilir. Bu çoğaltma stratejisi yalnızca tek bir veri merkezi kümesi için geçerlidir. Ağ topolojisi stratejisi Tamamen veri kaybına karşı dayanıklılığı sağlamak için, aynı veri merkezi içindeki ek kopyalar, farklı bir veri merkezindeki ilk düğüme ulaşana kadar halka boyunca saat yönünde hareket ettirilerek yerleştirilir. Bu düzenleme, güç, soğutma veya ağ sorunları nedeniyle genellikle aynı veri merkezinde meydana gelen eşzamanlı arızaların etkisinin azaltılmasına yardımcı olur. Çoklu veri merkezi yapılandırmaları söz konusu olduğunda ağ topolojisi stratejisini dikkate almalısınız. Bu yaklaşım, her bir veri merkezi için değişen çoğaltma faktörlerinin belirlenmesine olanak tanıyarak, her belirli konuma yerleştirilecek kopya sayısı üzerinde kontrol sağlar. Cassandra ne zaman kullanılır? Cassandra, büyük miktarda verinin işlenmesini gerektiren ve tutarlılıktan ziyade veri kullanılabilirliğine öncelik veren uygulamalarda uzmandır. : Aşağıdakiler için çok uygundur 1. : Cassandra, cihazlar ve sensörler tarafından oluşturulan büyük miktarda veriyi işleyebildiğinden IoT ortamları için ideal bir seçimdir. Dağıtılmış mimarisi, coğrafi olarak dağınık, büyük ölçekli verilerin yönetilmesini sağlar. Nesnelerin İnterneti (IoT) Uygulamaları 2. : Metrikler, izleme sistemleri ve telemetri verileri gibi zaman serisi verileriyle ilgilenen uygulamalar, Cassandra'nın verimli yazma işlemlerinden ve yatay ölçeklenebilirliğinden yararlanır. Bu yetenekler, geniş hacimli zaman damgalı verileri depolamak ve yönetmek için çok önemlidir. Zaman Serisi Verileri 3. : Cassandra, yüksek verim ve düşük gecikme süreli veri erişimi sunarak, onu önemli miktarda veri üreten geniş kullanıcı tabanlarına sahip web ve mobil platformlar için uygun hale getirir. Buna sosyal medya platformları, oyun uygulamaları ve e-ticaret siteleri dahildir. Web ve Mobil Uygulamalar 4. : Cassandra, büyük verilerin gerçek zamanlı işlenmesini destekler ve bu da onu büyük veri kümelerinden anında bilgi gerektiren uygulamalar için değerli bir seçim haline getirir. Örnekler arasında öneri motorları ve dolandırıcılık tespit sistemleri yer almaktadır. Gerçek Zamanlı Büyük Veri Analitiği 5. : Büyük, dağıtılmış veri kümelerine sahip kuruluşlar Cassandra'yı bir veri ambarı çözümü olarak kullanabilir. Verileri birden fazla veri merkezi arasında çoğaltma yeteneği, yüksek düzeyde kullanılabilirlik ve olağanüstü durum kurtarma sağlar. Dağıtılmış Veri Ambarları 6. : Cassandra'nın yüksek yazma ve okuma verimi, onu olay günlüğü, denetim izleri veya mesaj kuyrukları gibi yüksek veri hacimlerini yöneten mesajlaşma sistemleri için çok uygun hale getirir. Mesajlaşma Sistemleri 7. : İçerik yönetim sistemleri gibi geniş ölçekte kişiselleştirilmiş içerik sunumu gerektiren uygulamalar, özelleştirilmiş içeriğin çok sayıda kullanıcıya aynı anda sunulmasında Cassandra'nın hızından ve ölçeklenebilirliğinden yararlanır. Kişiselleştirme ve İçerik Yönetim Sistemleri 8. : Cassandra'nın birden fazla veri merkezini desteklemesi, onu coğrafi olarak dağıtılmış veriler gerektiren uygulamalar için mükemmel bir seçim haline getirir. Farklı bölgelerde düşük gecikmeli veri erişimi sağlar ve yüksek esneklik sağlar. Coğrafi Olarak Dağıtılmış Uygulamalar Cassandra ne zaman kullanılmamalıdır? Apache Cassandra güçlü ve ölçeklenebilir olmasına rağmen her uygulama veya kullanım durumu için uygun olmayabilir. İşlem ağırlıklı uygulamalar, karmaşık sorgulamalar ve güçlü tutarlılık veya hızlı şema değişiklikleri gerektiren senaryolar için daha az uygundur. Bu gibi durumlarda geleneksel ilişkisel veritabanı yönetim sistemleri (RDBMS) veya diğer NoSQL çözümleri daha uygun olabilir. Cassandra'nın birkaç senaryo: en uygun seçim olmayabileceği : Cassandra'nın karmaşıklığı ve kaynak gereksinimleri, küçük ölçekli projeler veya sınırlı veri kümelerine sahip uygulamalar için aşırı olabilir. Daha basit veritabanı çözümleri, daha uygun maliyetli ve yönetilebilir bir alternatif sunabilir. Küçük Ölçekli Projeler : Cassandra, ACID (Atomisite, Tutarlılık, Yalıtım, Dayanıklılık) özelliklerini tam olarak desteklemez. Uygulamanız genellikle bankacılık veya finansal sistemlerde bulunan karmaşık işlemleri gerektiriyorsa, geleneksel bir RDBMS daha uygun olabilir. ACID Özellikleri Gerektiren İşlem Sistemleri : Uygulamanız büyük ölçüde birleştirmelere, alt sorgulara veya karmaşık toplamalara dayanıyorsa Cassandra en uygun seçim olmayabilir. Hızlı yazma ve okuma için tasarlanmıştır ancak karmaşık sorgu işleme için tasarlanmamıştır. Ağır Sorgulara ve Toplamalara Katılın : Cassandra, her okuma ve yazma işlemi için güçlü tutarlılık gerektiren kullanım durumları için uygun olmayabilecek nihai tutarlılık sağlar. Güçlü Tutarlılık Gereksinimlerine Sahip Veriler : Cassandra çok düğümlü dağıtılmış ortamlarda iyi performans gösterse de, düşük gecikmeli okuma ve yazma gerektiren tek düğümlü veya küçük küme dağıtımları için en iyi seçim olmayabilir. Tek Bir Kümede Düşük Gecikmeli Okuma ve Yazma : Cassandra, resimler veya videolar gibi büyük ikili nesneleri (bloblar) depolamak için optimize edilmemiştir. Diğer depolama çözümleri, büyük lekelerin verimli bir şekilde işlenmesi için daha uygundur. Blob Depolama : Cassandra'nın sorgulama yetenekleri, tam donanımlı SQL veritabanlarına kıyasla sınırlıdır. Büyük ölçüde anlık sorgulama ve raporlamaya dayanan uygulamalar için pek uygun değildir. Geçici Sorgulama Gerektiren Uygulamalar Cassandra'da tabloların tasarımı, yalnızca veri varlıkları arasındaki ilişkilere odaklanmak yerine sorgu kalıplarını vurgulayarak verilere erişilme şekliyle yakından bağlantılıdır. Bu, şema tasarımının normalizasyon ilkelerine dayandığı RDBMS'deki yaklaşımdan farklıdır. : Uygulamanız veritabanı şemasında sık sık değişiklik yapılmasını gerektiriyorsa Cassandra'nın şema yönetimi, geleneksel RDBMS sistemlerine veya diğer NoSQL çözümlerine kıyasla daha az esnek olabilir. Hızlı Şema Gelişimi : Cassandra, yazma ağırlıklı iş yükleri ve gerçek zamanlı veri erişimi için çok uygun olsa da, karmaşık sorgular gerektiren veri ambarı senaryoları için en uygun seçim olmayabilir. birleştirmeler ve geçmiş veri analizi. Karmaşık sorgular, birleştirmeler ve geçmiş veri analizi içeren Veri Ambarı Uygulamaları Özet Bu makale, yüksek düzeyde ölçeklenebilir ve dağıtılmış geniş sütunlu bir veritabanı olan Cassandra'ya genel bir bakış sunmaktadır. Cassandra, kullanılabilirlik ve bölüm toleransına öncelik verecek şekilde tasarlanmıştır; bu da onu tutarlılığın kritik bir gereklilik olmadığı uygulamalar için uygun hale getirir. Yüksek verimi ve daha hızlı yazma işlemlerini destekler. Cassandra'nın yapı taşları sütunları, satırları, anahtar uzayları, kümeleri ve düğümleri içerir. Sütunlar anahtar/değer çiftlerini temsil eder, satırlar birincil anahtar tarafından başvurulan sütunlar için kapsayıcı görevi görür, anahtar alanları birden fazla düğüme yayılan tablolar için kapsayıcı görevi görür, kümeler anahtar alanlarını içerir ve düğümler Cassandra örneklerini çalıştıran bilgisayar sistemlerine başvurur. Cassandra, verileri birincil anahtar tarafından başvurulan sütunlar için kapsayıcılar olan sütun ailelerinde saklar. Veri bölümleme, tutarlı karma işlemi yoluyla elde edilir, bu da gecikmenin azaltılmasına ve verimin arttırılmasına olanak tanır. Bölümleyici, verileri Tutarlı Karma halkasına dağıtır ve bir koordinatör düğümü okuma ve yazma sorgularını yönetir. Cassandra yüksek kullanılabilirlik için çoğaltma sağlar. Verilerin kopyaları birden fazla düğümde depolanır ve bir düğümün kullanılamaz hale gelmesi durumunda sorguların kopyalar tarafından işlenebilmesi sağlanır. Çoğaltma faktörleri ve stratejileri, kopyaların sayısını ve bunlardan sorumlu düğümleri belirler. Cassandra ölçeklenebilirlik ve yüksek kullanılabilirlik gibi avantajlar sunsa da sınırlamaları da vardır. Sorgulama sırasında tablo birleştirmelerini, yabancı anahtarları veya WHERE yan tümcesinde birincil anahtar dışında sütun ekleme özelliğini desteklemez. Genel olarak Cassandra, yüksek düzeyde ölçeklenebilir uygulamalara, özellikle de güçlü tutarlılıktan ziyade kullanılabilirliğe ve bölüm toleransına öncelik veren uygulamalara yönelik güçlü bir veritabanı çözümüdür. Cassandra'nın bir sonraki makalemde ele alacağım birçok ilginç yönü var. Kaçırmamak için ! bana abone olun Şerefe!