6 Ağustos 2015 Perşembe

Apache Cassandra nedir


Apache tarafından geliştirilen açık kaynaklı, yüksek ölçeklenebilirliğe sahip ve yüksek performanslı NoSQL veritabanı mimarisi yapısında olan dağıtık bir veritabanı sistemidir. İlk olarak Amazon’un Dynamo ve Google’ın Bigtable veri tabanları temel alınarak Facebook tarafından geliştirilmiştir. Facebook 2009 da Cassandra’yı açık kaynak olarak açıp Apache kuruluşuna devretmiştir. Kapasitesi oldukça yüksek olan Cassandra petabaytlarca veriyi tutabilir. Çoklu veri merkezlerinde ya da bulut ortamında bulunan yapısal veya yapısal olmayan verileri yönetmek için oldukça iyi bir sistemdir. Esnek, dinamik ve hızlı cevap süresine sahiptir. Yüzde seksenlere varan veri sıkıştırma (Google’ın Snappy algoritması ile) yeteneğine sahiptir. Güçlü memory cache yazılımlarına (memcache ...) olan ihtiyacı ortadan kaldırır. SQL kullanımına oldukça benzeyen ve öğrenilmesi kolay olan CQL dili ile sorgulama yapar. Platform ve dil desteği vardır. Cassandra’yı çalıştırmak için özel olarak tasarlanmış yazılım ve donanımlara ihtiyaç yoktur. Kullanım oranı yüksek olan Cassandra CERN, Comcast, eBay, GitHub, GoDaddy,Hulu, Instagram, Intuit, Netflix, Reddit ve daha 1500 den fazla kurum tarafından kullanılmaktadır. Cassandra’nın sağladığı kolaylıklar ve faydalar Elastik ölçeklenebilirlik (Elastic scalability) : İhtiyaç duyulduğu herhangi bir zamanda kapasiteyi kolayca artırmaya izin verir. Sürekli aktif (Always on architecture) : Geleneksel master/slave RDBMS ya da NoSQL çözümleri gibi esas bileşendeki bir hatadan (single point of failure ) dolayı sistemin çökmesi söz konusu değildir. Çünkü böyle bir mimarisi yoktur. Sürekli kullanılabilirlik esasına dayanır ve asla uygulamaların çökmesini göze almaz. Doğrusal ölçekli hızlı performans (Fast linear-scale performance) : Doğrusal ölçeklenebilirlik yapısı sayesinde cevap süresi saniyenin altındadır. Cevap süresini beklenen süre içinde tutmak için sonuçları iki nodetan, dört nodetan ya da bu şekilde mümkün olan nodelardan elde eder. Esnek veri depolama (Flexible data storage) : Tüm veri formatlarını (yapısal, yarı-yapısal, yapısal olmayan) kolayca barındırır. Günümüzdeki modern uygulamalar ile çalışır. Aynı zamanda dinamik olarak verinin ihtiyaç duyduğu yapısal değişiklikleri yaparak barındırır. Kolay veri dağıtımı (Easy data distribution) : Verinin ihtiyaç duyulduğu kadar çoklu veri merkezlerine, bulut ortamlarına ya da başka ortamlara dağıtılması ve kopyalanması için maksimum esneklik sağlar. Herhangi bir node üzerinde yapılan okuma ve yazma işlemindeki değişiklikler otomatik olarak cluster içindeki tüm nodelara yansıtılır. Operasyonel basitlik (Operational simplicity): Cluster içindeki tüm nodelar aynıdır. Karmaşık bir konfigurasyon yapısı yoktur. Yönetim işlemleri oldukça basitleştirilmiştir. Transaction desteği (Transaction support) : Cassandra transaction içinde “AID” (atomicity, isolated, durability) özelliklerini garanti eder. Tutarlılık ise ayarlanabilir. Cassandra Mimarisi Cassandra dağıtık veritabanı mimarisi üzerine kurulmuştur. Bir cluster ve bu clusterı oluştruan bir veya daha fazla nodelardan oluşur. Cluster birbirine bağlı sunuculardan oluşur. node ise bir veritabanı sunucusudur. Dolayısıyla veritabanı birden fazla sunucuda saklanır. Nodelarda saklanan verilerin kopyası başka nodelarda saklanabilmektedir. Tüm nodeların kopyasının olması zorunluluğu yoktur. Cassandra peer-to-peer dağıtık mimariye sahiptir. Bu da çok daha iyi, kurulumu ve bakımı kolay bir yapı oluşturur. Cassandra da tüm nodelar aynıdır. Bir master node konsepti yoktur. Tüm nodelar birbirleriyle iletişim halindedir ve iletişim için gossip protokolunu kullanmaktadır. Cassandra’nın yüksek ölçeklenebilir yapısı, petabaylarca veri saklanmasına ve saniyede binlerce kullanıcı operasyonlarının gerçekleştirilmesine olanak sağlar. İsteğe yönelik sürekli kullanılabilirlik (offer continuous availability) mantığında çalışır. Cassandra doğrusal ölçeklenebilirliğe sahiptir. Örneğin iki node ile saniyede 100.000 işlem gerçekleştirirken node artırılğında işlem kapasitesi de artmaktadır. Veri Dağıtma ve Kopyalama Cassandra veriyi otomotaik olarak cluster ya da “ring” içindeki nodelara dağıtır. Developerların ya da Cassandra adminlerinin cluster içinde veriyi dağıtmak için herhangi bir geliştirme yapmasına gerek yoktur. Veri transparan parçalar halinde nodelara ya rastgele seçilerek ya da sıralı bir şekilde gönderilir. Varsayılan olarak rasgele seçilir. Cassandra aynı zamanda bir Cassandra “ring” i içerisinde fazladan kopya tutmak için gömülü ve özelleştirileilir kopyalama sağlar. Bunun anlamı bir node down olduğunda bu nodeun verileri cluster içindeki diğer makinelerde durmaya devam eder. RDBMS ve NoSQL veritabanlarının içindeki karmaşık koplayalama düzenlerinin aksine Cassandra’da konfigurasyon son derece kolaydır. Developer ya da admin basitçe ne kadar veri kopyası istediğini belirtir ve Cassandra gerisini halleder. Cassandra da kopyalama seçenekleri aynı zamanda verinin otomatik olarak farklı fiziksel yerlerde, çoklu-data merkezlerinde ve bulut platformların saklanmasına izin verir. Çoklu-Veri Merkezi ve Bulut Desteği Cassandra çoklu-data merkezlerinde ve bulut platformlarından veri kopyalama işlemlerinde önde gelen ve başarısı kabul görmüş bir NoSQL veritabanıdır. Bir developer ya da admin çoklu-data merkezlerini ya da melez bulut sistemlerini içeren bir cluster oluşturabilir. Yeni bir veritabanı (keyspace) oluştururken ya da çağırırken kullanıcı basit bir şekilde tek komutla hangi veri merkezlerinden ya da bulut ortamından veriyi çekeceğini belirtir. bundan sonrasını Cassandra otomatik olarak ilerletir ve bakımını kendi halleder. Veri Okuma ve Yazma Cassandra veri okuma ve yazma işlemleri sırasında “location independent” mimarisini kullanır. Bunun anlamı cluster içindeki bir node okunurken ya da yazılırken herhangi bir yere yaz/oku dizaynı(read/write-anywhere design) aktif edilir. Cassandra’ya veri yazılırken, tüm verinin dayanıklılığını ve güvenliğini sağlamak için veri ilk olarak bir commit loga yazılır. Veri in-memory olarak memtable adı verilen yapıda saklanır. Memtable dolduğunda veri diske flush edilerek sstable (sorted strings table) yapısında saklanır. Eğer belirli bir veri kümesinden sorumlu olan bir veya daha fazla node down olursa, veri basitçe başka bir nodea geçici olarak yazılır. Bu sorumlu nodelar ilk kez tekrar geri geldiğinde otomatik olarak yönettikleri veriyi back up larının olduğu nodelardan alıp veriyi güncellerler. Böylece veri kaybı ortadan kalkmış olur. Veri okuma cluster içinde paralel olarak yapılır. Kullanıcı veriyi herhangi bir node tan ister. Kullanıcın sorgusu gerekli veriye sahip nodelardan veri alarak cevaplandırılır. Eğer istenen veriye sahip node down olursa Cassandra verinin kopyasına sahip olan diğer nodelardan veriyi çeker. Cassandra RDBMS (ilişkisel veri tabanları) lerde olduğu gibi işlemsel (transactinal) bir veritabanı değildir. Biraz daha farklı bir transaction yapısı vardır. RDBMS ler ACID (Atomicity, Consistency, Isolation, Durability) transaction sağlarken Cassandra AID (Atomicity, Isolation, Durability) transaction sağlar. Cassandra’da bütünlük tutarlılığına ait bir konsept ya da foreign key yoktur. Veri Tutarlılığı Cassandra veritabanı clusterı içinde ayarlanabilir veri tutarlılığı sunar. Bunun anlamı bir developer ya da admin veriyi nasıl istediğine(ne kadar güçlü ya da nihai olsun) karar verir. Örneğin tüm node lardan cevap alarak veriyi oluştur ya da bir veya bir kaç node tan cevap aldıktan sonra geri kalanları güncelle gibi bir kaç farklı seçenek kullanılabilir. tek ya da çoklu-veri merkezlerini de destekler. Ayrıca tutarlılık işlem bazlı olarak ayarlanabilir. Yani bir developer ya da admin her bir işlem (SELECT, INSERT, UPDATE ve DELETE) sırasında tutarlılık seçeneklerini ayarlayabilir. adresinden alınmıştır.

Hiç yorum yok:

Yorum Gönder