paint-brush
Cassandra: Kullanıma Hazır Yüksek Derecede Ölçeklenebilir Veritabanıile@therealone
1,055 okumalar
1,055 okumalar

Cassandra: Kullanıma Hazır Yüksek Derecede Ölçeklenebilir Veritabanı

ile Denis Larionov9m2023/12/27
Read on Terminal Reader

Çok uzun; Okumak

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.
featured image - Cassandra: Kullanıma Hazır Yüksek Derecede Ölçeklenebilir Veritabanı
Denis Larionov HackerNoon profile picture

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.


Cassandra venn diyagramı


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 : Sütun, bir anahtar/değer çiftini temsil eder ve veri yapısının temel birimi olarak hizmet eder.
  • Row : Birincil anahtar tarafından başvurulan sütunlar için kapsayıcı görevi görür.
  • Keyspace : Bir veya daha fazla Cassandra düğümüne yayılan tablolar için bir kapsayıcı görevi görür.
  • Cluster : Cassandra içindeki anahtar alanların kapsayıcısı.
  • Düğüm : 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.

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.

Evet yaptım!


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:

Sütun ailesi satırı


Bir sütun ailesi, her satır anahtarı için farklı bir sütun kümesini depolayabilir:

Farklı sütun kümelerini depolama

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?

Birincil anahtar, bir tablonun her satırını benzersiz şekilde tanımlar. Cassandra'da birincil anahtarın iki bölümü vardır:

Cassandra'daki 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

PRIMARY KEY (city_id, event_id) . Bu birincil anahtar, iki sütunla temsil edilen iki bölümden oluşur:


1. city_id bölüm anahtarı görevi görür; bu, verilerin city_id alanına göre bölümleneceği ve bunun sonucunda aynı city_id sahip tüm satırların aynı düğümde depolanacağı anlamına gelir.

2. event_id kümeleme anahtarı görevi görür. Her düğümde veriler, event_id sütununa göre sıralanmış bir şekilde düzenlenir ve depolanır.

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.

Kümeleme anahtarları

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 Tutarlı Hashing'e dayalı veri bölümleme sağlar.


Cassandra'daki bölümleyici , verilerin Tutarlı Hash halkası boyunca nasıl dağıtılacağına karar vermekten sorumludur. Veriler bir Cassandra kümesine eklendiğinde, bölümleyici, bölüm anahtarına bir karma algoritması uygular. Bu karma algoritmasının sonucu, verinin düştüğü aralığı belirler ve verinin hangi düğümde saklanacağını belirler.

Cassandra'da bölümleyici


Koordinatör düğümü

Cassandra'da her düğüm, dedikodu protokolü 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.


İsteği alan düğüm koordinatör 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 Düğümü

Ç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


Ç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.

Basit çoğaltma stratejisi

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.

Ağ topolojisi stratejisi

Ç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. Nesnelerin İnterneti (IoT) Uygulamaları : 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.


2. Zaman Serisi Verileri : 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.


3. Web ve Mobil Uygulamalar : 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.


4. Gerçek Zamanlı Büyük Veri Analitiği : 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.


5. Dağıtılmış Veri Ambarları : 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.


6. Mesajlaşma Sistemleri : 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.


7. Kişiselleştirme ve İçerik Yönetim Sistemleri : İç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.


8. Coğrafi Olarak Dağıtılmış Uygulamalar : 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.

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 en uygun seçim olmayabileceği birkaç senaryo:


  1. Küçük Ölçekli Projeler : 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.


  2. ACID Özellikleri Gerektiren İşlem Sistemleri : 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.


  3. Ağır Sorgulara ve Toplamalara Katılın : 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.


  4. Güçlü Tutarlılık Gereksinimlerine Sahip Veriler : 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.


  5. Tek Bir Kümede Düşük Gecikmeli Okuma ve Yazma : 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.


  6. Blob Depolama : 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.


  7. Geçici Sorgulama Gerektiren Uygulamalar : 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.

    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.


  8. Hızlı Şema Gelişimi : 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.


  9. Karmaşık sorgular, birleştirmeler ve geçmiş veri analizi içeren Veri Ambarı Uygulamaları : 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.

Ö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!